我的程序代碼如下,在調(diào)試過程中,總是接受數(shù)據(jù)不對(duì),不知道哪里出了錯(cuò)誤、 #include #include #include #include //#include
#define CMD_CHECK_EXIST 0x06 #define CMD_RESET_ALL 0x05 sbit PORT11 = P1^0;//control ch375_1 work sbit PORT12 = P1^1;//control ch375_2 work sbit PORT13 = P1^4;//control mcu sbit PORT14 = P1^5; sbit led1 = P1^6;/*錯(cuò)誤指示燈*/ sbit led2 = P1^7;//正常工作指示燈 void delay50ms(void); void flash_led1(void); void flash_led2(void); void SendChar(unsigned char buff); unsigned char receive(); void ComInit(); void delay1s(void); void CH375_Init( void );
void delay50ms(void) { unsigned char i,j; for(i=100;i!=0;i--) for(j=250;j>0;j--); } void delay1s(void) { unsigned char i,j,k; for(i=10;i!=0;i--) for(j=200;j!=0;j--) for(k=250;k!=0;k--); }
void flash_led1(void) { unsigned char i;
for( i=10;i>0;i-- ) { led1=!led1; delay1s(); } } void flash_led2(void) { unsigned char i;
for( i=10;i>0;i-- ) { led2=!led2; delay1s(); } } /* CH375初始化子程序 */ void CH375_Init( void ) { unsigned char i, k; unsigned char RD_DAT;
/* 測(cè)試CH375是否正常工作 */ for( k=100; k!=0; k-- ) { SendChar( CMD_CHECK_EXIST ); /* 測(cè)試CH375是否正常工作 */ i = 0x5A;//需要換格式 SCON = 0xD0; SendChar( i ); /* 寫入測(cè)試數(shù)據(jù) */ i = ~i; /* 返回?cái)?shù)據(jù)應(yīng)該是測(cè)試數(shù)據(jù)取反 */ RD_DAT = receive(); SCON = 0xD8; if ( RD_DAT != i ) /* CH375不正常 */ { for ( i=5; i!=0; i-- ) { SendChar( CMD_RESET_ALL ); /* 多次重復(fù)發(fā)命令,執(zhí)行硬件復(fù)位 */ } delay50ms(); /* 延時(shí)50ms */ } else while(1) { ; //flash_led2(); /* CH375正常?*/ } } if( k==0 ) { while(1) { ; //flash_led1(); /* CH375出錯(cuò) */ } } }
/* 串行口通訊子程序 */ /*串口初始化*/ void ComInit() { TMOD = 0x20; /*T1為方式*/ TH1 = 0xFd; /*計(jì)數(shù)常數(shù)0xFE,波特率9600 晶振:11.0592MHz */ TL1 = 0xFd; SCON = 0xD8; //串口方式3 TCON=0x20; PCON=0X00; TI=0; RI=0; TR1 = 1; }
void SendChar(unsigned char buff) { SBUF = buff; while( TI==0 ) //; { flash_led2(); } TI=0; }
/*串行數(shù)據(jù)接收程序*/ unsigned char receive(void) { unsigned char buf; while(RI==0) //; { flash_led1(); } buf=SBUF; return(buf); } void main(void) { PORT11 = 0; PORT12 = 1; PORT13 = 0; PORT14 = 1; led1=0; led2=0;
ComInit(); CH375_Init(); }