关于avr mega644单片机的虚拟串口通信的定时器设置
时间:10-02
整理:3721RD
点击:
用软件实现UART功能时需消耗一定的处理器资源,通常实现完整的UART则需要一个定时器,一个外部中断和两个用于接收和发送的普通IO。一般则需要完成以下4个步骤:
1.将输入输出IO口初始化(port_init())
2.配置定时器
3.中断使能
4.收发函数
下面主要显示定时器0设置函数(注意对芯片手册的TCCR0仔细阅读),中断函数则需要根据收发函数来进行编程。
void timer0_init(void)
{
TCCR0A = (1<<WGM01);
TCCR0B = (1<<CS01); /* 预分频值8, CTC模式 */
TIMSK0 = (1<<OCIE0A);/* 比较匹配中断使能 */
OCR0A = 155; /* 比较值155, 定时器频率: 12.0MHz/((155+1)*8) = 9600Hz */
TCNT0 = 0;
}
这边设置的频率为9600,进行串口调试时则波特率选择4800,最终实现串口发什么,单片机接收后再原样发回串口。
1.将输入输出IO口初始化(port_init())
2.配置定时器
3.中断使能
4.收发函数
下面主要显示定时器0设置函数(注意对芯片手册的TCCR0仔细阅读),中断函数则需要根据收发函数来进行编程。
void timer0_init(void)
{
TCCR0A = (1<<WGM01);
TCCR0B = (1<<CS01); /* 预分频值8, CTC模式 */
TIMSK0 = (1<<OCIE0A);/* 比较匹配中断使能 */
OCR0A = 155; /* 比较值155, 定时器频率: 12.0MHz/((155+1)*8) = 9600Hz */
TCNT0 = 0;
}
这边设置的频率为9600,进行串口调试时则波特率选择4800,最终实现串口发什么,单片机接收后再原样发回串口。