ORG 0000H
LJMP START
ORG 0003H
LJMP INTT0
ORG 0600H
START: SETB EA
SETB EX0 打开外部中断0
CLR IT0 令中断0为电平触发
MOV @R0,#00H
DISPLAY: MOV DPTR,#TAB给字形表的初地址
MOV A,R0将要显示的数给A
MOVC A,@A+DPTR 在字形表中取数放到A
MOV P1,A 假设是P1口输出要显示的数据把A放到P1中
SJMP DISPLAY 循环显示等待中断
INTT0:INC @R0 ;中断带帆升中有按键着加1
RETI
TAB:DB 3FH,06H,5BH,4FH,66H 字形表
DB 6DH,7DH,07H,7FH,6FH
DB 77H,7CH,39H,5EH,79H
END
外部中断0设置为低电平触发,去掉while循环后一直按下按键实际代码为delay()
p1=0xfe
delay()
ex0=0
p1=_crol_(p1,1)
delay()
ex0=1
p1=0x00
一直重复.
之前的代码进入中断后会一直循环,并不会退出中断。正确做法中断宏谨应该改为:
void
tx0()
interrupt
0
using
0
{
unsigned
char
i
delay()
p1=0xfe
delay()
ex0=0
while(1)
{
p1=_crol_(p1,1)
delay()
if(p3&0x04)
//判断前绝指是否松慧配开中断0的按键
{
break
}
}
ex0=1
p1=0x00
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)