51单片机C程序怎样把LED灯从左到右点亮然后又从右到左点亮然后循环

51单片机C程序怎样把LED灯从左到右点亮然后又从右到左点亮然后循环,第1张

#include<reg51h>

unsigned char ledtab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}

void delay(unsigned char a)

{

unsigned char i,j;

for(i=0;i<a;i++)

for(j=0;j<120;j++);

}

main()

{

unsigned char i;

while(1)

{

for(i=0;i<8;i++){P0=ledtab[i];delay(100);}

for(i=0;i<8;i++){P0=ledtab[7-i];delay(100);}

}

}

也许很快就有其他人发出程序代码来告诉你哪里有问题了,我就不贴代码了,主要告诉你方法。

1、点击工具栏上面的“start/stop debug session”按钮,进入仿真页面。

2、点击Peripherals选项,在下拉菜单选择“IO-port”,继续选择Port 1。

3、点击关掉Disassembly窗口,这个是汇编的,就不看了。   __

4、在新出现的仿真工具栏里,有一个箭头跳过花括号的图标  {} ↓   ,点击它或者按F10,你就可以执行单步仿真了。

5、在左边还有个sec 寄存器,可以看到执行到当期指令时所花的时间。不过首先你要去project option里面把晶振频率设置成和你单片机一样的。

6、选择变量i,右键,点击add to watch 1。这里是看变量i的变化的。

7、一步一步执行下来,你可以知道单片机是怎么执行指令的,你的IO输出到底是什么个样子的。反正肯定不是你现在所理解的,执行一遍就不执行了,呵呵。

#include<reg51h>

#define uchar unsigned char

uchar times,cnt;

uchar led[]={0x00,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0xff};

void t0isr() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

times++;

if(times>=40)

{

times=0;

P0=led[cnt];

cnt++;

cnt%=11;

}

}

main()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

ET0=1;

EA=1;

while(1);

}

//程序很简单,你自己加注释和完成其他工作吧。

# include <reg52h>

#include <intrinsh>

#define uint unsigned int

#define uchar unsigned char

uchar temp;

void delay (uint);

void main ()

{

temp=0xfe;

while(1)

{

P1=temp;

temp=_crol_(temp,1);

delay (500);

}

}

void delay(uint z)

{

uint x,y;

for (x=z;x>0;x--)

for (y=110;y>0;y--);

}

不用while,不会 for你可以自己修改一下

以上就是关于51单片机C程序怎样把LED灯从左到右点亮然后又从右到左点亮然后循环全部的内容,包括:51单片机C程序怎样把LED灯从左到右点亮然后又从右到左点亮然后循环、我想实现LED灯循环左移,可是只循环了一次 ,就不循环了,求大神指教,程序如下:、8051单片机,用P0口控制8个LED实现循环彩灯.循环显示规律为:全亮,全灭,依次点亮全灭。 间隔时间1秒。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9406310.html

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

发表评论

登录后才能评论

评论列表(0条)

保存