打印
[Atmel]

ATMEL89c51IC2串口问题

[复制链接]
646|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

粉丝