打印

串口通讯函数处理

[复制链接]
1418|2
手机看帖
扫描二维码
随时随地手机跟帖
沙发
cotel| | 2013-11-2 18:50 | 只看该作者
void timer0() interrupt 4
{
        uchar i,ch;        
         if(RI)
         {
                         RI = 0;
                        ch = SBUF;                                  //接收串口数据
                        if(ch==0xfe)                                    //数据帧开始
                        {
                                        i = 0;
                        }
                        if(ch!=0xfe)
                        {                                       
                                        dat_bug[i] = ch;           //存储串口数据
                                        i++;                                   //地址自加
                                        if(i>=3)                            //接收到最后的字节
                                        {
                                                        read_flag= 1 ; //就置位取数标志
                                        }
                        }
         }
}
中的i是临时变量,修改成static uchar i可能会好用。
不过不建议在中断中处理消息,而是建立队列进行接收。

使用特权

评论回复
板凳
xvezhe|  楼主 | 2013-11-7 09:45 | 只看该作者
cotel 发表于 2013-11-2 18:50
void timer0() interrupt 4
{
        uchar i,ch;        

为何,我以上的程序,定时器时间不准。。。       定时器、串口中断同时初始设置是不是不正确

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

225

帖子

2

粉丝