⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 485 programme.txt

📁 485通讯程序
💻 TXT
字号:
void dsend()//数据发送子程序
{ 
    uchar i;
    uchar sum;
        do
            {
                dere487=1;
                _nop_();
                            
    
                SBUF=0xaa;
                while(TI==0);
                TI=0;
                
                dere487=0;
                _nop_();
                            
    
                while(RI==0);
                RI=0;
                dogds1232();
            }while(SBUF!=0xbb);
        do
            {
                sum=0;
                
                dere487=1;
                _nop_();
                
                for(i=0;i<4;i++)
                    {
                        SBUF=bcdtab[i];
                        sum+=bcdtab[i];
    //求发送校验和
                        while(TI==0);
                        TI=0;
                    }
                
                SBUF=sum;        //send the sum
                while(TI==0);
                TI=0;
                
                dere487=0;
                _nop_();
                            
    
                while(RI==0);    
    //wait the master answer
                RI=0;
                dogds1232();
            }while(SBUF!=0);    //回答出错,则重发
}

*************************************************************
void drec() //串口接收子程序
{ 
        uchar i;
        uchar rsum;
    do
        {
            dere487=0;
            _nop_();
                
                
                while(RI==0);
                RI=0; 
                
                dogx5045();
            }while(SBUF!=0xaa);        //判断slave请求
            
        dere487=1;
        _nop_();
        
        
        
        SBUF=0xbb;        //发应答信号
        while(TI==0);
        TI=0;
        
        while(1)
            {
                rsum=0;        //清接收校验和
                dere487=0;
                _nop_();
                            
    
                for(i=0;i<4;i++)
                    {
                      while(RI==0);
                        RI=0; 
                        retab[i]=SBUF;
                        rsum+=retab[i];
    //求接收校验和
                    }
                while(RI==0);    
    //receive the sum
                RI=0; 
                _nop_();
                _nop_();
                _nop_();
                
                if(SBUF==rsum)
                    {
                        dere487=1;
                        _nop_();
                            
        
                        
                        SBUF=0x00;    
    //校验和相同发00
                        while(TI==0);
                        TI=0;
                        break;
                    }
                else
                    {
                        dere487=1;
                        _nop_();
                            
                
                        
                        SBUF=0xff;    
    //出错发ff,重新接收
                        while(TI==0);
                        TI=0;
                        dogx5045();
                    }
            }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -