Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
У меня никогда проблем с уартом не было.
;============================================================================
;UART.asm Int П/П обслуживания "хардварного" последовательного порта.
;17/VI.05.
; Автоматом сохраняются только SREG,TMP,TMP2,XTMP !!!
;============================================================================
RxD: ;Прием байта
sei ;Разрешаем вложенные прерывания.
/*
;============================================================================
; "RXD.asm" ; processing of RS232 interface IRQ
; 22/X.02. ; RCS contain a received data. P.S. ;!!=rem
;Use only TMP,SREG registers!
;============================================================================
RXD:
sbr TF,B_UART ;Set the UART activity flag
sbrs TF,F_NO_CMD ;Пропускаем перенос входящих данных в CMDP буфер,
rjmp U_PLUS ; если предыдущая команда ещё не забрана CP, (но
; считаем вх. байты во избежании потери синхронизации),
; иначе обрабатываем принятый байт.
lds TMP,S_C_UDB ;Read the UART Data Byte Counter
cpi TMP,0 ;Determine the byte number
breq U0 ;If it is zero byte, then go to U0 mark.
cpi TMP,1 ;--//--
breq U1 ;
cpi TMP,2 ;--//--
breq U2 ;
cpi TMP,3 ;--//--
breq U3 ;
;--------------------------------------------------------------------
;
U0: mov CMD0,RCS
rjmp U_PLUS
U1: mov CMD1,RCS
rjmp U_PLUS ;Продолжаем приём пакета, т.к. обнаружена команда.
U2: mov CMD2,RCS