外中断程序设计

外中断程序设计,第1张

中断允许寄存器 IE EA × × ES ET1 EX1 ET0 EX0 (1)EA:总中断允许开关。它是个总开关,凡是要设置中端都得先通过它。EA=1,开放所有的中断;EA=0,则所有中断都被禁止。(2)ES:串行口中断控制位。ES=1,允许中断;ES=0,禁止中断。(3)ET1:定时/计数器 1 中断控制位。ET1=1,允许中断;ET1=0,禁止中断。(4)EX1:外中断 1 中断控制位。EX1=1,允许中断;EX1=0,禁数拍首止中断。(5)ET0:定时器 0 中断控制位。ET0=1,允许中断;ET0=0,禁止中断。(6)EX0:外中断 0 中断控制位。EX0=1,允薯数许中断;EX0=0,禁止中断。所以IE=0X88,允许贺芦定时器1中断,开总中断

不知道蠢老你要显示几位,我写了个1位显示的轿扒。前提是共阴数码LED且一端已接地,由P1口控制。

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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12499370.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存