立即注册 登录
返回首页

uid:369359的个人空间

日志

利用脉宽调制实现呼吸灯

已有 532 次阅读2018-7-11 11:46

#include "ioCC2530.h"

#define  LED1   P1_0

 

unsigned char pwm_period = 100; //定义PWM的周期

unsigned char pwm_duy = 90;     //定义PWM的占空比

unsigned char t_count = 0;      //间隔定时次数累计

 

/*==================端口初始化函数======================

功能:初始化LED1SW按键

      P1_0设置为通用I/O端口的输出模式

      关闭LED1

========================================================*/

void Init_Port()

{

  P1SEL &= ~0x01;  //P1_0设置为通用I/O端口

  P1DIR |= 0x01;   //P1_0设置为输出方式

  LED1 = 1;        //输出1--关灯,输出0--开灯

}

 

/*=================定时器1初始化函数=====================

功能:初始化定时器1

      使用内部16MHz晶振,定时周期1ms

      使用模模式,开启通道0的输出比较模式,

      分频系数8,打开相应的定时中断

========================================================*/

void Init_Timer1()

{

  /*=内部16MHz晶振8分频定时0.1ms的最大计数值为0x00c8=*/

  T1CC0L = 0xc8;    //设置最大计数值的低8

  T1CC0H = 0x00;    //设置最大计数值的高8

  T1CCTL0 |= 0x04;  //开启通道0的输出比较模式

  T1IE = 1;         //使能定时器1中断

  T1OVFIM = 1;      //使能定时器1溢出中断

  EA = 1;           //使能总中断

  T1CTL = 0x06;     //分频系数是8,模模式

}

 

/*================定时器1中断服务函数====================

功能:1ms间隔定时中断服务函数

      对间隔定时次数进行累加,即t_count++

      t_count < pwm_duy, 输出高电平

      pwm_duy < t_count < pwm_period, 输出低电平

      t_count = pwm_periodt_count0,输出高电平

      每完成一个PWM改变一个占空比,实现呼吸灯

========================================================*/

#pragma vector = T1_VECTOR

__interrupt void Timer1_Sevice()

{

  T1STAT &= ~0x01;        //清除定时器1通道0中断标志

  t_count++;              //对间隔定时次数进行累加

  if(t_count < pwm_duy)            //高电平周期到

  {

    LED1 = 1;                    

  }

  else if(t_count < pwm_period)   //低电平周期到

  {

    LED1 = 0;                    

  }

  else                  //准备开始下一个PWM输出

  {

    LED1 = 1;

    t_count = 0;        //间隔定时累加清0

    pwm_duy--;

    if(pwm_duy == 1)

    {

      pwm_duy = 90;

    }

  }

}

 

/*=====================主函数===========================*/

void main()

{

  Init_Port();        //初始化I/O端口

  Init_Timer1();      //初始化定时器1

  while(1);

}


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

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

Powered by 单片机教程网

返回顶部