欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3117|回復: 3
收起左側

stc89c52單片機串口問題,快被折騰瘋了,求大神賜教

[復制鏈接]
ID:717916 發(fā)表于 2020-3-29 00:59 | 顯示全部樓層 |閱讀模式
程序目的是串口不斷地發(fā)送abcde-字符串,使用定時器2做波特率發(fā)生器,源代碼如下:
#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-");
        }
}

現(xiàn)在有兩個問題:
源碼中定義的bit變量沒有用到,但是不知為什么會影響到程序運行,第一行和第二行bit變量都是11個,
1,如果注釋掉第1行位變量定義留下第2行位變量定義,程序運行結果如下:串口會先收到一個a字符,經(jīng)過約3秒再輸出一堆abcd-,第一個a和abcd-連在一起,也就是說第一次輸出只有一個a,bcd-沒有了。
批注 2020-03-29 004047.png

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

把兩行bit變量都注釋掉之后,看起來好像就正常了。很不明白,這變量怎么會影響到串口呢

回復

使用道具 舉報

ID:275826 發(fā)表于 2020-3-29 14:26 | 顯示全部樓層
改成while(1){
                send_words("abcd-");
               delayms(1);
        }
試試
回復

使用道具 舉報

ID:191511 發(fā)表于 2020-3-29 18:19 | 顯示全部樓層
為什么要把變量如此簡單粗暴的定義這么長呢?
回復

使用道具 舉報

ID:191511 發(fā)表于 2020-3-29 18:21 | 顯示全部樓層
另外就是send words() 函數(shù)調用周期太頻繁,會導致“死機”的,需要在兩次發(fā)送中間加必要的延時。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表