⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 通过对PWM占空比的调节实现现指示灯的渐亮的功能* 当占空比为100%时再从0%逐渐增加
💻 C
字号:
/*-----------------------------------------------------*
*工 程 名:PWM.prj                                      *
*硬件接线:PTD.4,即定时器1通道0(21脚)接指示灯或蜂鸣器   *
*程序描述:通过对PWM占空比的调节实现现指示灯的渐亮的功能*
*         当占空比为100%时再从0%逐渐增加             *
*目    的:学习HC08系列定时器脉宽调制功能               *
*---------《嵌入式应用技术基础教程》教学实例----------*/
/*[头文件]*/
#include "GP32C.H"               //包含头文件
/*函数声明*/
void PWMInit(unsigned int );     //PWM初始化
void PWMconf(unsigned int);      //PWM设置
extern void Delay_ms(unsigned char );   //延时
/*主程序*/
void main()
{     
      unsigned int  Period;   //PWM周期
      unsigned int  Duty;     //PWM占空比
      //[变量初始化]
      Period =0x0180;  //PWM周期默认为10ms
      //[PWM初始化]
      PWMInit(Period);
      Duty = 0;        //PWM占空比为0
      //[主循环]
      while(1)
      {
        //[判断脉宽是否达到周期的长度(占空比为100%)]
        if(Duty<Period)            
          Duty=Duty+1;     //PWM占空比加1
        else    //占空比达到100%,设置占空比为0%
          Duty=0; 
      T1SC|=(1<<5);        //停止定时器1计数器计数
      //[设置PWM脉宽]
      T1CH0H = (Duty>>8);  //设置高字节
      T1CH0L = Duty;       //设置低字节
      T1SC&=~(1<<5);       //允许定时器1计数器计数     
        Delay_ms(10);      //延时10ms
      }                
   }
/*PWMconf:PWM初始化设置--------------------------------*
* 功  能:PWM脉冲周期、占空比的设置                     *
* 参  数:rate=脉宽时钟数,cyc=脉冲周期时钟数            *
* 返  回:无                                            *
*-----------------------------------------------------*/
void PWMInit(unsigned int Period)
{    
    unsigned int Temp=Period;
    //不允许溢出中断,不启动计数,分频因子=64,置位TSTOP,TRST
    T1SC = 0x36;        
    //[设置PWM周期]
    T1MODH = (Temp>>8);     
    T1MODL = Period;      
    //[初始化设置PWM脉宽为0]
    T1CH0H = 0x00;
    T1CH0L = 0x00;
    //设为PWM模式,不允许输出比较中断,输出低电平,不带缓冲
    T1SC0  = 0x1E;      
    //允许定时器1计数寄存器计数           
    T1SC  &= 0xDF;      
}    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -