?? intr7.asm
字號:
;PROGRAM NAME:INTR7.ASM
;TEST SERIAL INTERRUPT
;
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
I_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
SJMP LOOP ;WAITTING
;
;
SERIAL JNB RI,NO_DATA
CLR RI
MOV A,SBUF
CJNE A,#100,$NEXT
$NEXT JNC NO_DATA
MOV DISP,A ;DISPLAY A NEW VALUE
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 + -