[AVR单片机] 求教avr单片机与计算机的串口通讯问题

[复制链接]
 楼主| jiejiao 发表于 2015-11-11 21:24 | 显示全部楼层 |阅读模式
mega16的简单发送数据程序,仿真正确,但是与计算机连接用串口调试助手接收的数据完全不对,接线是9针接口,我用三线制接线,波特率和数据形式设置都没有错,请大家帮忙看一下了。谢谢了!
#include"iom16.h"
#define uint unsigned int
#define uchar unsigned char
uint flag_2s;
void ioint()
{
  DDRA=0XFF;
  PORTA=0XFF;
  
  DDRB=0XFF;
  PORTB=0XFF;
  
  DDRC=0XFF;
  PORTC=0XFF;
  
  DDRD=0X02;
  PORTD=0XFF;
}
void Timer0_int()
{
  SREG|=0X80;
  TCCR0=(1<<CS01)|(1<<CS00);
  TIMSK|=(1<<TOIE0);
  TCNT0=5;
}
void USART_int()
{
  UCSRB = 0x00;                                
  UCSRC=0X8F;
  UBRRH = 0;
  UBRRL = 191;
  UCSRB = 0x08;               
}
void USART_data(uchar data)
{
  while(!(UCSRA&(1<<UDRE)));
  UDR=data;
}
void main()
{
  flag_2s=0;
  ioint();
  Timer0_int();
  USART_int();
  while(1);
}
#pragma vector=TIMER0_OVF_vect
__interrupt void TO_WORK()
{
  flag_2s++;
  if(flag_2s>=2000)
  { flag_2s=0;
    USART_data(0x03);
  }
}
shaoziyang 发表于 2015-11-11 21:30 | 显示全部楼层
1.中断里不要延时,直接给UDR发送数据。
2.flag_2s定义时要加volatile关键字,中断里使用的变量通常都需要加。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部