单片机汇编语言程序,我想写一个循环点亮的LED,然后用外部中断0接到一个按键上,怎么写我需要详细的程序

单片机汇编语言程序,我想写一个循环点亮的LED,然后用外部中断0接到一个按键上,当按下按键的时候停在任意led上,然后再按下的时候继续执行,我需要一个详细的程序且带说明!!急啊 我写的这个不对帮我改一下:ORG 0000H LJMP MAIN ORG 0003H ORG EINT0 CLR P1.0 LCALL DELAY CLR P1.1 LCALL DELAY SETB P1.2 LCALL DELAY CLR P1.3 LCALL DELAY CLR P1.4 LCALL DELAY CLR P1.5 LCALL DELAY CLR P1.6 LCALL DELAY CLR P1.7 LCALL DELAY MOV SP ,#60H CLR IT0 SETB EX0 SETB EA MOV DPTR,#1000H EINT0: PUSH PSW PUSH ACC MOV A,P1 MOVX @DPTR,A INC DPTR POP ACC POP PSW RETI DELAY: MOV R7,#200DL1: MOV R6,#250 DL2: NOP NOP NOP DJNZ R6,DL2 DJNZ R7,DL1 RET END 请各位老师同学帮忙改一下 中断时候是不是要将保存到寄存器里呢?怎么送到寄存器里保存起来到时候再继续呢 帮忙解答一下很急啊

循环点亮LED灯,也就是流水灯效果的控制,可以用定时器来控制,这样做相对代码量较少而时间比较精确,外部中断0接以按键,可以控制动态效果的启停。程序如下:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EXT0 ;外部中断0,控制流水灯启停
ORG 000BH
LJMP T0ISR ;定时0控制流水灯循环点亮
ORG 0030H
MAIN:
MOV TMOD,#01H ;设置定时器0工作模式
MOV TH0,#HIGH(65536-60000) ;60毫秒定时
MOV TL0,#LOW(65536-60000)
SETB ET0
SETB EA
MOV A,#0FEH ;LED等初始化
MOV P0,A
SJMP $
EXT0:
CPL TR0
RETI
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-60000)
MOV TL0,#LOW(65536-60000)
SETB ET0
RL A
MOV P0,A ;循环点亮LED灯
RETI
END
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-15
你的程序太乱了,根本看不下去,给你说一下思路,你将中断设置为电平触发方式,当有中断的时候将当前A里边的IO口显示放到中断程序里边输出到LED显示上,当按键松开时候就继续走流水灯了,你这个应用不太符合我们常规的中断应用,我们中断是处理一件事情,你的中断需要多次响应中断。本回答被提问者采纳
第2个回答  2011-12-10
这个只要给P1口送入FE或者01看你外部电路的LED接法
然后只要用左移或者右移命令就可以循环
中断的时候把那个数据送个寄存器R
重新开始的时候只要调用寄存器的值就ok
具体实现自己去做吧
第3个回答  2011-12-10
我们用C语言的
相似回答