ВУЗ:
Составители:
291
;Основная программа может судить об идущей в данный момент передаче байта по
;состоянию флага _ID_PER "идет передача", а о состоявшемся приеме байта - по
;установленному флагу _PR_BYTE "принят байт". Сброс _PR_BYTE возлагается на
;основную программу. Установка _ID_PER (т. е. инициация передачи) возлагается
;на основную программу.
;Прерывания должны быть разрешены.
Lab_UART: CLR EA ;----------------------------------
PUSH PSW ; глоб запрет прер и сохр контекста
PUSH ACC ;----------------------------------
JNB TI,La_U0 ;окончилась ли передача ?
CLR TI ;да, сбросить флаг окончания передачи
CLR _ID_PER ; сбросить флаг "идет передача"
La_U0: JBC RI,La_U1 ;окончился ли прием ?
AJMP Lab_RETI ;нет (или его вообще не было), выйти
La_U1: SETB _PR_BYTE ;да, уст флаг "принят байт"
MOV RX_UART_R,SBUF ;сохранить принятый байт
AJMP Lab_RETI ;выйти
;Блок возврата из прерываний--------------------------------------------------
Lab_RETI: POP ACC ;---------------------------------
POP PSW ; восст контекста и глоб разр прер
SETB EA ;---------------------------------
RETI ;возврат из блока обраб прерываний
;Начало основной программы----------------------------------------------------
ORG 100h
Lab_START: MOV SP,#080h ;определить указатель стека
MOV PLLCON,#00000000b ;уст макс частоту ядра (12,58 МГц)
NOP ;
LCALL Pod_INIT_RSN ;иниц РСН
LCALL Pod_INIT_RON ;иниц РОН
MOV R3,#021h ;задание нач значения индицируемого байта
LCALL Pod_INIT_LCD ;иниц ЖКИ
LCALL Pod_CLEAR_LCD ;стирание ЖКИ
LCALL Pod_IND_PRIVET_R ;индикация заставки "Привет"
;Начало основного цикла---------------------------------------------------------
La_OSN: NOP ;метка возврата осн цикла
;Блок, предшествующий вызову подпрограммы опроса кнопки 0.
MOV R0,#KNOP0_R ;
MOV R1,#NAKOPL0_R ;
LCALL Pod_OPR_KNOP0 ;
;Блок, следующий за вызовом подпрограммы опроса кнопки (уст факта ее наж)
MOV ACC,@R0 ;
JNB ACC_1,La_0 ;
CLR ACC_1 ;кн была нажата, сброс флага нажат кн
MOV @R0,ACC ;
INC R3 ;------------------------------------
CJNE R3,#080h,La_00 ; перебор возможных значений байта
MOV R3,#021h ;------------------------------------
La_00: MOV DATA_IND_R,R3 ;------------------------------------
MOV ADR_IND_R,#65 ; индикация байта (символа)
LCALL Pod_PER_DAT_LCD ;------------------------------------
;Блок, предшествующий вызову подпрограммы опроса кнопки 1.
La_0: MOV R0,#KNOP1_R ;
MOV R1,#NAKOPL1_R ;
LCALL Pod_OPR_KNOP1 ;
Страницы
- « первая
- ‹ предыдущая
- …
- 289
- 290
- 291
- 292
- 293
- …
- следующая ›
- последняя »