单片机下位机通讯接收字符数组

xiaoxiao2021-02-28  68

# pragma db code # include<reg52.h> # define uint8 unsigned char # define uint32 unsigned long sbit L1=P0^0;//³É¹¦½ÓÊÕÒ»´ÎÖ¸Áî²¢·µ»ØÖ¸Ê¾µÆ sbit L5=P0^5;//·´´«Ö¸Ê¾µÆ sbit L6=P0^6;//Õý´«Ö¸Ê¾µÆ sbit L7=P0^7;//ʹÄÜָʾµÆ sbit L4=P0^4;//Âö³åָʾµÆ sbit CwCcw=P1^4;//Õý·´×ª sbit OutPulse=P1^5;//Âö³å sbit RunEn=P1^6;//ʹÄÜ bit Receivefalg=0; int PulseNum=0;//Âö³åÊý int rate=0;//ƵÂÊ int TH0Buf=0; int TL0Buf=0; uint32 j=0; int t=0; uint32 PulseNumTemp;//32λÊý¾ÝÓÃÓÚ×éºÏËĸö×Ö½ÚÊý¾Ý uint32 rateTemp;//32λÊý¾ÝÓÃÓÚ×éºÏËĸö×Ö½ÚÊý¾Ý uint8 CommandBuf[17]; //SBUFÊý¾Ý»º´æÇø void rece(void);//½ÓÊÕÅúÁ¿Êý¾Ý void init(void);//¶¨Ê±Æ÷³õʼ»¯ void computer(void );//½ÓÊÕ´¦ÀíPCÊý¾Ý /*Ö÷³ÌÐò*/ void main(void) {  uint8 temp; CwCcw=1; // OutPulse=1;//¸ßµØÆ½Êä³ö¡£¶ÔÓÚÇý¶¯Æ÷ÊäÈëΪµÍ RunEn=0; //ÖáÍ£Ö¹ init(); while(1) {    while(RI==0);    temp=SBUF;    if(temp==0x55)     { rece(); computer(); } } /* do{    while(RI==0);    temp=SBUF;    if(temp==0x55)     {rece();}    else break;    }while(1); */ } //¶ÔPCÏ´«µÄÃüÁî½â¶Á²¢Êä³ö void computer(void ) { if(CommandBuf[1]==0x11)//Õýת { TR0=1; RunEn=1; L7=0; CwCcw=0; L6=0; L5=1; } else if(CommandBuf[1]==0x01)//·´×ª { TR0=1; RunEn=1; L7=0; CwCcw=1; L5=0; L6=1; } else//Í£Ö¹ { RunEn=0; L7=1; } PulseNumTemp=PulseNumTemp|CommandBuf[5]; PulseNumTemp=PulseNumTemp<<8|CommandBuf[4]; PulseNumTemp=PulseNumTemp<<8|CommandBuf[3]; PulseNumTemp=PulseNumTemp<<8|CommandBuf[2]; SBUF=PulseNumTemp;   while(TI==0);   TI=0; SBUF=PulseNumTemp>>8;   while(TI==0);   TI=0; PulseNum=PulseNumTemp; rateTemp=rateTemp|CommandBuf[9]; rateTemp=rateTemp<<8|CommandBuf[8]; rateTemp=rateTemp<<8|CommandBuf[7]; rateTemp=rateTemp<<8|CommandBuf[6]; SBUF=rateTemp;   while(TI==0);   TI=0; SBUF=rateTemp>>8;   while(TI==0);   TI=0; } //³õʼ»¯ÉèÖà void init(void) { //TMOD=0x20;           // TMOD=0x21;           // PCON=0x80;           // SCON=0x50;           //  EA=1;            //?????  ET0=1;           //??????? // TH0Buf=(int)(65536-921600*(1/(2*rate)))/256;  //TL0Buf=(int)(65536-921600*(1/(2*rate)))%6;  TR0=1;            TL1=0xfa;              TH1=0xfa;            // TR1=1;               // } //½ÓÊÕ´®¿ÚÊý¾Ý´® void rece(void) { char i; i=0; do{ while(RI==0);   CommandBuf[i]=SBUF;   RI=0;   SBUF=CommandBuf[i];   while(TI==0);   TI=0;   i++;    } while(CommandBuf[i-1]!=0xaa); } /*------------------------------------------------                  ¶¨Ê±Æ÷ÖжÏ×Ó³ÌÐò ------------------------------------------------*/ void Timer0_isr(void) interrupt 1 using 1 { // static unsigned char i;  TH0=(65536-1)/256;  //ÖØÐ¸³Öµ 12M¾§Õñ¼ÆË㣬ָÁîÖÜÆÚ1uS£¬                               //200mS·½²¨°ë¸öÖÜÆÚ100mS£¬ÓÉÓÚ¶¨Ê±Æ÷                               //×î´óÖµ65536 ¼´65.536ms ËùÒÔ  TL0=(65536-1)%6;       //Ö±½Ó¶¨Ê±Æ÷²»¹»Óã¬ÐèÒªÓÃÑ­»·´¦Àí,  //  TH0=0xFF;      //???? // TL0=254;         //?245???255                             //¶¨Ê±10ms£¬È»ºóÑ­»·10´ÎºóÊä³ö 10x10=100ms //TL0=0xFE;              //TH0=0xFF;     j++;  if(j==2)  {    j=0;    L4=~L4; OutPulse=~OutPulse; if(!OutPulse) { t++; }   if((t>=PulseNum)&&(PulseNum!=0))//¼ÆÊýµ½PulseNumÍ£Ö¹ { TR0=0; RunEn=0; t=0; }   } }
转载请注明原文地址: https://www.6miu.com/read-46768.html

最新回复(0)