例:電路如圖。要求編程實現(xiàn):主程序?qū)1口的8個LED從上到下循環(huán)顯示(間隔時間約1S),中斷時(INT0)使8個LED同時閃爍5次(間隔時間約1S,設單片機晶振為6M)。
(1)主程序
ORG 0000H
LJMP START
START:MOV IE,#10000001B;允許INT0中斷
MOV IP,#00000001B;INT0中斷優(yōu)先
MOV TCON,#01H;INT0邊沿觸發(fā)方式
MOVSP,#70H
MOV A,#80H;左移初值
LOOP1:RLA
MOV P1,A
CALLDELAY;延時1s
AJMP LOOP1
(2)中斷服務程序
ORG 0003H
LJMP EXT0
EXT0:PUSHACC
PUSHPSW
SETBRS0
CLRRS1
MOV A,#0FFH;為使P1全亮
MOVR2,#;閃爍5次
LOOP3:MOV P1,A
CALLDELAY;延時1s
CPLA
DJNZR2,LOOP3
POPPSW
POPACC
RETI
(3)延時子程序(約1s)
DELAY:MOV R5,#5
D1:MOV R6,#200
D2:MOV R7,#250
D3:DJNZ R7,D3;1ms
DJNZ R6,D2;約0.2s
DJNZ R5,D1;約1s
RET