找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1698|回复: 4
收起左侧

关于单片机D/A数据转换的程序疑问

[复制链接]
ID:385004 发表于 2018-8-18 18:59 | 显示全部楼层 |阅读模式
里面count>100这个条件的运用是干嘛的?不能直接开始占空比的+吗?

void main()
{
Timer1Init();
while(1)
{
  if(count>100)      
  {  
   count=0;
   if(DIR==1)        
   {
     value++;
   }   
   if(DIR==0)
   {
     value--;
   }
   
  }
  if(value==1000)
  {
    DIR=0;
  }
  if(value==0)
  {
    DIR=1;
  }
   
  if(timer1>1000)  //PWM?????1000*1us
  {
   timer1=0;
  }
  if(timer1 <value)
  {
   PWM=1;
  }
  else
  {
   PWM=0;
  }  
}  
}

void Time1(void) interrupt 3   
{
TH1 = 0xFF;
TL1 = 0xff;   //1us
timer1++;
    count++;

}


回复

使用道具 举报

ID:385004 发表于 2018-8-19 14:04 | 显示全部楼层
xuyaqi 发表于 2018-8-19 11:48
“count>100这个条件的运用”是用来延时的。

我知道是用来延迟的,但它延迟的目的是什么?
回复

使用道具 举报

ID:385004 发表于 2018-8-19 14:03 | 显示全部楼层
HC6800-ES-V2.0 发表于 2018-8-19 08:02
这个变量count可能(没有程序全部,只能靠猜)是PWM的周期,为什么是大于100而不是等于100呢?那是因为定时器 ...

由value++到1000可以知道周期是1ms,它只加到100。
回复

使用道具 举报

ID:94031 发表于 2018-8-19 11:48 | 显示全部楼层
“count>100这个条件的运用”是用来延时的。
回复

使用道具 举报

ID:164602 发表于 2018-8-19 08:02 | 显示全部楼层
这个变量count可能(没有程序全部,只能靠猜)是PWM的周期,为什么是大于100而不是等于100呢?那是因为定时器中断的缘故。
你想嘛:当count正好100时,你的程序是不是能正好执行到这条语句呢?如果不是“正好”,那么,就永远也不会有这个判断了,所以是大于。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表