音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

MODBUS通訊規(guī)約 如何改 103通訊規(guī)約

作者:gygabc 欄目:通信技術(shù)
MODBUS通訊規(guī)約 如何改 103通訊規(guī)約
MODBUS通訊規(guī)約 如何改 103通訊規(guī)約



  那位大蝦幫我把MODBUS通訊規(guī)約 如何改 103通訊規(guī)約  謝謝


/* MODBUS通訊規(guī)約中CRC校驗碼地計算 */
#include "AT89X51.H"
#include "INTRINS.H"

#define uCHAR unsigned CHAR

uCHAR in_command=0;
uCHAR sbuf_count=0;
CHAR getsbuf[8];/*接受字符緩沖區(qū)*/
CHAR return_xy[17]={0x01,0x01,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    
void XyToCrc(CHAR mm,CHAR *pint);
void Init_SerialComm(void);
void Init_CpuIO(void);
void DelayX1ms(uCHAR count);
void outCHAR(CHAR i);
void get_digital(void);

void main(void)
{    
    CHAR m=17;/*返回數(shù)據(jù)字節(jié)數(shù)*/
    CHAR *pint1;
    CHAR CHARx,CHARy;
    
    Init_SerialComm();        /*初始化串口*/
     Init_CpuIO();            /*初始化IO口*/
     
    for(;;)
    {       
        get_digital();        /*采集數(shù)字量*/
        pint1=return_xy;
           XyToCrc(m-2,pint1);    /*計算返回數(shù)據(jù)的校驗碼*/
           CHARx=return_xy[0];
        CHARy=return_xy[1];
           CHARx=return_xy[2];
        CHARy=return_xy[3];
        CHARx=return_xy[4];
        CHARy=return_xy[5];
        CHARx=return_xy[6];
        CHARy=return_xy[7];
        CHARx=return_xy[8];
        CHARy=return_xy[9];
        CHARx=return_xy[10];
        CHARy=return_xy[11];
        CHARx=return_xy[12];
        CHARy=return_xy[13];
        CHARy=return_xy[14];
        CHARx=return_xy[15];
        CHARy=return_xy[16];
        
        if(in_command==1)
        {
            outCHAR(m);     /*數(shù)據(jù)返回*/
        }
        
    }

}

void Init_SerialComm(void)   /*初始化串口*/
{
SCON=0x50;   /*SCON: serail mode 1, 8-bit UART, enable receive*/
TMOD=0x20;   /*TMOD: timer 1, mode 2, 8-bit reload*/
TH1=0xfd;    /*baud rate 9600b/s*/
/*TL1=0xfd;*/
PCON=0x00;    /* SMOD=0*/
IE=0x90;      /*IE.7=EA=1;IE.4=ES=1,IE.3=ET1=0, IE.2=EX1=0,IE.1=ET0=0,IE.0=EX0=0,Enable GLOBAL interrupt and serial interrupt*/
TR1=1;        /*start timer 1*/
}

void Init_CpuIO(void)         /*初始化IO口*/
{
P1=0xff;/*關(guān)閉采集口*/
P2=0xff;/*關(guān)閉采集口*/

/*p3_0=RXD,p3_1=TXD,p3_2=/INT0,p3_3=/INT1   P3口的第二定義在IE中設(shè)置起用*/
/*p3_4=T0,p3_5=T1,p3_6=/WR,p3_7=/RD      */
}

void DelayX1ms(uCHAR count)        /*延時1ms*/
{
uCHAR k;
while(count!=0)
{count--;
for(k=0;k<72;k++)    
{}
}
}

/*串口接收中斷處理函數(shù)*/
void Serial(void)  interrupt 4 using 2
{    
    CHAR *pint2;
    CHAR i,crcl=0,crch=0;
        while(RI==0);
        RI=0;/* sbuf_count getsbuf[3] */
        getsbuf[sbuf_count++]=SBUF;
        
    SWITCH(sbuf_count)    /*接收一個數(shù)據(jù)就判斷一次是否是發(fā)給自己的命令*/
         {
           case 0x01:
                if(getsbuf[0]!=return_xy[0])
                sbuf_count=0x00;
                break;     
           case 0x02:
                if(getsbuf[1]!=0x01)
                sbuf_count=0x00;
                break;
           case 0x03:
                if(getsbuf[2]!=0x00)
                sbuf_count=0x00;
                break;
           case 0x04:
                if(getsbuf[3]!=0x00)
                sbuf_count=0x00;
                break;
           case 0x05:
                if(getsbuf[4]!=0x00)
                sbuf_count=0x00;
                break;
           case 0x06:
                if(getsbuf[5]!=0x60)
                sbuf_count=0x00;
                break;
           case 0x07:
                break;     
           case 0x0
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
TD-SCDMA測試表現(xiàn)欠佳 延誤中國3G時間表
KIEL C51編寫的UDP打包程序
請教,單片機與GSM模塊的通訊方式問題
請大家介紹幾塊專線Modem芯片.謝謝大家!!!!!!!!!!!!!!
我需要gprs 模塊
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號