如果延时程序这样写 对不对?
{
uint x;
TMOD=0x01;//T0选择工作方式一,16位定时器
TR0=0;//T0关
for(x=z;x>0;x--)
{
TH0=(65536-55536)/256;
TL0=(65536-55536)%256;//定时10ms
TR0=1;//T0开
}
}
我是这样考虑的,用定时器T0的工作方式一,定时10ms。
用for语句的循环功能,对其循环控制。
z等于几,就是循环几次,也就是说延时几个10ms。
如果不满足for中的表达式2,则进入语句,进行动作,然后再求解表达式3.
这种方式感觉不是很好
不对吧,你中断允许都没打开
而且单片机只识别中断号的
你这样写中断号在哪?
这个我就没有用中断,就是用定时器。
比较常见 用中断给定时器重新赋值
这个程序我想的是 进入一次循环 重新赋值一次
能不能指点一下什么地方不好?
定时器写错了,而且你是延时55536的时间。间的数才是延时的时间,比如这个就是延时50毫秒
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
void delay(uint z)
{
uint x;
TMOD=0x01;//T0选择工作方式一,16位定时器
TR0=0;//T0关
for(x=z;x>0;x--)
{
TH0=(65536-55536)/256;
TL0=(65536-55536)%256;//定时10ms
TR0=1;//T0开
}
}
这个程序里的定时器 我设定的时间是10毫秒
加上一个for循环
如果z=5,然后这个delay(5);就延时50毫秒。
这个跟中断开不开没关系吧, 不知道这样对不对?
用定时器了,中断必须开么?
有点浪费定时器
就是想知道这样对不对!
不用这个做项目
我也想说, 定时器这样用, 太浪费了. 你可以用一个定时器, 定一个最小中断时间, 比如定时器0, 每1ms中断一次, 在中断里面, 可以做很多延时的东西. 不会一个定时器只能用于做一件事情.
学习了
大侠
是这样的
我现在做一个实验,目的就是应用定时器,而不用中断。
因为工作方式一,的值溢出之后,还得重新赋值么
我就是想知道这样循环的方式 去赋值 行不行 同时达到了延时的目的。