飞思卡尔8位单片机MC9S08 10 程序 PWM编程C语言例10.5.5 PWM编程C语言例
实例编号:C05_3 路径:\C\C05_3PWM脉冲信号输出(PWM.prj)
/*-----------------------------------------------------*
*工 程 名:PWM.prj *
*硬件接线:PTD.4,即定时器1通道0(21脚)接指示灯或蜂鸣器 *
*程序描述:通过对PWM占空比的调节实现现指示灯的渐亮的功能*
* 当占空比为100...
10.5.5 PWM编程C语言例
实例编号:C05_3 路径:\C\C05_3PWM脉冲信号输出(PWM.prj)
/*-----------------------------------------------------*
*工 程 名: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
>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;
}
本文档为【飞思卡尔8位单片机MC9S08 10 程序 PWM编程C语言例】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。