中级会员
 
- 积分
- 483
- 金钱
- 483
- 注册时间
- 2013-7-27
- 在线时间
- 4 小时
|
5金钱
// 功能:单片机不停的向pc发送数据 0x88,打开串口调试助手,应该能收到,但是实际收不到,求各位大神帮忙分析一下原因,不胜感激!
// 数据线用的是usb转TTL数据线
#include <string.h>
#include <stdio.h>
#define F_CPU 7372800 /* 单片机主频为7.3728MHz,用于延时子程序 */
#include <util/delay.h>
#include <avr/io.h>
#include <avr/iom128.h>
#include <avr/interrupt.h> //中断信号头文件
#define BAUD 4800
#define delay_us(x) _delay_us(x) //AVR GCC延时函数 x(us)
#define delay_ms(x) _delay_ms(x) //AVR GCC延时函数 x(ms)
#define uint unsigned int
#define uchar unsigned char
void system_init()
{
// RXD1-> D2,输入,TXD1-> D3,输出
DDRD = 0xbf;//设置为输出
PORTD = 0xff;
}
// usart初始化
void Usart1_Init()
{
UCSR1B = 0X00;
UCSR1A = 0X00;//不使用倍速发送
UCSR1C = 0X06;// 异步,禁止奇偶校验,1位停止位,8位数据位
UBRR1H=(F_CPU/16/BAUD - 1)/256;
UBRR1L=(F_CPU/16/BAUD - 1)%256;
UCSR1B = 0Xf8;
}
void Usart1_send_data(uchar dat)
{
while( !(UCSR1B &(1<<5))); // UDR1E为空,表示已经就绪
UDR1 = dat;
}
void main(void)
{
system_init(); //系统初始化
Usart1_Init();
SREG |= 0x80;// 开启全部中断
while(1)
{
delay_ms(500);
delay_ms(500);
Usart1_send_data(0x88);
}
}
|
最佳答案
查看完整内容[请看2#楼]
回复【3楼】正点原子:
---------------------------------
初始化部分,寄存器没有配置好。
|