|
|
這里樓主在做一個(gè)多機(jī)通信,很簡(jiǎn)單的課程例子給做教具,然后因?yàn)橛幸欢螘r(shí)間沒(méi)碰51的編程了,想問(wèn)一下我程序里面是哪個(gè)地方有錯(cuò)誤,導(dǎo)致主機(jī)無(wú)法發(fā)出通信信息,我用了仿真的RXD、TXD終端沒(méi)法接受到主機(jī)發(fā)出的信息內(nèi)容(即一片空白)
線(xiàn)路圖自己通過(guò)接地等方式確定沒(méi)問(wèn)題了,應(yīng)該是程序邏輯,但是最近幾個(gè)月都在寫(xiě)c++,51的風(fēng)格部分需要注意的地方都忘了
單片機(jī)源程序如下:
- #include<reg51.h>
- sbit k1=P2^0;
- sbit k2=P2^3;
- sbit k3=P2^5;
- void SetInit()
- {
- TMOD = 0x20;
- TH1 = TL1 = 0xfd;//9600 b
- PCON = 0;
- SCON = 0x70;//通信方式1
- TR1 = 1;
- }
- void delay(int n)
- {
- int i=0;
- for(;n>0;n--)
- for(;i<125;i++);
- }
- int main()
- {
- unsigned char key;
- SetInit();
- while(1)
- {
- if(k1==0)
- key=1;
- else if(k2==0)
- key=2;
- else if(k3==0)
- key=3;
- switch(key)
- {
- case 1 :
- SBUF=1;break;
- case 2 :
- SBUF=2;break;
- case 3 :
- SBUF=3;break;
- }
- while(TI==0);TI=0;
- while(RI==0);RI=0;
- /* if(SBUF)
- {
- switch(SBUF)
- {
- case 1 :
- break;
- case 2 :
- break;
- case 3 :
- break;
- default:
- break;
- }
- }
- delay(500);*/
- }
- }
復(fù)制代碼
|
|