[Atmel] ATMEL89c51IC2串口问题

[复制链接]
840|0
 楼主| jiang390625 发表于 2016-3-25 13:16 | 显示全部楼层 |阅读模式
最近在做一个单片机串口与PC机通信的程序,基本功能是接收到PC机发来的一段代码,做出某些动作,并回复一些代码,开始用的是STC的开发板,程序基本可以用了,但换成ATMEL89C51IC2,程序里,串口接收那部分就不能完整运行了.
大概发下我的接收部分,可以肯定设置上面是没问题的.

uint8 flag = 0;
uint8 flag1 = 0;
uint8 BUFFER[8];
uint8 Uart_Len;

接收中断大概是这样的:
void uart_init() interrupt 4
{
flag = 0;
Uart_Len = 0;
while(flag<10&&Uart_Len<8)
{
if(RI == 1)
{
RI = 0;
BUFFER[Uart_Len++] = SBUF;
flag = 0;
flag1 = 1;
}
else { TI=0;flag++;}
}
}

main()
{
..
..
while(1)
{
if(flag1 ==1)
{
if(BUFFER[0]==0x0a)
{
if(BUFFER[1] == 0x01)
{
if(BUFFER[2] == 0x02)
{这里是要做处理的,我给这里放过标志位,但是程序根本到不了这里} (用STC的单片机就不会出现这个问题,想问高手,是时序出的问题吗?谢谢)
}
}
else if(....)
.......
}
}
}中断里貌似写错了点,原程序想不起来杂写的了,但是保证是在STC开发板上运行过的. 判断接收放到主程序里,是因为处理接收后要发送一段代码回去,我在主程序里用了发送函数,再把发送函数放到中断里编译器提示警告.
还有就是波特率是9600 晶振是11.0592

貌似我设置成2400时,调试是可以用的,是不是我时序上出了问题呢?


您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:人生若只如初见 当时只道是寻常。

41

主题

626

帖子

0

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