微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 如果延时程序这样写 对不对?

如果延时程序这样写 对不对?

时间:10-02 整理:3721RD 点击:
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.

这种方式感觉不是很好

不对吧,你中断允许都没打开
而且单片机只识别中断号的
你这样写中断号在哪?

这个我就没有用中断,就是用定时器。
比较常见  用中断给定时器重新赋值  
这个程序我想的是  进入一次循环 重新赋值一次

能不能指点一下什么地方不好?

定时器写错了,而且你是延时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中断一次, 在中断里面, 可以做很多延时的东西.  不会一个定时器只能用于做一件事情.

学习了                                    

大侠
是这样的
我现在做一个实验,目的就是应用定时器,而不用中断。
因为工作方式一,的值溢出之后,还得重新赋值么
我就是想知道这样循环的方式   去赋值  行不行 同时达到了延时的目的。

上一篇:实现spi通信
下一篇:单片机毕业设计

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

网站地图

Top