|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我写了一个简单的串口程序,主要功能是不断发送一个字母 串口助手不断输出00
以下是源程序 求大神指点
#include <iom128v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
//串口0初始化
void uart_init0(int baud_rate,long int fosc)
{
UCSR0A=0x00; //控制寄存器A清零 不倍速
UCSR0B=0x00; //控制寄存器B清零
UCSR0B|=(1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0);//允许发送和接收,并允许接收中断
UCSR0C = (1 << UCSZ01) | (1 << UCSZ00); /*8位数据、1 位停止、异步、无校验*/
UBRR0H = (fosc/16/(baud_rate+1))/256;
UBRR0L = (fosc/16/(baud_rate+1))%256; /*波特率9600 */
}
//串口0发送一个数据
void uart_transmit0(unsigned char i)
{
while (!(UCSR0A & (1<<UDRE0))); /* 等待发送缓冲器为空 */
UDR0 = i; /* 发送数据 */
}
void delay_s(void)
{
uint i,j;
for(i=0;i<1000;i++)
{
for(j=0;j<255;j++)
;
}
}
void main()
{
DDRE|=(1<<PE1); //TX1引脚定义输出
uart_init0(9600,16000000); //设置波特率9600 晶振16MHz
SEI(); /*全局中断允许 */
while(1)
{
delay_s();
uart_transmit0('a');
delay_s();
}
} |
|
|