微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于c51定时器的问题,while(1)的应用

关于c51定时器的问题,while(1)的应用

时间:10-02 整理:3721RD 点击:
定时器0工作在2模式下,采用中断计时,计数满100,p0口0位改变电位。
示波器显示周期为51.2ms,为什么去掉while(1){ },周期变为512us,求解释。
还有就是定时器在工作的时候,能不能对TH0,TL0进行赋值。
#include<reg52.h>
sbit p00=P0^0;
static unsigned int i;
void main()
{
EA=1;
ET0=1;
TMOD=0x02;
TR0=1;
TH0=0;TL0=0;
while(1){ }
}
void T0_int () interrupt 1
{i++;
if(i>=100){i=0;p00=!p00;}
}

谢谢  学习

正在学习

支持下

可以赋值啊,也可以在中断里面赋值

在void main()
{
   
}中可以对TH0   和TL0进行赋值,但在中断函数中可以不用赋值,因为方式2 可以自动重载

while(1){ },你把这句 取消后,输出信号不是由定时器控制的了,是程序不停在跑飞,复位给出的信号!

程序跑飞?怎么周期正好是1000倍啊。main()里面的语句是不是执行完最后一行就接着从main()第一条语句重新循环?

理论上是执行完最后一句后就从第一句重新开始执行。但是这并没有可靠的依据。

同意楼上 的说话  所以经常要用死循环的啦

对定时器TH0 TL0赋值一般是在子函数中赋值,小编的程序TH0 TL0都赋值为0.这部感觉没必要。赋值的意思就是定时器在多久后要开始工作。

while去掉就程序就等于是死掉了,8位工作方式只需要赋值一次就够了啊

请问一下,如果没有while(1);这条语句的话,程序在从main()函数往下运行的时候,遇到中断,并且在执行完中断函数后,下一步要返回主函数继续运行,请问他是从主函数哪里继续运行下去?我这个地方不是很理解啊,求指教。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top