?? intr6.asm
字號:
;PROGRAM NAME:INTR6.ASM
;TEST SERIAL INTERRUPT(MODE 1)
;
COUNT EQU 9217 ;10mS FOR XTAL=11.0592MHz
;
DIGIT1 REG P1.4
DIGIT2 REG P1.5
LED REG P3.7
;
DISP EQU 30H
SEC EQU 31H
O_CNT EQU 32H
;
O_TRUE REG 20H.0
;
ORG 0000H
LJMP RESET
ORG 0003H ;INT0 INTERRUPT
RETI
ORG 000BH ;TIMER0 INTERRUPT
LJMP INT_TIMER0
ORG 0013H ;INT1 INTERRUPT
RETI
ORG 001BH ;TIMER1 INTERRUPT
RETI
ORG 0023H ;SERIAL INTERRUPT
LJMP SERIAL
;
RESET MOV R0,#00H
DJNZ R0,$ ;WAIT
MOV DISP,#00H ;DISPLAY '0''0'
MOV SEC,#00H
MOV SP,#40H
;
MOV A,#00100001B
MOV TMOD,A
;TIMER0 IN MODE 1:16-BIT COUNT
MOV TH0,#(65536-COUNT)/256
MOV TL0,#(65536-COUNT).MOD.256
CLR TF0 ;CLEAR TF0
SETB TR0
;
;TIMER1 IN MODE 2:8-BIT AUTO RELOAD MODE
MOV TH1,#FDH
SETB TR1 ;TIMER1 START
;
MOV SCON,#01000000B
SETB REN ;RECEIVE ENABLE
;
;TIMER0 SETTING
SETB PT0
SETB ET0 ;ENABLE TIMER0 INTURRUPT
;
CLR RI
CLR TI
SETB ES ;ENABLE SERIAL INTERRUPT
;
SETB EA ;ENABLE SYSTEM INTERRUPT
;
LOOP LCALL LDELAY
LCALL LDELAY
;
MOV A,DISP
ADD A,#01H
DA A
MOV DISP,A ;DISP=DISP+1 (PLUS DAA)
;
MOV O_CNT,#00H
SETB O_TRUE
SETB TI
SJMP LOOP ;WAITTING
;
TABLE DB ' ','H','E','L','L','O',0DH,0AH
;
SERIAL JNB TI,NO_DATA
JNB O_TRUE,NO_DATA
;TI=1 AND O_TRUE=1
CLR TI
MOV A,O_CNT
INC O_CNT ;OUT_CNT=O_CNT+1
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV SBUF,A
CJNE A,#0AH,NO_DATA
MOV O_CNT,#00H
CLR O_TRUE
NO_DATA
RETI
;
;TF0=1
INT_TIMER0
CLR TF0 ;CLEAR TF0
MOV TH0,#(65536-COUNT)/256
MOV TL0,#(65536-COUNT).MOD.256
INC SEC ;SEC=SEC+1
MOV A,SEC ;CHECK SEC>=100?
CJNE A,#100,$CHK1 ;A-100
$CHK1 JC $NEXT
MOV SEC,#00H ;SEC=0
;
$NEXT MOV A,SEC
CJNE A,#40,$CHK2
$CHK2 JNC OVER
SETB LED ;LED ON
SJMP DISPLAY
OVER CLR LED
;
DISPLAY MOV A,DISP
ANL A,#00001111B ;GET LOW NIBBLES
SETB ACC.5 ;BIT5,BIT4=10
MOV P1,A
ACALL DELAY
;ADD EXTRA PART
CLR P1.4
CLR P1.5
ACALL DELAY
;
MOV A,DISP
SWAP A
ANL A,#00001111B
SETB ACC.4 ;BIT5,BIT4=01
MOV P1,A
ACALL DELAY
CLR P1.4
CLR P1.5
RETI
;
DELAY MOV R7,#80H
DJNZ R7,$
RET
;
LDELAY MOV R1,#00H
$R0 MOV R0,#00H
DJNZ R0,$
DJNZ R1,$R0
RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -