外部中断举例 【例6-3】使用外部中断0,当每次响应中断时,P1口依次输出高电平,使8个发光二极管依次循环熄灭闪烁。

2) 程序设计
ORG 0000H LJMP MAIN ;转主程序 ORG 0003H ;外部中断0入口地址 LJMP EXTER ;转中断程序 ORG 1000H MAIN: SETB IT0 ;外部中断0下降沿有效 SETB EX0 ;外部中断0允许 SETB EA ;总中断允许 LOOP: AJMP LOOP ;等待中断 ORG 1050H ;中断程序入口 EXTER: MOV R2, #0FFH ;置循环次数 MOV A, #01H ;灯亮初值 FLASH: RR A ;右移一位 MOV R7, #0FFH ;定时 LOOP1: MOV R6, #0FFH LOOP2: NOP NOP DJNZ R6, LOOP2 DJNZ R7, LOOP1 MOV P1, A ;控制灯的亮灭 DJNZ R2, FLASH ;循环 RETI ;中断返回 END
6.4.2 定时器举例 【例6-4】 通过定时器1来产生中断,控制P1.0线上的脉冲输出,并经三极管驱动扬声器,发出音调信号。
1) 电路设计

2) 程序设计
ORG 0000H LJMP MAIN ORG 001BH ;中断入口地址 CPL P1.0 RETI ORG 1000H MAIN: MOV R1, #00H MOV R0, #23H MOV TMOD, #20H ;定时器1工作方式2 MOV IE, #88H ;定时器1允许中断 L1: MOV DPTR, #3FFFH MOV A, R0 ;取数 INC R0 ;修改指针 MOVC A, @A+PC ;查表 JZ MAIN MOV R1, A ;计算计数初值 MOV A, #0FFH CLR C SUBB A, R1 RL A MOV TH1, A ;置计数初值 SETB TR1 ;开始计数 L2: CLR C MOV A, DPL ;延时 SUBB A, #01H MOV DPL, A MOV A, DPH SUBB A, #00H MOV DPH, A ORL A, DPL JNZ L2 CLR TR1 SJMP L1 END ORG 1031H ;歌曲“送别”编码
DB 33H,33H,3DH,33H,26H
DB 26H, 26H, 26H,2DH,2DH
DB 26H,2DH,33H,33H,33H
DB 33H, 33H,33H,4DH,45H
DB 45H, 45H45H, 45H, 45H
DB 45H, 45H,33H,33H,3DH
DB 33H,26H,26H,26H, 28H
DB 2DH, 2DH, 26H,26H,33H
DB 33H,33H,33H,45H,3DH |