打印

飞思卡尔AD控制灯闪烁频率

[复制链接]
1014|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Amyhuangmei|  楼主 | 2017-12-25 17:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新手菜鸟一枚~想用飞思卡尔的xs128写一个用AD可调电阻变化值来控制LED灯闪烁的频率,可程序老写不对(哭哭)~求助大神有程序参考的吗?????

相关帖子

沙发
Cjy_JDxy| | 2017-12-26 14:28 | 只看该作者
你是怎么写的呢?贴出来看看

使用特权

评论回复
板凳
ningling_21| | 2017-12-26 18:58 | 只看该作者
有流程图没

使用特权

评论回复
地板
Amyhuangmei|  楼主 | 2017-12-29 09:59 | 只看该作者
问题已经解决了~之前忘了数据溢出的问题了,就是用可调电阻调节定时的时间参数实现的~具体程序待会儿会贴出来

使用特权

评论回复
5
Amyhuangmei|  楼主 | 2017-12-29 10:18 | 只看该作者
因为这个直接用MC9S12XS128汽车电子开发板写的了,所以相关的寄存器设置没有贴上来~觉得自己思路不好~不知道各位有什么好的想法吗?
void main(void)
{
  DisableInterrupts;
  INIT_PLL();
  //initialize_ect();
  INIT_port();
  INIT_AD();
  LEDCPU_dir=1;
  LEDCPU=0;
  EnableInterrupts;


  //T**1_C0F = 1;
// TC0 = TCNT + 1250;       //设置输出比较时间为5ms
  
  
// T**1_C1F = 1;
  //TC1 = TCNT + b;

  for(;;)
  {
    delay();
    AD_in = AD_capture();
    AD_final = AD_final*7/8+AD_in/8;   //滤波以消除抖动
    cycle+=1;
    if(cycle>=500)
    {
        cycle=0;                  //计算电压的显示值的各位
        dianya=(unsigned int)((unsigned long)AD_final*5000/4095);
        data1 = dianya/1000;
        data2 = (dianya%1000)/100;
        data3 = (dianya%100)/10;
        data4 = dianya%10;
        data1 = data1+10;         //加小数点
        
         a=(dword)((dword)AD_final*5/4095);
         b=a*250000;
    }
  }
}


interrupt 9 void LEDS_ISR(void)  //定时中断函数
{
  static int count=0;
   if(T**1_C1F == 1)
  {
    T**1_C1F = 1;
    TC1 = TCNT + b/20;         //设置输出比较时间
     
   // while(T**1_C1F==0);  
   count++;
   if(count==20)
   {
     count=0;
     LEDCPU=~LEDCPU;
   
   }
   
  }



}  

使用特权

评论回复
6
zqx1000| | 2018-4-10 22:24 | 只看该作者
kankan

使用特权

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

本版积分规则

4

主题

20

帖子

1

粉丝