汇编语言单片机中断

ORG 00H ;开始地址
JMP MAIN ; 跳转到主程序
ORG 03H ; 外部中断0地址
JMP EXT1 ; 跳转
ORG 13H ;外部中断1地址
JMP EXT2 ;跳转

MAIN :
MOV IE ,#85H ; 使能中断 0,1
SETB TCON.2 ; 边沿触发
setb TCON.0; 边沿触发

EXT1:
MOV A,#00H; 累加器置0
MOV P2,A ; 点亮发光二极管
JMP EXT1 ; 循环
EXT2:
MOV A,#0FFH;累加器置1
MOV P2,A ;关闭
JMP EXT2 ;循环
END
程序编译过去了,但是没有实现我要的功能,
我不明白问什么单片机一上电二极管就亮了,我程序没点亮,
另外我给低电平过去触发不了中断,求帮助

ORG 00H ;开始地址
JMP MAIN ;跳转到主程序
ORG 03H ;外部中断0地址
JMP EXT1 ;跳转
ORG 13H ;外部中断1地址
JMP EXT2 ;跳转

MAIN:
MOV IE, #85H ;使能中断 0,1
SETB TCON.2 ;边沿触发
SETB TCON.0 ;边沿触发

SJMP $ ;--没有这一句,程序,自己就去执行中断函数了

EXT1:
MOV P2, #0 ;清0,点亮发光二极管
RETI

EXT2:
MOV P2, #0FFH ;置1,关闭
RETI

END追问

我说说我想实现的功能吧,首先P2口上的二极管全部发光,然后有一个中断来,全部灭,一直等到下一个中断来又全部亮,怎么实现呢?

只用一个中断能实现吗?怎么写啊,用一个中断时因为我还要弄上位机,他给了一个下载器我,两根杜邦线,我觉得只能用上一根因为下载器那里就一个TXD,SO
求用一个中断实现这个功能的汇编语言
另外很感谢你的帮忙~!

追答

一个中断来,全部灭,一直等到下一个中断来又全部亮。
只用一个中断,如下即可:
;

ORG 00H ;开始地址
MOV IE, #84H
SETB IT1 ;边沿触发
SJMP $

ORG 13H ;外部中断1地址
XRL P2, #0FFH
RETI
END

追问

你好,在你的帮助下我已经解决问题了,但是他又出了一个新的题目,我全没有思路。给点思路好吗?他给我演示了一个上位机,里面有好多功能,例如流水灯,某个灯亮或灭,还有闪烁等等功能,他说完成这个可以有两种做法,一是改单片机程序,二是改上位机。 我想问单片机不是只有5个中断吗?到底怎么实现那么多的功能啊,
另外上位机就更加好奇了,不改变单片机里面的程序,就可以通过上位机实现那么多动能,怎么实现的啊

追答

他给我演示了一个上位机,里面有好多功能,例如流水灯,某个灯亮或灭,还有闪烁等等功能,
--这些功能,都是在单片机里面。

他说完成这个可以有两种做法,一是改单片机程序,二是改上位机。
我想问单片机不是只有5个中断吗?到底怎么实现那么多的功能啊,
--单片机可以实现这许多功能。

另外上位机就更加好奇了,不改变单片机里面的程序,
就可以通过上位机实现那么多动能,怎么实现的啊
--在单片机里面,先编好许多子程序。
--根据上位机送来的命令,执行对应的子程序,即可。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-04
51单片机,每个可以触发中断的引脚,都有固定的地址去寻找处理中断的程序就拿 计数器0 来说,当51单片机的内部触发这个中段的时候,就去寻找 0bh 这个地址里的跳转指令如果0bh里放的是 jmp #500h 这时候,单片机就会去 500h这个地址里处理 这个计数器中断SETB EA ;全局中断允许 SETB ET0;计算器0中断允许 SETB TR0 ;开启计数器 MOV TL0,#0FFH ;初始化计数器的值,开始计数
MOV TH0,#0FFH 当计数器为0的时候,就会触发中断,去0bh,寻找跳转指令大概就这样了~~~~ 多琢磨琢磨,就会理解
第2个回答  2014-07-27
主程序是:流水灯0到7依次点亮、流水灯7到0依次点亮,反复循环。
外部中断程序是:灯全亮、全灭3次。
但是,程序没有开中断的指令,中断程序是不会执行的。
START: ;在下面添加:
SETB EA ;开总中断.
SETB EX0 ;开INT0中断.
CLR IT0 ; 设置INT0为电平触发.
MOV A,#00H
……
外部中断就可以实现了。追问

main是我的主程序,Ext1和EXT2是我的中的程序。而且我是设置了两个中断,另外我通过设置MOV IE ,#85H ;就能打开中断了,和你的setb EA 是一样的。 我说说我想实现的功能吧,首先P2口上的二极管全部发光,然后有一个中断来,全部灭,一直等到下一个中断来又全部亮,怎么实现呢? 另外很谢谢你的帮助

相似回答