单片机汇编语言程序,我想写一个循环点亮的LED,然后用外部中断0接到一个按键上,怎么写我需要详细的程序
1)P2口的8个脚对应8个LED;设D1灯对应高位,D8灯对应低位;
2)P1口的P1.0脚对应XO按钮;P1.1脚对应X1按钮;
3)开始时,显示第一种方式:向P2口写入a=01111111,延时0.5S,a 循环右移一位,再延时0.5S,如此反复。
4)当收到XO按钮信号后,向P2口写入a=01111111,延时1.5S,a 循环右移二位,再延时1.5S,如此反复。
5)当收到X1按钮信号后,向P2口写入a=10111111,延时1S,a 带进位右移二位,再延时1.5S,如此反复。当Cy=0时,执行 3)。
在四个灯循环点亮的状态下,每点亮一个灯需要延时,如果调用延时子程序,按键就显示不灵敏了,所以,采用定时器中断的方式控制延时,就不影响按键了。
#include
#include
仿真图效果。
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
你的程序太乱了,根本看不下去,给你说一下思路,你将中断设置为电平触发方式,当有中断的时候将当前A里边的IO口显示放到中断程序里边输出到LED显示上,当按键松开时候就继续走流水灯了,你这个应用不太符合我们常规的中断应用,我们中断是处理一件事情,你的中断需要多次响应中断。
这个只要给P1口送入FE或者01看你外部电路的LED接法
然后只要用左移或者右移命令就可以循环
中断的时候把那个数据送个寄存器R
重新开始的时候只要调用寄存器的值就ok
具体实现自己去做吧
我们用C语言的
单片机汇编语言程序,我想写一个循环点亮的LED,然后用外部中断0接到一个...
循环点亮LED灯,也就是流水灯效果的控制,可以用定时器来控制,这样做相对代码量较少而时间比较精确,外部中断0接以按键,可以控制动态效果的启停。程序如下:ORG 0000H LJMP MAIN ORG 0003H LJMP EXT0 ;外部中断0,控制流水灯启停 ORG 000BH LJMP T0ISR ;定时0控制流水灯循环点亮 ORG 0030...
单片机用汇编写两个数码管显示0到99循环的程序
要实现单片机用汇编语言编写的数码管循环显示0到99的程序,首先,你需要创建一个新的项目并做好初始化准备工作。接着,创建一个数码管段选表,它将决定每个数码管的显示模式。延时函数在此过程中也至关重要,以控制数码管的刷新速度。定义一个名为i的uchar变量,初始化一个名为wk的标志位,用于控制...
怎么用汇编语言实现for循环
汇编语言实现for循环十分容易,比如51汇编,用DJNZ指令就可以了,举例如下:C语言:for(i=0;i<10;i++)a=a+i;汇编语言:i equ 30h m equ 31h ...mov i,#0 mov m,#0 mov r2,#10 loop:mov a,i add a,m mov m,a djnz r2,loop ...
用完整的汇编语言编写使数码管循环显示0,1,2,3,4,5,6,7,8,9的程序
delay1Xms(1000); \/*延时1秒*\/ } } }
用汇编语言编写一个让“123456”依次向左循环左移显示的程序。
jz main ;没有输入,去继续循环 mov ax,4c00h int 21h funcRL: ;左移一位的子程序 push ax push cx push si mov cx,5 lea si,disBuffer mov bl,[si]inc si RlLoop:mov al,[si+1]mov [si],al inc si loop RlLoop mov [si],al pop si pop cx pop ax ret funcDelay: ...
汇编语言 循环程序
一个标准的循环程序应由以下四部分组成:循环准备、循环体、循环修改、循环控制。循环准备是为循环做准备的,有循环次数和起始地址;循环体是循环程序解题所需的核心程序,题目要完成的功能在此进行;循环修改用来更新某些数据或修正循环控制的参数;循环控制是循环是否结束的控制。如果在一个程序中的多个地方...
单片机用汇编写两个数码管显示0到99循环的程序
2、数码管段选表。3、延时函数。4、uchar i; 变量i;wk = 1;打开位选,P0 = 0xf7;1111 0111第4位数码管显示,wk = 0;关闭位选。5、while(1) \/\/死循环效果{} 。6、dk = 1;\/\/打开段选,P0 = leddata[i];,dk = 0;\/\/关闭段选,delay(100);\/\/延时效果。7、选择效果,限制i值...
用汇编语言编制循环闪烁灯程序
ORG 0000HLJMP MAINORG 0030HMAIN: MOV A,#0FEH MOV R2,#10LOOP: MOV P0,A LCALL DELAY MOV P0,#0FFH LCALL DELAY DJNZ R2,LOOP MOV R2,#10 RL A SJMP LOOPDELAY: MOV R3,#200DLY: MOV R4,#250 DJNZ R4,$ DJNZ R3,DLY RET END ...
汇编语言的一个空循环,有些看不懂能帮忙注释一下吗?谢谢~
DELAY: PUSH AX ; ax 入栈 PUSH DX ; dx 入栈 MOV DX,1000H ; 由dx,ax组成32位数 ,dx为高16位 MOV AX,0 ; ax为 低16位 S1: SUB AX,1 ; 低16位 减1 SBB DX,0 ; 高16位减借位 CMP ...
汇编语言里如何让几段程序循环执行
mov cx,10 A:...loop A ;此时会执行A中的内容(CX)次,即10次~;再同理 mov cx,10 B:...loop B 如果你要循环嵌套的话,需要用 "cmp" "jg" "jl"等