打印
[技术问答]

n76e003的问题是能帮我看看吗

[复制链接]
634|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
帅的一|  楼主 | 2019-8-20 16:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当我收到频率小于1000的时候 PWM增大情况有点问题 一直会先减小再增大而且增大的速度非常慢 在给予频率大于1000的时候PWM的减小很正常的
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"
#include "stdio.h"
#define uchar unsigned char
#define uint unsigned int
uint jici=0,pinlv=0,count=0,jishu=0,fangbo=1000,spl=0;

void delay(uint xms);
void dis();
void delay1(int ms)      // 延时1ms函数
{
unsigned char y;
  while(ms--)
{
  for(y = 0; y<250; y++)
  {
   _nop_();
   _nop_();
   _nop_();
   _nop_();
  }
}
}
void Timer0_ISR(void)interrupt 1  // 中断函数
{
              jici++;
              TH0=1536/256;
              TL0=1536%256;
       if(jici==250)             //1S后进入运算
       {
              jishu=jici;       //赋值
              TR0=0;            //关闭 定时器t0
              spl=8000000/count;//频率的计算
              pinlv=spl;      
              TL1=TH1=0;      
              count=0;
              jici=0;
              spl=0;
              TR0=1;             //打开定时器t0
       }
}

void dis()        //
  {  
         if(jishu==250)    //1S后进行运算
    {   
                         if (pinlv<1000)      //当频率小于1000HZ的时候
                                   {
                                          clr_LOAD;     
                                     set_SFRPAGE;         
                    fangbo=fangbo+50;  //PWM输出增加
                                     PWM5H = fangbo/256;
                 PWM5L = fangbo%256;                              
                                          clr_SFRPAGE;
                                          set_LOAD;                        
                                          jishu=0;
                                          if (fangbo>=1995)
                                          {fangbo=1945;}
                                   }
                                 
          else if (pinlv>1000)    // 当频率大于1000HZ
                                   {
                                          clr_LOAD;     
                                     set_SFRPAGE;         
                                          fangbo=fangbo-50;   //PWM输出减少
                                     PWM5H = fangbo/256;
                 PWM5L = fangbo%256;                              
                                          clr_SFRPAGE;
                                          set_LOAD;                        
                                          jishu=0;
                                          if (fangbo<=5)
                                          {fangbo=55;}
                                   }
                    
     }
       }

void main()
{   
      Set_All_GPIO_Quasi_Mode;
           PWM5_P03_OUTPUT_ENABLE;     //使P03输出PWM5信号
           PWM4_P01_OUTPUT_ENABLE;
           clr_PWMTYP;
           clr_PWMMOD0;
           clr_PWMMOD1;
           PWM_CLOCK_DIV_8;            //进行分频
           PWMPH = 0x07;
           PWMPL = 0xCF;      
          set_SFRPAGE;
          PWM5H = fangbo/256;
          PWM5L = fangbo%256;
          PWM4H = 1000/256;
          PWM4L = 1000%256;
          clr_SFRPAGE;
             set_LOAD;
                set_PWMRUN;//PWM开始输出                     
      P00_Input_Mode;              //P00作为输入模式
           P00 = 1;                  
           set_ENF0;                 //打开0通道噪声滤波
           TIMER2_CAP0_Capture_Mode;      //采用CAP0组捕获信道
           IC3_P00_CAP0_BothEdge_Capture; //设定P00通过CAP0通道,双边沿触发           
            TIMER0_MODE1_ENABLE; //定时器0 模式1 启用
                     TH0=1536/256;
                     TL0=1536%256;
                     set_ECAP;        //打开输入捕获中断
      set_TR2;                        //定时器2计数器 开始
                     set_ET0;
                     set_EA;          //开启总中断
                     set_TR0;
while(1)
{
dis();

}
}
void Capture_ISR (void) interrupt 12
{
    clr_CAPF0;                   // 清除中断标志                       
              count=(C0H*256)+C0L;  
              clr_TF2;     //清除定时器2中断标志      
         delay1(1);
}





            
      

使用特权

评论回复
沙发
antusheng| | 2019-8-20 19:57 | 只看该作者
功能分块,函数化。

使用特权

评论回复
板凳
gejigeji521| | 2019-8-20 21:36 | 只看该作者
看起来没啥大问题,编程风格有待提高,难易理解。

使用特权

评论回复
地板
帅的一|  楼主 | 2019-8-21 08:24 | 只看该作者
antusheng 发表于 2019-8-20 19:57
功能分块,函数化。

好的

使用特权

评论回复
5
wahahaheihei| | 2019-8-22 17:30 | 只看该作者
减小很明显吗

使用特权

评论回复
6
598330983| | 2019-8-24 09:36 | 只看该作者
程序的风格都有问题

使用特权

评论回复
7
小明的同学| | 2019-8-27 00:30 | 只看该作者
一般会先完成当前的周期后,才会加载新的配置。

使用特权

评论回复
8
dongnanxibei| | 2019-8-27 13:09 | 只看该作者
这么写,很难懂的。

使用特权

评论回复
9
wanduzi| | 2019-8-27 23:49 | 只看该作者
先设计功能,再实现底层。

使用特权

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

本版积分规则

4

主题

7

帖子

0

粉丝