这个51单片机流水灯代码有什么问题,他一直都是常亮,都没有闪烁过

2025-04-05 18:32:00
推荐回答(4个)
回答1:

//51单片机流水灯代码,可以参考这个,试试

#include

#define uchar unsigned char

#define uint unsigned int

unsigned char TAB[]= {0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff,0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e}; // 改变这里 LED 各种花样

uchar t,i;

void main()

{

TMOD=0x10;

TH1=(65535-50000)/256;  // 50ms一次

TL1=(65535-50000)%256;

EA=1; 

ET1=1;//开定时器1中断

TR1=1;//启动定时器1

t=0;

i=0;

while(1)

{

}

}

void timer1() interrupt 3

{

TH1=(65535-50000)/256;  // 50ms一次

TL1=(65535-50000)%256;

t++;

if(t==20)

{

t=0;

P1=TAB[i];

i++;

if(i==16) { i=0;}

}

回答2:

你好,无符号整形也就是unsigned int 值得范围是0到65535 超过这个值就没有用了。联系采用这样的延时函数 调用就是delay 多少

回答3:

你的程序编写的不对,delay延时函数溢出了,void delay(unsigned int ch)
{while(i--);}
这样就可以了

回答4:

你把你delay传入的参数改小一点试试,改成小于65535