首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

定时器水流灯程序

2012-08-07 
定时器流水灯程序#includereg52.h#define uint unsigned int#define uchar unsigned charvoid delay(uch

定时器流水灯程序
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

void delay(uchar n)
{
  delay:TH0=(65536-50000)/256;
TL0=(65536-50000)%256;  
while(!TF0)
TF0=0;
n--;  
if(n)
goto delay;
TR0=0;

void main()
{
  uchar b,c,i,temp;
  TMOD=0X01;
  EA=1;
TR0=1;
ET0=1;
TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;

  loop:
  temp=0xfe;
for(i=0;i<8;i++)
{
b=temp>>(8-i);
c=temp<<i;
P0=b|c;
delay(20);
}
temp=0x7f;
for(i=0;i<8;i++)
{
b=temp<<(8-i);
c=temp>>i;
P0=b|c;
delay(20);
}
goto loop;


}
我的这个程序怎么起不到流水灯的作用呢, 有人说我这个缺少定时器函数。可是我看书上就这么写的啊。难道错了,希望大家帮帮忙,给我看看,或者给个相关的程序。要定时器控制流水灯左移右移,不单边移动。

[解决办法]
程序太长了,看着头疼

[解决办法]
你的程序有点乱 给你个参考
#include <reg51.h> 

#define uchar unsigned char 
#define uint unsigned int 


unsigned char buf[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

uchar temp; 
uchar tt;
void main() 

TMOD=0X01; 
TH0=(65536-50000)/256; 
TL0=(65536-50000)%256; 
EA=1; 
ET0=1; 
TR0=1; 
 
 while(1) 

P0=buf[tt];





void timer0() interrupt 1 

TH0=(65536-50000)/256; 
TL0=(65536-50000)%256; 

tt++; 
if(tt==8) tt=0; 



[解决办法]
#include<reg51.h>
 sbit Switch=P2^0;
 void main(void)
{
bit direction;
long int i;
unsigned char a=0xfe,b,c;
P1=0xff;
Switch=1;
if(!Switch)
for(i=0;i<100;i++)
if(Switch) break;

 while(1)
{
P1=a;
if(!direction)
{
if(a==0xbf)
direction=1;
b=a<<1;
c=a>>7;
a=b|c;

}
else
{if(a==0xfd)
direction=0;
b=a>>1;
c=a<<7;
a=b|c;
}
for (i=0;i<=300000;i++);
}
}


这个试试。

热点排行