首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

初入单片机,初学者有关问题,请.

2012-03-20 
初入单片机,菜鸟问题,请高手指点..在线等我做一个USART接口与PC机通讯程序,下面是部分代码:flash uchar le

初入单片机,菜鸟问题,请高手指点..在线等
我做一个USART接口与PC机通讯程序,下面是部分代码:

flash uchar led_7[10] = {0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9};
interrupt [USART_RXC] void usart_rx_isr(void) 
{
  uchar status,data;
  status = UCSRA;
  data = UDR;
  if((status & (FRAMING_ERROR|PARITY_ERROR|DATA_OVERRUN)) == 0)
  {  
  write_command(0x01);
  write_command(0x80);
  write_data(0xa3);
  write_data(led_7[data]);
  delay_ms(1);
   
  }


void USART_Transmit(uchar data)
{
  while(!(UCSRA & DATA_REGISTER_EMPTY)); //等待寄存器空
  {
  UDR = data; //发送数据
  }
}

void main(void)
{
uchar i = 0;

PORTD=0x03;
DDRD=0xE2;
delay(2000);

UCSRA = 0x00; //USART 初始化
UCSRB = 0xd8; //RXD中断。TXD中断 接收允许,发送允许
 UCSRC = 0x86; //8位数据位 1位停止位 无奇偶位


UBRRH = 0x00;
UBRRL = 0X67;
#asm("sei")
//初始化LCD//

while(1)

  if(++i < 10)
  {
  USART_Transmit(i);
  delay_ms(1);
  }
  else
  i = 0; 
  delay(800);
};
}

其中write_command和write_data是向LCD写数据.LCD串口联接

问: 为什么串口调试工具输出不是0--9这10个数.是一大堆乱码..而且没有什么规律...但在跟踪的时候感觉所有正常..

请高手帮忙看看.是不是程序不执行中断呀.我该怎么修改呢?

[解决办法]
问题出在这里:USART_Transmit(i); 

试试USART_Transmit('1');

[解决办法]
首先,检查你的波特率。看你的程序USART_Transmit(..)是输出函数吧。如果想输出0-9,那实际上应该输出0x30-0x39,这个才是ASCII码中的0-9呢。

也就是说,输出0应该是USART_Transmit(0x30)

热点排行