ATMEGA16的PWM仿真代码

  • 名称:ATMEGA16的PWM仿真代码
  • 类型:单片机学习
  • 授权方式:免费版
  • 更新时间:09-10 23:01:29
  • 下载要求:无需注册
  • 下载次数:6133
  • 语言简体中文
  • 大小:1.44 MB
  • 推荐度:3 星级
《ATMEGA16的PWM仿真代码》简介

标签:单片机开发,单片机原理,

ATMEGA16的PWM仿真代码
/*晶振为4MHz*/
/*利用Timer1的OC1A脚输出占空比可调的信号*/
/*通过按键控制OCR1A的值*/
/*/

#define PwmOut PD5 //A通道的PWM输出
#define OCR OCR1A
#define KeyUp PA0 //增大PWM值的按键
#define KeyDown PA1 //减小PWM值的按键
#define Above PA2 //设置位值过高指示
#define Below PA3 //设置位值过低指示
#define STEP 64 //定义按键时的步进值
int OcrReg = 1024; //OCR1A初始值
int Icr1Reg = 0x7ff; //PWM的计数顶部值 Icr1Reg = 2047
//unsigned char *show = "0000";
unsigned char temp;

void init(void) //初始化函数
{
//比较匹配时清零,计数到最大时置位OC1A
TCCR1A |= (1<<COM1A1)|(1<<WGM11);
//11位分辨率,快速PWM模式,使用系统时钟作为计数时钟
TCCR1B |= (1<<WGM13)|(1<<WGM12)|(1<<CS10);
ICR1 = Icr1Reg;
OCR = 0 ;
DDRD |= (1<<PwmOut); //置PWM为输出
DDRA |= (1<<Above)|(1<<Below); //指示灯定义为输出 字串6
DDRA &= ~((1<<KeyUp)|(1<<KeyDown)); //按键定义为输入
PORTA |= (1<<KeyUp)|(1<<KeyDown); //按键开启上拉
PORTA |= (1<<Above)|(1<<Below); //关闭两个指示灯
//TIMSK |= (1<<OCIE1A); //允许计数器比较匹配中断
//SREG |= (1<<7); //开全局中断
} 字串6

, 大小:1.44 MB
Tag:单片机学习单片机开发,单片机原理单片机学习