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

📄 tc1_5.c

📁 arm的功能测试模块
💻 C
字号:
/*****************************************************
****  AVR T/C1 使用范例5(PWM输出实现两路DAC)     ****
****  T/C1快速PWM模式,11位分辨率,计数顶值是ICR1 ****
****       作者:  liugangdi                      ****
****       编译器:WINAVR20050214                 ****
****       日期:2005.11.26                       ****
******************************************************/

/*功能简单说明: 此例子用TC1的OC1A和OC1B引脚输出占空比可
调的信号经过外部的低通滤波就可以产生相应的模拟信号。外
面加一个按键输入,按一下按键,就可以调高输出电平。
补充说明:计数器的初始化,在使用PWM之前需要做很多初始化,
包括相应I/O的方向,把PD5,PD4要设置为输出;计数器时钟频率
的选择;PWM模式的选择;PWM分辨率的设置以及决定占空比的OCR1A
和OCR1B的初始值。此例子的实现需要在mega16实验板周围在用个通
用板加低通滤波电路和一些按键。*/

//用proteus仿真说明:在proteus中仿真一切正常

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/delay.h>
#include <stdio.h>

#define uchar unsigned char

#define  PWMOUT       PD5      //A通道PWM输出
#define  PWMOUTB      PD4      //B通道PWM输出
#define  OCRA         OCR1A    //OCR=OCR1A
#define  OCRB         OCR1B    //OCRB=OCR1B
#define  PORTPWMOUT   DDRD     
#define  KEY_UP       PA0      //PA0(PIN40)设置为增大PWM值的按键
#define  KEY_DOWN     PA1      //PA1(PIN439)设置为减小PWM值的按键
#define  LED_ABOVE    PA2      //PA2(PIN38)设置为值过高指示
#define  LED_BELOW    PA3      //PA3(PIN37)设置为值过低指示,吸收电流的接法
#define  KEY_UPB      PA4      //PA4(PIN36)设置为增大PWM值的按键
#define  KEY_DOWNB    PA5      //PA5(PIN435)设置为减小PWM值的按键


//系统初始化函数,所有初始化工作都应完成
void init(void)
{
 TCCR1A|=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM11);   //0XA2
 TCCR1B|=(1<<WGM13)|(1<<WGM12)|(1<<CS10);       //OX19
                    //11位分辨率,快速PWM模式,PWM的计数顶值为ICR1的值,使用系统时

⌨️ 快捷键说明

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