亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 單片機串口通信led燈顯示程序問題 [打印本頁]

作者: 撒打算(⊙o⊙)哦    時間: 2020-3-3 15:38
標題: 單片機串口通信led燈顯示程序問題
為什么P2接收了SBUF傳過來的數據之后,單片機上led顯示的情況和數據不一樣

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint num;

void init()
{
        REN=1;
        SM0=0;
        SM1=1;//工作方式一
        TMOD=0X20;
        TH1=0XFD;
        TL1=0XFD; //9600的波特率,
        TR1=1;
        EA=1;
        ES=1;
}

void main()
{
        init();

        while(1)
        {
                P2=num;            //led燈顯示
        }
}

void time() interrupt 4
{        
        num=SBUF;
        RI=0;                   //進入中斷就說么已經接收到數據了        
        SBUF=num;  //發送數據
        while(!TI);
        TI=0;

}


作者: csmyldl    時間: 2020-3-3 19:20
接收的數據是什么?led燈顯示的數據是什么?接收的數據存入num,num又由P2口輸出,這一過程絕對是接收的數據與P2口輸出的數據一致,在P2=num;這一條語句加上一個條件試試,只有當接收到數據就送一次數據到P2口,不要無限次送數據到P2口
作者: wulin    時間: 2020-3-3 21:44
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num;

void init()
{
        REN=1;
        SM0=0;
        SM1=1;//工作方式一
        TMOD=0X20;
        TH1=0XFD;
        TL1=0XFD; //9600的波特率,
        TR1=1;
        EA=1;
        ES=1;
}

void main()
{
        init();
        while(1)
        {
             
        }
}

void time() interrupt 4
{        
        num=SBUF;
        RI=0;                   //進入中斷就說么已經接收到數據了        
        SBUF=num;  //發送數據
        while(!TI);
        TI=0;
        P2=num;            //led燈顯示 0x00~0xff
}

作者: 撒打算(⊙o⊙)哦    時間: 2020-3-4 14:38
csmyldl 發表于 2020-3-3 19:20
接收的數據是什么?led燈顯示的數據是什么?接收的數據存入num,num又由P2口輸出,這一過程絕對是接收的數據與P ...

我電腦輸入一個00的話,我希望SBUF接收到,傳給num,讓led=0x00
作者: 撒打算(⊙o⊙)哦    時間: 2020-3-4 14:40
wulin 發表于 2020-3-3 21:44
#include
#define uchar unsigned char
#define uint unsigned int

試了,不行不管我發送什么數據,LED接受數據之后,只會亮那幾個燈,不會變化
作者: lovexulu    時間: 2020-3-4 16:21
在C語言中,數據類型是很嚴格。你定義num為整型int 為雙字節。串口發送,接收數據一般只有8字節,P端口賦值為8字節。這可以編譯通過,但并不能讓你滿意,期間編譯器進行了數據類型自動轉換。這個實驗我也做過,在串口發送十六進制 00 估計能達到你的目的。
作者: huangzongwu    時間: 2020-3-4 18:51
我前幾天剛好遇到過類似的問題,是沒有使用寄存器禁止優化的聲明導致的,uint num;改為volatile uint num;
作者: wulin    時間: 2020-3-4 19:08
撒打算(⊙o⊙)哦 發表于 2020-3-4 14:40
試了,不行不管我發送什么數據,LED接受數據之后,只會亮那幾個燈,不會變化

如果返回的數據是正確的就不是串口問題,檢查P2外圍電路。




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