| USART $ HEX | 
|  | 
| 
 
 
 
 | ilyafm98 | Дата: Ср, 08.12.2010, 18:44  |                                                                                                                Сообщение # 1 |  
 | ![ilyafm98]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Новенький
 
  
 Сообщений: 
 
 
 18
 
 
 Замечания: ± На сайте с 08.12.2010
 
 
 Статус: 
 Offline
 
 | Здравствуйте! Возникла необходимость создать устройство, которое будет производить АЦП и передавать значение в компьютер по rs-232. Проблема заключается в том что, мне необходимо чтобы значение АЦП передавалось в компьютер не в десятичном виде, а в HEX.
 Подскажите, как видоизменить прошивку чтобы результат АЦП передавался по RS232 в HEX виде.
   Code Define    ADC_BITS    10  Define    ADC_CLOCK    3
 Define    ADC_SAMPLEUS    50
 A1 var word
 A2 var word
 A3 var word
 A4 var word
 A5 var word
 TRISA = %11111111
 ADCON1 = %10000010
 INCLUDE "modedefs.bas"
 main:
 ADCIN 0, A1
 ADCIN 1, A2
 ADCIN 2, A3
 ADCIN 3, A4
 ADCIN 4, A5
 serout portb.0, t9600, ["A",#A1,"B",#A2,"C",#A3,"D",#A4,"E",#A5]
 goto main
 
 |  
 |  |  |  | 
| 
 
 
 
 | ADMIN | Дата: Чт, 09.12.2010, 05:25  |                                                                                                                Сообщение # 2 |  
 |   
 
 Администратор
 
 
  Группа:
  Администраторы
 
  Ранг: 
 
 Специалист
 
  
 Сообщений: 
 
 
 1082
 
 
 Замечания: ± На сайте с 20.08.2007
 
 
 Статус: 
 Offline
 
 | Все то же самое кроме этого: serout portb.0, t9600, ["A", HEX A1,"B", HEX A2,"C", HEX A3,"D", HEX A4,"E", HEX A5]
 |  
 |  |  |  | 
| 
 
 
 
 | ilyafm98 | Дата: Чт, 09.12.2010, 22:45  |                                                                                                                Сообщение # 3 |  
 | ![ilyafm98]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Новенький
 
  
 Сообщений: 
 
 
 18
 
 
 Замечания: ± На сайте с 08.12.2010
 
 
 Статус: 
 Offline
 
 | ADMIN, я так пробовал- при компиляции выскакивает ошибка- "Bad expression". Версия PIC BASIC 3.0
 Версия компилятора 2.47
 |  
 |  |  |  | 
| 
 
 
 
 | ADMIN | Дата: Пт, 10.12.2010, 07:10  |                                                                                                                Сообщение # 4 |  
 |   
 
 Администратор
 
 
  Группа:
  Администраторы
 
  Ранг: 
 
 Специалист
 
  
 Сообщений: 
 
 
 1082
 
 
 Замечания: ± На сайте с 20.08.2007
 
 
 Статус: 
 Offline
 
 | А если написать SHEX, DEC и т.д? У меня нет версии 2.47, не могу проверить. У кого есть? Проверьте пожалуйста. Возможно, это глюк ломанного компилятора.
 |  
 |  |  |  | 
| 
 
 
 
 | ilyafm98 | Дата: Пт, 10.12.2010, 21:22  |                                                                                                                Сообщение # 5 |  
 | ![ilyafm98]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Новенький
 
  
 Сообщений: 
 
 
 18
 
 
 Замечания: ± На сайте с 08.12.2010
 
 
 Статус: 
 Offline
 
 | К сожалению не получается откомпилировать ни с DEC ни с SHEX. ADMIN, какая у вас версия компилятора?
 |  
 |  |  |  | 
| 
 
 
 
 | ADMIN | Дата: Сб, 11.12.2010, 07:17  |                                                                                                                Сообщение # 6 |  
 |   
 
 Администратор
 
 
  Группа:
  Администраторы
 
  Ранг: 
 
 Специалист
 
  
 Сообщений: 
 
 
 1082
 
 
 Замечания: ± На сайте с 20.08.2007
 
 
 Статус: 
 Offline
 
 | У меня вообще PBP не было. Скачал вчера. сегодня попробую. подождите немного. |  
 |  |  |  | 
| 
 
 
 
 | ADMIN | Дата: Сб, 11.12.2010, 12:00  |                                                                                                                Сообщение # 7 |  
 |   
 
 Администратор
 
 
  Группа:
  Администраторы
 
  Ранг: 
 
 Специалист
 
  
 Сообщений: 
 
 
 1082
 
 
 Замечания: ± На сайте с 20.08.2007
 
 
 Статус: 
 Offline
 
 | В общем, все понятно. Оператор не поддерживает конвертацию в hex формат, зато ее поддерживает оператор serout2: Вот модифицированный код
   Code  Define    ADC_BITS    10
 Define    ADC_CLOCK    3
 Define    ADC_SAMPLEUS    50
 A1 var word
 A2 var word
 A3 var word
 A4 var word
 A5 var word
 TRISA = %11111111
 ADCON1 = %10000010
 DEFINE SER2_BITS 8 ' Set Serin2 and Serout2 data bits to 8 (default)
 main:
 ADCIN 0, A1
 ADCIN 1, A2
 ADCIN 2, A3
 ADCIN 3, A4
 ADCIN 4, A5
 serout2 portb.0, 84, ["A ",hex2 A1," B ",hex2 A2," C ",hex2 A3," D ",hex2 A4," E ",hex2 A5,13]
 pause 500
 goto main
 
 Параметр 84 в операторе serout2 являет собой значение, вычисленное по формуле: (1000000 / baud) - 20
  Эта формула приведена в хелпе на PBP.   Там же есть таблица этого параметра. Слева скорость передачи, справа - параметр.   Baud Rate Параметр   300 | 3313   600 | 1646   1200 | 813   2400 | 396   4800 | 188   9600 | 84   19200 | 32   Еще одно замечание: В качестве указателей ты используешь символы A,B,C,D и E. Задумайся, ведь числа в 16-ричном формате также содержат эти символы. Может, это у тебя уже учтено, но думаю будет не лишним напомнить
 |  
 |  |  |  | 
| 
 
 
 
 | ilyafm98 | Дата: Вс, 12.12.2010, 02:20  |                                                                                                                Сообщение # 8 |  
 | ![ilyafm98]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Новенький
 
  
 Сообщений: 
 
 
 18
 
 
 Замечания: ± На сайте с 08.12.2010
 
 
 Статус: 
 Offline
 
 | Благодарю за помощь! Как воплощу конструкцию в железе- доложу о результатах.
 Символы естественно другие будут, и строка в другом виде будет немного.
 |  
 |  |  |  |