原创 AVR学习笔记之PWM_0

2011-2-26 19:25 1577 10 10 分类: MCU/ 嵌入式

说明:没有示波器的童鞋,大家可以在PB4口接出一个LED灯看出这个波形的大致效果,建议不要用PB4口直接去驱动直流电机,因为没有驱动芯片,驱动电流太小,电机难以启动,由于电机内部没有反电动势产生,电流会全部被线圈电阻消耗,导致电机发热可能损坏电机!
此列是快速PWM模式运行的定时器T0:

#include <iom128v.h>
#include<macros.h>

#define uint unsigned int
#define uchar unsigned char

void delay_ms(uint n)
{
 uint i=0,j;
 while(i<n)
   {for(j=0;j<1000;j++);
      i++;
   }
}

void pwm0_init(void)
{
 DDRB |= BIT(PB4);
 TCCR0 = 0X00;
 OCR0 = 0X7F;     //8位的定时计数器的初值设定为0x7f
 TCNT0 = 0;       //计数器
 TCCR0 = 0X6A;    //设置为快速pwm模式,采取8分频
}
void main(void)
{
 uchar wide;
 
 pwm0_init();
 
 while(1)
 {
  delay_ms(10);
 //   if(++wide==255)  //可以不用写这个,因为是unsigned char的wide变量,加到255后会自变零的。
 //    wide=0;
   OCR0=wide++;
 }
}


文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /2 下一条