看看這個(gè)程序有問題么,關(guān)于ch375正常工作的問題

我的程序代碼如下,在調(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(); }

void SendChar(unsigned char buff) { SBUF = buff; while( TI==0 ) //; { 這個(gè)函數(shù)有問題,發(fā)數(shù)據(jù)的時(shí)候應(yīng)該是9位數(shù)據(jù)方式 void SendChar_cmd(unsigned char buff) { ti=0 tb8=1 SBUF = buff; while( TI==0 ) //; } void SendChar_cmd(unsigned char buff) { ti=0 tb8=0 SBUF = buff; while( TI==0 ) //; } 這樣才可以,當(dāng)然還需要一些初始化的設(shè)置,也就是允許9位數(shù)據(jù)傳輸


回復(fù)樓上的

我在 對(duì)scon的 賦值中已經(jīng) 分別對(duì)tb8賦了值啊~~~~~ 可以看下面的這一段 里面scon的部分

/* 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ò) */

} } }


還有人回答么


返回的數(shù)據(jù)是多少??


單片機(jī)總是在接收那數(shù)據(jù)那個(gè)地方死機(jī)


好久沒來了


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频