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开
}
}
我是这样考虑的,用定时器T0的工作方式一,定时10ms。
用for语句的循环功能,对其循环控制。
z等于几,就是循环几次,也就是说延时几个10ms。
如果不满足for中的表达式2,则进入语句,进行动作,然后再求解表达式3.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这个我就没有用中断,就是用定时器。
比较常见 用中断给定时器重新赋值
这个程序我想的是 进入一次循环 重新赋值一次
能不能指点一下什么地方不好?
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毫秒。
这个跟中断开不开没关系吧, 不知道这样对不对???
用定时器了,中断必须开么?
一周热门 更多>