[問題] 8051串列傳輸 使用Keil C
想利用8051的串列埠重覆地連續丟四個byte出去
在重覆丟的迴圈之中
我同時用P1.0這個接腳讓LED燈閃爍
但實際使8051執行時
LED燈確實有在持續閃爍
但串列埠卻沒有動作 (我用示波器量測 只有幾十mV的雜訊)
不知道是出了什麼問題 煩請各位大大指教
謝謝
----
另外請問兩個小問題:
1. 我可以直接在程式碼中寫 TI=1; 強迫改變這個代表傳送完畢的位元值嗎
2. 假設兩個8051互相利用串列埠溝通
那兩個8051之間是TxD接TxD,RxD接RxD嗎
還是TxD接RxD,RxD接TxD呢
有點搞混 我以為TxD表示傳送 RxD表示接收
謝謝
----
程式碼如下:
#include <regx51.h>
#include <stdio.h>
#define XTAL 11059200
#define baudrate 19200
void SendTx(char tx); // 由串列埠丟一個byte
void Delay(void); // 放在迴圈中用來延遲
void com_initialize(void)
{
SCON=0x50;
PCON=0x80;
TMOD=0x20;
TH1=0xFD;
ES=1;
TR1=1;
return;
}
void main(void)
{
EA=1;
com_initialize();
while(1)
{
SBUF=0x01; // 無意義 只是想使TI=1
P1=0x01; // 使P1.0接腳上的LED亮
SendTx(0xFF); // 連續送四個byte
SendTx(0x80);
SendTx(0x00);
SendTx(((0x80^0x00)&0x7F));
Delay();
P1=0x00; // 使LED滅
Delay();
}
}
void SendTx(unsigned char tx)
{
while(TI==0); // 等到TI=1,也就是前一個byte傳送完畢
TI=0;
SBUF=tx; // tx寫入SBUF 由TxD腳送出
return;
}
void Delay(void)
{
unsigned char i,j,k;
for (i=0; i<255; i++)
for (j=0; j<255; j++)
for (k=0; k<3; k++) ;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.175.37
※ 編輯: dio1984 來自: 140.112.175.37 (11/29 17:29)
推
11/29 22:09, , 1F
11/29 22:09, 1F
→
11/29 22:10, , 2F
11/29 22:10, 2F
推
11/30 00:43, , 3F
11/30 00:43, 3F
→
11/30 00:43, , 4F
11/30 00:43, 4F