一、设计任务
1、如图1,单片机的P2口通过一个排阻接上一个数码管,P3.2口接上一个开关(开关用于产生中断信号)。用单片机实现:开始时数码管的a,b,c,d,e,f,g依次被点亮(循环),当P3.2口来一个中断信号(一个低电平)时,数码管的a,b,c,d,e,f,g全部点亮,并且亮暗闪烁8次,然后接着原来的依次点亮。
2、如图2,单片机P0口接红色数码管,P1口接蓝色数码管,P2口接绿色数码管,P3.2接开关1(用于产生低优先级中断),P3.3口接开关2(用于产生高优先级中断)。用单片机实现:开始时红色数码管显示数字1~~8(循环),当开关1按下时,红色数码管显示当前数字停止,绿色数码管显示1~~8,一次完了后红色数码管接着显示,当绿色数码管显示时,按下开关2,绿色数码管显示当前数字停止,蓝色数码管显示1~~8(一次)。
二、电路原理图
图1——1:数码管的各段依次被点亮
图1——2:K0按下时,产生中断信号
图2——1:低优先级中断
图2——2:高优先级中断
三、设计程序
//INT0中断数码管a,b,c,d,e,f,g
ORG
0
SJMP START
ORG 30H
SJMP INT0S
START:MOV IE,#81H
MOV TCON,#1
MOV A,#0FEH
MOV P3,#0FFH
ST:
MOV P2,A
ACALL DELAY
RL A
SJMP ST
INT0S:PUSH ACC
MOV R2,#8
LOOP: CLR A
MOV P2,A
ACALL DELAY
MOV A,#0FFH
MOV P2,A
ACALL DELAY
DJNZ R2,LOOP
POP ACC
RETI
DELAY:MOV R7,#250
D1: MOV R6,#250
D2: NOP
NOP
NOP
DJNZ R6,D2
DJNZ R7,D1
RET
END
//高级中断中断低级中断
ORG 0
SJMP START
ORG 3
SJMP INT0S
ORG 13H
SJMP INT1S
ORG 30H
START: MOV IE,#85H
MOV TCON,#5
MOV A,#0FEH
MOV P3,#0FEH
SETB PX1
ST0:
MOV A,#1
ST1:
PUSH ACC
ACALL SEG7
MOV P0,A
ACALL DELAY
POP ACC
INC A
CJNE A,#9,ST1
SJMP ST0
INT0S: PUSH ACC
MOV A,#0
LOOP:
INC A
PUSH ACC
ACALL SEG7
MOV P2,A
POP ACC
ACALL DELAY
CJNE A,#8,LOOP
POP ACC
MOV P2,#0FFH
RETI
INT1S: PUSH ACC
MOV A,#0
LOOP1: INC A
PUSH ACC
ACALL SEG7
MOV P1,A
ACALL DELAY
POP ACC
CJNE A,#8,LOOP1
MOV P1,#0FFH
POP ACC
RETI
DELAY: MOV R7,#250
D1:
MOV R6,#250
D2:
NOP
NOP
NOP
DJNZ R6,D2
DJNZ R7,D1
RET
SEG7:
INC A
MOVC A,@A+PC
RET
DB 0C0H,0F9H,0A4H,0B0H
DB 99H,92H,82H,0F8H
DB 80H,90H,88H,83H
DB 0C6H,0A1H,86H,8EH
END |