MicroCHIP.RU
Главная Документация Отладочные средства Справочник Поиск Ссылки
 Новости   Конференция   Контакты 
 

PIC16F876a помогите как это зделать

 Нoвaя темa  |  Наверх  |  Перейти к теме  |  Поиск  |  Правила  |  Вход 

ВНИМАНИЕ!
Вы просматриваете архив форума.

Этот форум работает только в режиме просмотра и поиска.

Действующий форум переведен на новый движок и
находится по адресу www.microchip.su

 PIC16F876a помогите как это зделать
Автор: vovan112 ()
Дата:   27/09/2006 15:52

по rs232 приходит код в ascii в виде четырех цифр
очень нужно получить код в формате 155ир17


 
 расскажи
Автор: Greg ()
Дата:   27/09/2006 15:57

что сам уже успел Сделать.

в чем затык случился.
где и как искал ответы на свои вопросы (если они возникли).
А если они не возникли, то почему (может вообще ничего не понятно)
да поподробней.
можешь даже коды показать.

главное, чтобы инициатива исходила от тебя.


 
 "убил бобра - спас дерево "
Автор: pal ()
Дата:   27/09/2006 16:27

интересует его 16 разрядное BCD->BIN


 
 Re: расскажи
Автор: vovan112 ()
Дата:   27/09/2006 18:43

Возникла у меня на работе задача от начальства зделать обучающий стенд по
изучению работы ацп последовательного приближения который еще привсем должен и
работать . Времени конечно дали как всегда мизир.

А в програмировании я не супер асс,кое что умею но не много.
у стенда три режима шаговый , цеклический , непрерывный с выводом на огромный
индикатор .

Вот порылся на работе нашел готовый приборчик КИПиА с входным сигналом 4-20мА

и выводом цыфр на индикатор 4 разряда и с RS232 выходом .
Как раз он всю сложную работу и делает его индикатор служит наглядным входным
сигналом ацп, осталось только мнемонически нарисовать цап, компоратор и 155ир17
и спомощью кучи светодиодов наглядно показать как эта бяка работает.

Вот выбрал PIC16F876А так как их на работе просто валом
уже написал прием и передачу по RS232 работает успешно , кнопочки уже работают.

индикатор огромный цыфры выводит .

а вот как ASCII в bin переделать замешкался не получаеться .

почему AScii ? приборчик передает данные свои именно в этом коде

формат простой

#0001cr ему посылаешь а он отдает свои показания индикатора >0000cr а вот что
теперь дальше темный лес вот и прошу помощи


 
 Re: расскажи
Автор: Ученый ()
Дата:   27/09/2006 22:34

Вот кусок кода, выдраный из программы. Выкинуты для наглядности проверки на конец буфера и
принадлежность ASCII-кода к множеству '0' ... '9'. Может чего и нужное выкинул, но идея видна.
ASCII-коды приняты в буфер и выбираются оттуда косвенной адресацией.
ACCaHI+ACCaLO=ACCa и ACCbHI+ACCbLO=ACCb - двухбайтовые регистры, используемые подпрограммой 16-
ти битного сложения D_add.
Сколько байт обрабатывать - дело хозяйское.


;FSR указывает на первый байт буфера
CHR2BIN	CLRF	ACCbHI
	CLRF	ACCbLO
DIGIT	MOVF	ACCbHI,W	;
	MOVWF	ACCaHI		;
	MOVF	ACCbLO,W	;
	MOVWF	ACCaLO		;ACCb -> ACCa
	BCF	_C
	RLF	ACCbLO
	RLF	ACCbHI		;ACCb x2
	BCF	_C
	RLF	ACCbLO
	RLF	ACCbHI		;ACCb x4
	BCF	_C
	RLF	ACCbLO
	RLF	ACCbHI		;ACCb x8
	BCF	_C
	RLF	ACCaLO
	RLF	ACCaHI		;ACCa x2
	CALL	D_add
;предыдущий результат в ACCb x 10
	MOVF	INDF,W		;новую цифру -> W
	ANDLW	0x0F		;оставляем только значащие биты
	MOVWF	ACCaLO		;-> ACCa
	CLRF	ACCaHI		;
	CALL	D_add		;прибавляем ACCa к ACCb
NXTCHAR	INCF	FSR		;следующий байт - код цифры от '0' до '9'
	GOTO	DIGIT

;       Double Precision  Addition ( ACCb + ACCa -> ACCb )
D_add      movf    ACCaLO,w
	addwf   ACCbLO, F       ;add lsb
	btfsc   _C		;add in carry
	incf    ACCbHI, F
	movf    ACCaHI,w
	addwf   ACCbHI, F       ;add msb
	retlw   0



Не знать - не стыдно, стдыдно не учиться.


 
 Re:огромное всем спасибо у меня все получилось
Автор: vovan112 ()
Дата:   29/09/2006 00:46

огромное всем спасибо у меня все получилось





Горячие темы на нашем форуме: