📄 pwm._c
字号:
/*************************
NAME: PWM.C
DATA: 2007/7/9
AUTHOR: MICHAEL
SOFTWARE: ICCAVR6.31
MCU: ATMEGA8L
8.000000MHz
*************************/
#include <iom8v.h>
#include <macros.h>
//-----------------------------------------------------------------------
// 初始化函数
//-----------------------------------------------------------------------
void initial_PWM(void)
{
DDRB=0XFF;
PORTB=0XFF;
TCCR2=0X69;
OCR2=0X00; //设置比较数值
}
//----------------------------------------------------------------------------------
// 8位快速PWM函数(输出频率为Fout=Fio/N*256,N是分频数)
//----------------------------------------------------------------------------------
void Fast_PWM(unsigned char PWMdata)//PWMdata越大,占空比越小
{
TCCR2=0X69; //快速PWM模式,时钟为I/O时钟不分频
// TCCR2=0X7A; //快速PWM模式,时钟为I/O时钟8分频
// TCCR2=0X7B; //快速PWM模式,时钟为I/O时钟32分频
// TCCR2=0X7C; //快速PWM模式,时钟为I/O时钟64分频
// TCCR2=0X7D; //快速PWM模式,时钟为I/O时钟128分频
// TCCR2=0X7E; //快速PWM模式,时钟为I/O时钟256分频
// TCCR2=0X7F; //快速PWM模式,时钟为I/O时钟1024分频
TCNT2=PWMdata;
OCR2=PWMdata; //设置比较数值
}
#pragma interrupt_handler USART_receive: 12
//------------------------------------------------------------------
// USART初始化函数
//------------------------------------------------------------------
void initial_USART(void)
{
//-----端口设置--------
PORTB = 0xFF;
DDRB = 0xFF;
PORTC = 0x00;
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0xFF;
//------USART设置-------
UCSRA=0X00; //波特率不加倍,同时清空一些标志位
UCSRB=0X98; //使能接收和发送,数据位为8位,开接收中断
UCSRC=0X86; //异步方式,禁止奇偶校验,数据位为8位
//时钟频率8M,波特率9600
UBRRH=0X00;
UBRRL=0X33;
//时钟频率8M,波特率57600
// UBRRH=0X00;
// UBRRL=0X08;
SEI(); //全局开中断
} //发送移位缓冲器中的数据被送出,且当发送缓冲器 (UDR) 为空时TXC 置位
//--------------------------------------------------------------
// 接收中断服务函数
//--------------------------------------------------------------
void USART_receive(void)
{
unsigned char RECdata;
RECdata=UDR;
Fast_PWM(RECdata);
}
//-----------------------------------------------------------------------
// 主函数
//-----------------------------------------------------------------------
void main(void)
{
initial_PWM();
initial_USART();
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -