循环点亮你只要用位移指令就行啦!假如是p1口,你只要先给他赋予一个初值00000001,假如是高电平点亮,那这是就只有一盏灯亮,循环左移就行啦!每次循环一次,都调用一下延时这就可以按自己要求设置延时的时间啦!其实思路都挺简单的!不过你要是对单片机一点都不了解,那只好叫别人写好给你算了!你直接复制下就行!
使用8255A扩展并行 l/O 口,可以实现16个发光二极管的跑马灯程序,具体 *** 作如下:
设置8255A芯片的I/O口为输出模式。
2 定义一个变量,用于存储当前亮灯的位置。
3 在程序中通过循环控制每个发光二极管的亮灭,从而实现跑马灯效果。
4 在循环中,每次将该变量加1,并将该变量对16求余,以确保亮灯位置始终在0~15之间。
下面是代码示例:
```
#include <reg52h>
#define LED P0
sbit CS = P1^0;
void main()
{
unsigned char i;
while(1)
{
for(i=0;i<16;i++)
{
LED = ~(0x01<<i);
delay(500);
}
}
}
```
其中delay函数为延时函数,可自行定义或使用已有的库函数。
org 0000h
jmp start
org 0030h
start:
mov p0,#11111110b ; 此时第一个灯亮
call t10s
mov p0,#11111101b ;此时第二个灯亮
call t10s
mov p0,#11111011b
call t10s
mov p0,#11110111b
call t10s
mov p0,#11101111b
call t10s
mov p0,#11011111b
call t10s
jmp start ;此处跳到开始 即 循环
;延时子程序10秒=250usX2X200X100
t10s:mov r5,#100
lpr5:mov r6,#200
lpr6:mov r7,#250
djnz r7,$
djnz r6,lpr6
djnz r5,lpr5
ret
end
把灯的正极接电源正极 即vcc 负极分别接p00-p05
此时 给p0 送0灯就亮 1灯就不亮
程序已经过调试 可用
仿真如下:
以上就是关于汇编语言 跑马灯程序设计全部的内容,包括:汇编语言 跑马灯程序设计、使用8255A扩展并行 l/O 口,实现16个发光二级管的跑马灯程序、51单片机 跑马灯程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)