打印
[AVR单片机]

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

[复制链接]
723|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝