51单片机执行中断服务程序的问题,汇编语言

51单片机执行中断服务程序的问题,汇编语言,第1张

这个问题有很多种解决方法,各种方法如下:

1.扩展外部中断,但成本会很拆祥大高;

2.简化程序,将字符移动作为系统主资源程序,中断程序只进旅竖行按键读入,字符每移动一个点格就判断一次是否有新的按键按下,没有则继续执行此程序,有则跳转到相应程序,当然响应程序每隔一定语块也要加上按键宴棚判断语句,可以用循环完成,判断语句在循环末尾。

还有很多种用软件模拟扩展中断的方法,但都十分复杂。

不知道蠢老你要显示几位,我写了个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

ORG 0000H

LJMP MAIN

ORG 0003H

LJMP EXTINT0

ORG 0030H

MAIN:

MOV SP,#5FH堆栈顶设为5FH

SETB EA开中断

SETB IT0外竖源塌余圆部中断0沿触发

SETB EX0开外部中断裂竖0

MOV 30H,#0计数初值为0

SJMP $死循环

EXTINT0:

INC 30H计数器加1

RETI中断返回

END


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存