单片机80C51程序设计

来源:百度知道 编辑:UC知道 时间:2024/09/20 07:36:42
请帮我设计一个程序,要求P1口做输出端,有4个灯。灯是这样亮的P1。0到P1。2到P1。3到P1。4在从P1。4按顺序返回P1,0,这样循环亮!

如果是高电平灯亮的话,将二进制数据00000001的1依次左移3次然后再右移3次即可实现上述的效果;如果是低电平亮的话,将二进制数据11111110的0依次左移3次然后再右移3次即可实现上述的效果。

#include<reg52.h>
unsigned int i;
unsigned int a;
a=0x80;
void main()
{
while(1){
P1=0x7f;
for(i=0;a<=10000;i++)\\延时
{};
a=a>>1; \\左移1位
P1=~a; \\例如01000000取反后10111111,因为低电平点亮。
if(a==0x10) \\到P1.4返回到P1.0
a=0x80;
}
}

楼上给的是定时器延时。
我给你的是软件延时。

我这里有八个灯的,途给你吧.你稍微修改一下就行了
. #include<reg51.h>
#include<intrins.h>
#define LED P2
sfr WDT = 0xa6;
void delay(unsigned long count) ;
void main(void)
{ unsigned int ver_led;
unsigned int i ;
TMOD = 0x02;
IE = 0x82;
TH0 = 6;
TL0 = 6;
TCON = 0x10;
WDT = 0x1e;
WDT = 0xe1;
ver_led = 0xfe;
LED = ver_led;
delay(20000);
while(1)
{ for(i = 0;i < 7; i ++)
{ ver_le