中断系统的应用实例详解
6.4.1 外部中断举例
【例6-3】使用外部中断0,当每次响应中断时,P1口依次输出高电
平,使8个发光二极管依次循环熄灭闪烁。
1) 电路设计
ORG0000H
LJMPMAIN;转主程序
ORG0003H;外部中断0入口地址
LJMPEXTER;转中断程序
ORG1000H
MAIN:SETBIT0;外部中断0下降沿有效
SETBEX0;外部中断0允许
SETBEA;总中断允许
LOOP:AJMPLOOP;等待中断
ORG1050H;中断程序入口
EXTER:MOVR2, #0FFH;置循环次数
MOVA, #01H;灯亮初值FLASH:RRA;右移一位
MOVR7, #0FFH;定时
LOOP1:MOVR6, #0FFH
LOOP2:NOP
NOP
DJNZR6, LOOP2
DJNZR7, LOOP1
MOVP1, A;控制灯的亮灭
DJNZR2, FLASH;循环
RETI;中断返回
END
定时器举例 ORG0000H
通过定时器1来产生中断,控制P1.0线上的脉冲输出,并经三极管驱动扬声器,发出音调信号。
1) 电路设计
LJMPMAIN
ORG001BH;中断入口地址
CPLP1.0
RETI
ORG1000H
MAIN:MOVR1, #00H
MOVR0, #23H
MOVTMOD, #20H;定时器1工作方式2
MOVIE, #88H;定时器1允许中断
L1:MOVDPTR, #3FFFH
MOVA, R0;取数
INCR0;修改指针
MOVCA, @A+PC;查表
JZMAIN
MOVR1, A;计算计数初值
MOVA, #0FFH
CLRC
SUBBA, R1
RLA
MOVTH1, A;置计数初值
SETBTR1;开始计数
L2:CLRC
MOVA, DPL;延时
SUBBA, #01H
MOVDPL, A
MOVA, DPH
SUBBA, #00H
MOVDPH, A
ORLA, DPL
JNZL2
CLRTR1
SJMPL1
END
ORG1031H;歌曲“送别”编码
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
评论