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

標題: 求教串口模塊 [打印本頁]

作者: 13152174087    時間: 2015-5-13 23:45
標題: 求教串口模塊
我想用51的串口通訊,例程上給的是用的串口中斷,我沒有用中斷,想直接提取串口寄存器里的數據,但是程序一寫進去,單片機就飛了~~,想問問大家這樣的編程想法能實現嗎?
作者: 13152174087    時間: 2015-5-13 23:52
請大家幫幫忙,謝謝啦
作者: admin    時間: 2015-5-14 00:34
把你的程序發上來看一下
作者: 13152174087    時間: 2015-5-14 00:54
admin 發表于 2015-5-14 00:34
把你的程序發上來看一下

#include<reg52.h>
#include"bstv51.h"
void UartConfiguration();

void main()
{
        uchar date=1;
    bstv51_init();
        UartConfiguration();

        while(1)
        {         
                if(RI)
                {       
                        RI=0;
                        date=SBUF;        //取出接受到的數據
                        RI=0;                          //清除接受中斷標志位
                        SBUF=0x7b;          //接收到的數據放入發送緩存器發送
                        while(!TI);        //等待發送數據完成
                        TI=0;                                //清除發送完成標志位
                }
        }

}

void UartConfiguration()
{
    TMOD=0x20;      //設置計數器1的工作方式2
        TH1=0xfd;                        //設置計數器1的初值,決定波特率
        TL1=0xfd;                        //設置計數器1的初值,決定波特率
        PCON=0x00;      // 波特率倍增0x00不加倍         0x80加倍
        SCON=0x50;                //設置工作方式1 開啟接受允許
        EA=1;                    //開啟總中斷
        ES=0;                        //關閉串口接受中斷
        TR1=1;                        //計數器1開始運行
}



作者: 13152174087    時間: 2015-5-14 00:56
我要是給SBUF寄存器里寫了date接收端就只能接受到0
作者: 13152174087    時間: 2015-5-14 01:22
在線等,謝謝先
作者: 13152174087    時間: 2015-5-14 16:32




#include<reg52.h>
#include"bstv51.h"
void UartConfiguration();

void main()
{
        uchar date=1;
    bstv51_init();
        UartConfiguration();

        while(1)
        {         
                if(RI)
                {       
                        RI=0;
                        date=SBUF;        //取出接受到的數據
                        RI=0;                          //清除接受中斷標志位
                        SBUF=date;          //接收到的數據放入發送緩存器發送
                        while(!TI);        //等待發送數據完成
                        TI=0;                                //清除發送完成標志位
                }
        }

}

void UartConfiguration()
{
    TMOD=0x20;      //設置計數器1的工作方式2
        TH1=0xfd;                        //設置計數器1的初值,決定波特率
        TL1=0xfd;                        //設置計數器1的初值,決定波特率
        PCON=0x00;      // 波特率倍增0x00不加倍         0x80加倍
        SCON=0x50;                //設置工作方式1 開啟接受允許
        EA=1;                    //開啟總中斷
        ES=0;                        //關閉串口接受中斷
        TR1=1;                        //計數器1開始運行
}

作者: husir    時間: 2015-5-14 18:19
一種是查詢  一種是中斷  你二個都不用, 那你搞什么?
作者: 13152174087    時間: 2015-5-14 19:40
husir 發表于 2015-5-14 18:19
一種是查詢  一種是中斷  你二個都不用, 那你搞什么?

我的if函數不算查詢嗎?那查詢的代碼應該怎么寫,求教
作者: 13152174087    時間: 2015-5-14 23:29
大家幫幫忙想象辦法,問了好多人了都不知道咋回事
作者: yuexin9311    時間: 2015-5-15 09:16
你用雙串口么
作者: 13152174087    時間: 2015-5-15 18:11
沒有,就用了一個
作者: 13152174087    時間: 2015-5-16 02:48
親們幫幫忙啦,瓶頸問題
作者: ahshmj    時間: 2015-5-17 19:53
"bstv51.h"這個頭文件存在哪兒?

“uchar” keil是不認識的。
應先定義:
#define uchar unsigned char
作者: fsnhjjj    時間: 2015-5-17 20:01
新人同問
作者: 13152174087    時間: 2015-5-18 19:06
終于解決了,程序是沒有問題的是把keil了的晶振頻率沒有改

作者: 13152174087    時間: 2015-5-18 19:06
希望這次的經驗可以幫到更多的人
作者: gsprest    時間: 2017-7-19 20:47
學習了




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1