一個奇怪的串口通訊問題——估計只有高手才能解決
題目:
一個奇怪的串口通訊問題——估計只有高手才能解決
本人寫了一個單片機與計算機之間的串口通訊程序,問題的現象是:只有當計算機向單片機發送一個數據後,計算機才能收到單片機發送的數據,否則,計算機始終無法收到單片機發送的數據.
單片機使用的是C8051F040,程序是用C語言寫的.上位機使用的程序是串口調試助手,自己也使用VC寫過程序,無論是串口調試助手,還是自己用VC寫的程序,都存在上述問題.
此外,對於河邊草000的回答,本人做一個補充:計算機與單片機在程序上不存在主從關係,單片機上電後,立即就開始向計算機發送數據.
解答:
真的很濫.這是一個發I Like You!的程序,簡單實用.
沒用中斷,
#include
#define uchar unsigned char
#define uint unsigned int
uchar idata w[]="I Like You!"; //數據定義
void delay(uchar);
void main(void)
{
uchar count;
TMOD=0X20; //工作在方式2
TL1=0xfd; //T1波特率9600bps
TH1=0xfd; //串行工作在方式3
SCON=0xd8;
TR1=1; //啓動T1
while(1)
{
count=0;
while(*(w+count)) //判斷一串數據是否結束
{
SBUF=*(w+count); //發送數據
while(TI==0); //查詢發送是否結束
TI=0; //清除發送一標誌位
count++; //準備發送一個數據
}
delay(100);
}
}
void delay(uchar times) //延時子程序
{
uchar i;
while(times--);
for(i=0;i
- 上一篇 求高手們解答,拜託,這道題好難
- 下一篇 師者,所以傳道受業解惑也 的翻譯
添加新評論