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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2660|回復: 2
收起左側

關于串口通信接收問題

[復制鏈接]
ID:202054 發表于 2017-5-18 12:43 | 顯示全部樓層 |閱讀模式
用的是無線模塊接受數據,串口數據發送接收都沒問題,通過串口助手調試的,現在的問題是,我把其中一個無線模塊和單片機連在一起。另一個模塊和鍵盤連在一起。當按鍵按下時,發送一個數據,現在數據接收到了。但是怎么把數據從SBUF中讀出來,程序應該怎么寫。下面是我寫的一段,實現的功能是當接收到數據1時,小燈亮,數據2時第二個小燈亮。不知道哪里有問題接收程序

#include<reg51.h>
#define uchar unsigned char

sbit led1=P2^1;
sbit led2=P2^2;
uchar a;
void UsartConfiguration()
{   SCON=0X50;                        //設置為工作方式1
        TMOD=0X20;                        //設置計數器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XFA;                                //計數器初始值設置,注意波特率是9600
        TL1=0XFA;
        TR1=1;
}

void main()
{
        UsartConfiguration();
     if(a==1)
{led1=0};
else if(a==2)
{led2=0};
while(1)
}
void ser() interrupt 4
{
  RI=0;
  a=SBUF;
}

               



回復

使用道具 舉報

ID:169944 發表于 2017-5-18 19:01 | 顯示全部樓層
if(RI==1)                     // 是否有數據到來
              {
         RI = 0;      需要手動置零
         tmp = SBUF;     把數據給了tmp
                 ctrl();        執行要執行的函數
             }

void init()        //串口初始化
{
    ES=0;                                                                  //關中斷
    SCON = 0x50;                        // REN=1允許串行接受狀態,串口工作模式1, //10位UART(1位起始位,8位數據位,1位停止位,無奇偶校驗),波特率可變

    TMOD = 0x20;                        // 定時器1工作于方式2,8位自動重載模式, 用于產生波特率
    TH1=TL1=0xFD;                       // 波特率9600 (本次測試采用晶振為11.0592)

    PCON &= 0x7f;                       // 波特率不倍增
    TR1 = 1;                                                          //定時器1開始工作,產生波特率
    //發送標志位置0
    TI=0;                                                                  //接收標志位置0
    RI=0;
    //EA=0;
    ES=1;
}
回復

使用道具 舉報

ID:202403 發表于 2017-5-19 08:52 | 顯示全部樓層
定義全局變量,中斷里存,外面再處理。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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