程式目的是串口不斷地發送abcde-字串,使用定時器2做波特率發生器,源代碼如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sfr T2MOD = 0xC9;
bit aaaaaaaaa=1,bbbbbbbbb=1,cccccccc=1,dddddddddd=1,eeeeeeeeeeee=1,ffffffff=1,gggggggg=1,hhhhhhhh=1,iiiiiii=1,jjjjjjjjjj=1,kkkkkkkkkkk=1;
//bit a=1,b=1,c=1,d=1,e=1,f=1,g=1,h=1,i=1,j=1,k=1;
void send_words(uchar *str){
while(*str!='\0'){
SBUF=*str;
str++;
while(!TI);
TI=0;
}
}
void main()
{
SCON = 0x50;
PCON = 0x00;
T2MOD=0x01;
T2CON=0x30;
TH2=RCAP2H=0xff; //9600波特率,11.0592Mhz晶振
TL2=RCAP2L=0xdc;
TR2=ES=1;
EA=1;
while(1){
send_words("abcd-");
}
}
原始碼中定義的bit變數沒有用到,但是不知為什么會影響到程式運行,第一行和第二行bit變數都是11個,現在有兩個問題:

問題1,如果注釋掉第1行位變數定義留下第2行位變數定義,程式運行結果如下:串口會先收到一個a字符,經過約3秒再輸出一堆abcd-,第一個a和abcd-連在一起,也就是說第一次輸出只有一個a,bcd-沒有了。

問題2,如果注釋掉第2行位變數定義留下第1行位變數定義,程式運行結果如下:串口只收到一個a字符就再沒有任何反應了。
所以很奇怪,難道定義變數的英文字母長短也和程式有關系?

把兩行bit變數都注釋掉之后,看起來好像就正常了。很不明白,這變數怎么會影響到串口呢
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/45685.html
標籤:單片機/工控
上一篇:數碼管動態顯示0-f應該怎么寫
