打印
[51单片机]

定时器怎么输出高电平为1s低电平为2s,不用中断

[复制链接]
2640|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1349236685|  楼主 | 2014-12-23 09:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
wangch_sh| | 2014-12-23 10:12 | 只看该作者
查询,计数器,标志位。

使用特权

评论回复
板凳
1349236685|  楼主 | 2014-12-23 11:07 | 只看该作者
wangch_sh 发表于 2014-12-23 10:12
查询,计数器,标志位。

大神,能具体点吗?有点不明白啊~~谢谢~~

使用特权

评论回复
地板
wangch_sh| | 2014-12-23 11:29 | 只看该作者
比如设置定时器周期5ms。主程序中查询溢出标志位,到了计数器加1,加到200为1秒,标志位置1,输出高电平。
输出低电平于此类似。

使用特权

评论回复
5
1349236685|  楼主 | 2014-12-23 12:14 | 只看该作者
wangch_sh 发表于 2014-12-23 11:29
比如设置定时器周期5ms。主程序中查询溢出标志位,到了计数器加1,加到200为1秒,标志位置1,输出高电平。
...

这个我明白,那高电平输出1s,低电平输出2s,怎么设置?

使用特权

评论回复
6
wangch_sh| | 2014-12-23 13:05 | 只看该作者
设置定时器周期5ms。主程序中查询溢出标志位,到了计数器加1,加到400为2秒,输出低电平。

使用特权

评论回复
7
玄德| | 2014-12-23 16:47 | 只看该作者
本帖最后由 玄德 于 2014-12-23 16:48 编辑

如果是软件产生,就是计时、改IO,几个动作串起来。

所以,你要会设置定时器,会计算定时长度,会查询计数值,会改IO口。
就是这样。


使用特权

评论回复
8
huayuliang| | 2014-12-23 17:43 | 只看该作者
好好看书,就该明白中断方式和非中断方式有啥区别了··

使用特权

评论回复
9
xujuanliang| | 2014-12-23 18:15 | 只看该作者
什么单片机晶振是多少 ? 延时子程序我还是会的  我可以帮你搞定

使用特权

评论回复
10
1349236685|  楼主 | 2014-12-24 12:10 | 只看该作者
xujuanliang 发表于 2014-12-23 18:15
什么单片机晶振是多少 ? 延时子程序我还是会的  我可以帮你搞定

51单片机  12M晶振  我就是一个初学者。。。谢谢大神。。。这是我写的,用protues仿真,波形都乱了。。。
#include<reg51.h>

sbit put=P1^7;
int i;

void main()
{
        TMOD=0x11;  //T0工作在方式1下,16位定时功能
        TH1=0xfc;   //装计数器初值1ms  TH0和TL0       
        TL1=0x18;
    TF1=0;      //清除TF0标志位
        TR1=1;       
         while(1)
         {
                if(TF1==1)    //判断T0溢出标志位是否为1
                {
                  put=~put;   //溢出后端口取反
                  for(i=0;i++;i<2)
                {  
                  
                          TF1=0;      //清除TF0溢出标志位
                      TH1=0xfc;   //装计数器初值1ms
                  TL1=0x18;
                          
               
                 }
                  
                }
        }
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

71

帖子

0

粉丝