单片机实验七-外部中断
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七外部中断
1:在P1.0上产生周期为10ms的方波,设晶振频率12MHz.(要求分别以查询方式和中断方式设计程序)
查询:
ORG 0000H
MOV TMOD,#10H
MOV TH1,#0CEH
MOV TL1,#78H
SETB TR1
WAIT:JBC TF1,NX
SJMP WAIT
NX:CPL P1.0
MOV TH1,#0CEH
MOV TL1,#78H
SJMP WAIT
END
中断:
ORG 0000H
MOV TMOD,#10H
MOV TH1,#0CEH
MOV TL1,#78H
MOV IE, #88H
SETB TR1
WAIT: SJMP WAIT
ORG 001BH
CPL P1.0
MOV TH1,#0CEH
MOV TL1,#78H
RETI
END
例2按照按键次序,先后依次点亮8盏灯中的一盏,要求采用中断方式编程。
案例一:
ORG 0000H
LJMP MAIN
ORG 0013H ; 中断矢量
LJMP INT
ORG 040H
MAIN:SETB EX1 ; 开外部中断允许
CLR PX1 ; 外部中断低优先级
SETB IT1; 边沿触发
SETB EA; 开中断总允许
MOV A,#01H; 给A寄存器赋初值
HERE:SJMP HERE; 原地等待中断申请
INT:
MOV P1,A ; 输出到P1口显示
RL A ; 左环移一次,准备下次显示的数据
RETI ; 中断返回
END
案例二:
ORG 0000H
LJMP MAIN
ORG 0013H ; 外部中断1矢量
LJMP INT
ORG 030H
MAIN: MOV R0,#09
SETB EX1 ; 开外部中断允许
SETB PX1 ; 外部中断高优先级
SETB IT1; 边沿触发
SETB EA; 开中断总允许
MOV SP, #40H
MOV A,#0
MOV P1,A; 初始状态,全部灯暗
PUSH ACC; 保护中断前A值
MOV A,#01H; 赋待显示初值
WAIT: CJNE R0,#0,WAIT ;3次中断后退出
POP ACC ;弹出中断前保护的A值
MOV P1,A ;恢复初始状态,全部灯暗
INT:
MOV P1,A ; 输出到P1口显示
RL A ; 左环移一次,准备下次显示的数据
DEC R0;中断次数减1
RETI ; 中断返回
END
例3 有两组“红绿蓝黄”灯,无键按下时,两组“红绿蓝黄”灯依次显示。当K1按下时,红灯闪烁;K2按下时,绿灯闪烁;K3按下时,蓝灯闪烁;K4按下时,黄灯闪烁。
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INTT0 ; 红
ORG 0013H
LJMP INTT1 ; 绿
ORG 000BH
LJMP CONT0 ; 蓝
ORG 001BH
LJMP CONT1 ; 黄
ORG 0100H
MAIN:
MOV SP,#60H
MOV TMOD,#66H MOV TH0,#0FFH
MOV TL0,#0FFH
MOV TH1,#0FFH
MOV TL1,#0FFH
SETB EX0
SETB EX1
SETB ET0
SETB ET1
SETB EA
SETB IT0
SETB IT1
MOV R0,#5
SETB TR0
SETB TR1
LP0: MOV A,#0EEH
MOV P0,A
LCALL DELAY
MOV P0,#0FFH
LP1: RL A
MOV P0,A
LCALL DELAY
SJMP LP1
INTT0:
MOV P0,#0EEH ; 红
LCALL DELAY
MOV P0,#0FFH
LCALL DELAY
DJNZ R0,INTT0
MOV R0,#5
RETI
INTT1:
MOV P0,#0DDH ; 绿
LCALL DELAY
MOV P0,#0FFH
LCALL DELAY
DJNZ R0,INTT1 MOV R0,#5
RETI
CONT0:
MOV P0,#0BBH ; 蓝LCALL DELAY
MOV P0,#0FFH LCALL DELAY
DJNZ R0,CONT0 MOV R0,#5
RETI
CONT1:
MOV P0,#77H ; 黄LCALL DELAY
MOV P0,#0FFH LCALL DELAY
DJNZ R0,CONT1 MOV R0,#5
RETI
DELAY:
MOV R3,#255 DEL2:
MOV R4,#255 DEL1:
NOP
DJNZ R4,DEL1
DJNZ R3,DEL2
RET
END