Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » USART $ HEX
USART $ HEX
ilyafm98 Дата: Ср, 08.12.2010, 18:44  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 18
Репутация: 0   ±
Замечания:   ±
На сайте с 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
ЯНДЕКС Дата: 08.12.2010
ADMIN Дата: Чт, 09.12.2010, 05:25  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1109
Репутация: 24   ±
Замечания:   ±
На сайте с 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
Репутация: 0   ±
Замечания:   ±
На сайте с 08.12.2010

Статус: Offline

ADMIN, я так пробовал- при компиляции выскакивает ошибка- "Bad expression".
Версия PIC BASIC 3.0
Версия компилятора 2.47
ADMIN Дата: Пт, 10.12.2010, 07:10  |                                                                                                                Сообщение # 4
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1109
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

А если написать SHEX, DEC и т.д?
У меня нет версии 2.47, не могу проверить. У кого есть? Проверьте пожалуйста. Возможно, это глюк ломанного компилятора.
ilyafm98 Дата: Пт, 10.12.2010, 21:22  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Новенький
Сообщений: 18
Репутация: 0   ±
Замечания:   ±
На сайте с 08.12.2010

Статус: Offline

К сожалению не получается откомпилировать ни с DEC ни с SHEX.
ADMIN, какая у вас версия компилятора?
ADMIN Дата: Сб, 11.12.2010, 07:17  |                                                                                                                Сообщение # 6
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1109
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

У меня вообще PBP не было. Скачал вчера. сегодня попробую. подождите немного.
ADMIN Дата: Сб, 11.12.2010, 12:00  |                                                                                                                Сообщение # 7
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1109
Репутация: 24   ±
Замечания:   ±
На сайте с 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
Репутация: 0   ±
Замечания:   ±
На сайте с 08.12.2010

Статус: Offline

Благодарю за помощь!
Как воплощу конструкцию в железе- доложу о результатах.
Символы естественно другие будут, и строка в другом виде будет немного.
Форум Picbasic.ru » Программирование МК » PicBasicPro » USART $ HEX
Страница 1 из 11
Поиск: