导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→串口通信[savage213]

 *第20789篇: 串口通信

  
楼 主:savage213 2004年4月7日15:49
 串口通信
大家好,小弟有个问题向大家请教。单片机与PC机进行串口通信,单片机用的是W78E58B,
PC 机向单片机发一定格式的请求命令,单片机这边用中断做接收程序!下面是我写的程
序:
#include  <global.h>  
uchar one_temp,net_num=0;
uchar idata  comcmd1,datanum1,comlen1;//相关变量的定义
bit net_flag=0;

void serail() interrupt 4 using 1
{   
   EA=0;
   if(RI)
  {
   one_temp=SBUF;
   combuf[net_num]=one_temp;//接收
   net_num++;
    RI=0;
   if(one_temp==0x1B&&net_num==1) net_flag=1;
   if(one_temp==0x10&&net_num==2) net_flag=1;
   if(net_num==3)
     {
       comcmd1=one_temp;
       net_flag=1;
     }
   if(net_num==4)
     {
       datanum1=one_temp;
       net_flag=1;
      }
   if(net_num==5)
     {
       comlen1=one_temp;
       net_flag=1;
      }
   if(!net_flag)
     {
         sendpc(0,0,unknow_er);
         net_flag=0;
         net_num=0;
         goto end;
      }
   if(net_num>  =comlen1+2)
      {
        checkcrc=cal_crc(combuf,comlen1);
        if(*(uint *)&combuf[net_num-2]!=checkcrc) //校验
             {  net_num=0;
                sendpc(0,0,parity_bit_er);
  
              }
        else
            {
                net_num=0;//清零,为下次接收做准备
                work();//接收完成,转向处理程序
             }
       } 
   } 
end: EA=1;
}  

 void hardware()
{
 IE=0x90;
 TMOD=0x20;
 TL1=0xfa;//初始化
 TH1=0xfa;
 SCON=0x50;
 PCON=0x00;
 TR1=1;//启动定时器1
 RE=1;
 EN=0;
 CPUCardInit();
 framstop();
 XBYTE[0x0000]=0xf0;
 IE0=0;
 gettsamstate();
 gettidstate();
}
 

void main()
{  uchar i;
   hardware();     
   for(i=0;i  <160;i++)
   {
     combuf[i]=0;

    }
        
    for(;;)
      {  ;   }


 }

先硬件初始化,然后对暂存数据的idata类型的数组清零,为接收做好准备。然后循环等
待,随时有中断,直接进入中断程序。
本程序只能成功接收一次,第二次开始就不能正常接收,请高手指点迷津!老板催的急
啊!!!快回复吧,小弟向您鞠躬了!

可以发到我的信箱:savage213@eyou.com
万分感谢!!!!!!1

  
2楼:guest 2004年4月7日16:15
 随便说说!
是否死在处理程序中,接受中断程序太乱,建议只负责接受数据,处理程序放到主程序中,接收也可用查询方式嘛,这样好控制一点!
  
3楼:savage213 2004年4月7日23:33
 我必须用中断,大家看看我程序本身有没有问
我必须用中断,大家看看我程序本身有没有问题?谢谢!
  
4楼:guest 2004年4月9日13:27
 不要用那么多IF 
多用点SWITCH

不要用那么多IF 
多用点SWITCH就好了。

>>>>>>对该主题发表你的看法

本主题贴数4,分页: [第1页]


[上一篇主题]:大虾进来看看

[下一篇主题]:各位大虾进来看看吧