c语言定时器10分钟延时,大神帮我看看51单片机用定时器延时C语言错在哪儿啊?...

该博客讨论了微控制器程序中关于延时计算的错误和数据类型理解的误区。作者指出,对延时函数的计数错误可能导致实际延迟与预期不符,并解释了如何正确使用无符号字符数据类型。此外,还提出了定时器使用的改进方案。通过修复这些错误,程序的效率和准确性得到了提升。
摘要由CSDN通过智能技术生成

错误1.对延时的计算次数是错误的

错误2.对数据类型unsigned char认识是错误的

错误3.对定时器的使用是不恰当的

按照你的意图给你修改了程序,希望对你有所帮助

#include //定义头文件

#include //定义头文件

#define uchar unsigned char //宏定义 unsigned char= uchar

#define uint unsigned int //宏定义 unsigned int =uint

/

void delay(uint z)

{

uint x,y;//声明x,y的变量类型

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

for(y = 120;y > 0;y--);//比如说Z=100.意思就是Z=100*Y=100*120=1200,这个程序执行了1200次,跳出程序,实现延时。?????

}                                                                                                              //延时=循环100*120=12000次

uchar temp;//定义整型类型temp=-128~127 ?????

//定义无符号字符型数据类型temp=0~255

uchar i,j;

///

void delay1()

{

if(TF0 == 1)

{

TF0 = 0;

i++;

if(i==10)

{

i=0;

j=1;

}

}

}

void main()

{

i=0;

j=0;

TMOD = 0X01;

TH0 = 0;

TL0 = 0;

TF0 = 0;

TR0 = 1;

delay(100);

while(1)

{

delay1();//延时655.32ms

if(j==1)

{

j=0;

P1=~P1;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值