USART $ HEX
|
|
ilyafm98 |
Дата: Ср, 08.12.2010, 18:44 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
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 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 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 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
18
Замечания:
±
На сайте с 08.12.2010
Статус:
Offline
|
ADMIN, я так пробовал- при компиляции выскакивает ошибка- "Bad expression". Версия PIC BASIC 3.0 Версия компилятора 2.47
|
|
|
|
ADMIN |
Дата: Пт, 10.12.2010, 07:10 | Сообщение # 4 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
А если написать SHEX, DEC и т.д? У меня нет версии 2.47, не могу проверить. У кого есть? Проверьте пожалуйста. Возможно, это глюк ломанного компилятора.
|
|
|
|
ilyafm98 |
Дата: Пт, 10.12.2010, 21:22 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
18
Замечания:
±
На сайте с 08.12.2010
Статус:
Offline
|
К сожалению не получается откомпилировать ни с DEC ни с SHEX. ADMIN, какая у вас версия компилятора?
|
|
|
|
ADMIN |
Дата: Сб, 11.12.2010, 07:17 | Сообщение # 6 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
У меня вообще PBP не было. Скачал вчера. сегодня попробую. подождите немного.
|
|
|
|
ADMIN |
Дата: Сб, 11.12.2010, 12:00 | Сообщение # 7 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 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 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
18
Замечания:
±
На сайте с 08.12.2010
Статус:
Offline
|
Благодарю за помощь! Как воплощу конструкцию в железе- доложу о результатах. Символы естественно другие будут, и строка в другом виде будет немного.
|
|
|
|