久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3168|回復: 9
收起左側

為什么我的串口助手不顯示字符啊?附單片機源程序

[復制鏈接]
ID:508775 發表于 2019-4-18 16:47 | 顯示全部樓層 |閱讀模式
如圖所示,為什么設置了SBUF=字符串之后不能在串口端顯示字符呢?
QQ截圖20190418163051.jpg

單片機代碼如下,本人小白,求大佬解釋下哈哈。
#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;
sbit LED=P2^0;
u8 dat;
void delay(u16 i)
{
        while(i--);
}

void UstartInit()
{
        SCON=0X50;               
        TMOD=0X20;                        
        PCON=0X80;               
        TH1=0XF3;                                
        TL1=0XF3;
        ES=1;                                                
        EA=1;                                                
        TR1=1;                                       
}


void main()
{
        u16 i;
        UstartInit();
        SBUF = "haha";
        while(!TI);
        TI=0;
               
}

void Ustart() interrupt 4
{
        u8 receiveData;
        receiveData=SBUF;
        RI=0;
        SBUF=receiveData;
        while(!TI);
        TI=0;
}


回復

使用道具 舉報

ID:508775 發表于 2019-4-18 21:20 | 顯示全部樓層
這里HEX顯示全是零,也就是都未送進去?到底是為什么呢,希望大神能夠說一下,小白實在是沒辦法。
回復

使用道具 舉報

ID:508775 發表于 2019-4-18 21:21 | 顯示全部樓層
#include "reg52.h"

typedef unsigned int uint;
typedef unsigned char uchar;

uchar zifuchuan[]="6544 ";

void delay(unsigned char i)
{
        unsigned char j,k;
        for(j=i;j>0;j--)
  {
    for(k=90;k>0;k--);
        }
}

void ustartinit()
{
        SCON=0X50;                        //???????1
        TMOD=0X20;                        //?????????2
        PCON=0X80;                        //?????
        TH1=0XF3;                                //????????,??????4800?
        TL1=0XF3;
        ES=1;                                                //??????
        EA=1;                                                //?????
        TR1=1;                                        //?????

}

void send(uchar d)
{
        SBUF=d;
        TI=1;
        while(!TI);
        TI=0;
}

void sendc(uchar *pd)
{
        while((*pd)!='\0')
        {
                send(*pd);
                pd++;
        }
       
}

void main()
{
        ustartinit();
        while(1)
        {
                sendc(zifuchuan);
        }
       
}

void uart(void) interrupt 4
{
        uchar receiveData;

        receiveData=SBUF;//????????
        RI = 0;//?????????
        SBUF=receiveData;//???????????????
        while(!TI);                         //????????
        TI=0;       
}

               
               
回復

使用道具 舉報

ID:508775 發表于 2019-4-18 21:23 | 顯示全部樓層
#include "reg52.h"

typedef unsigned int uint;
typedef unsigned char uchar;

uchar zifuchuan[]="6544 ";

void delay(unsigned char i)
{
        unsigned char j,k;
        for(j=i;j>0;j--)
  {
    for(k=90;k>0;k--);
        }
}

void ustartinit()
{
        SCON=0X50;                        //???????1
        TMOD=0X20;                        //?????????2
        PCON=0X80;                        //?????
        TH1=0XF3;                                //????????,??????4800?
        TL1=0XF3;
        ES=1;                                                //??????
        EA=1;                                                //?????
        TR1=1;                                        //?????

}

void send(uchar d)
{
        SBUF=d;
        TI=1;
        while(!TI);
        TI=0;
}

void sendc(uchar *pd)
{
        while((*pd)!='\0')
        {
                send(*pd);
                pd++;
        }
       
}

void main()
{
        ustartinit();
        while(1)
        {
                sendc(zifuchuan);
        }
       
}

void uart(void) interrupt 4
{
        uchar receiveData;

        receiveData=SBUF;//????????
        RI = 0;//?????????
        SBUF=receiveData;//???????????????
        while(!TI);                         //????????
        TI=0;       
}


這個程序也不行,在HEX顯示的時候接收端全是零,但是為什么什么都不顯示呢,這是為什么呢,hex顯示就表示我這個數據實際沒寫進去吧,這該怎么辦呢,問題出在哪里呢,是我初始參數設置錯誤了嗎,還是怎么回事?
回復

使用道具 舉報

ID:508775 發表于 2019-4-18 21:26 | 顯示全部樓層
#include "reg52.h"

typedef unsigned int uint;
typedef unsigned char uchar;

uchar zifuchuan[]="6544 ";

void delay(unsigned char i)
{
        unsigned char j,k;
        for(j=i;j>0;j--)
  {
    for(k=90;k>0;k--);
        }
}

void ustartinit()
{
        SCON=0X50;                        //???????1
        TMOD=0X20;                        //?????????2
        PCON=0X80;                        //?????
        TH1=0XF3;                                //????????,??????4800?
        TL1=0XF3;
        ES=1;                                                //??????
        EA=1;                                                //?????
        TR1=1;                                        //?????

}

void send(uchar d)
{
        SBUF=d;
        TI=1;
        while(!TI);
        TI=0;
}

void sendc(uchar *pd)
{
        while((*pd)!='\0')
        {
                send(*pd);
                pd++;
        }
       
}

void main()
{
        ustartinit();
        while(1)
        {
                sendc(zifuchuan);
        }
       
}

void uart(void) interrupt 4
{
        uchar receiveData;

        receiveData=SBUF;//????????
        RI = 0;//?????????
        SBUF=receiveData;//???????????????
        while(!TI);                         //????????
        TI=0;       
}

               
               
回復

使用道具 舉報

ID:508775 發表于 2019-4-18 21:27 | 顯示全部樓層
我用串口助手HEX顯的話,全是零,但是接受數是增加的,這是為什么呢,是我初始參數設置錯了嗎?
回復

使用道具 舉報

ID:94031 發表于 2019-4-18 21:49 | 顯示全部樓層
SBUF里只能放一個字符,不能放字符串的。
回復

使用道具 舉報

ID:213173 發表于 2019-4-18 22:23 | 顯示全部樓層
改這樣試試
#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;
//sbit LED=P2^0;
sbit key=P2^0;
u8 dat;

u8 table[]="haha";

void delay(u16 i)
{
        while(i--);
}

void UstartInit()                //波特率4800 晶振12MHz
{
        PCON= 0x80;                //使能波特率倍速位SMOD
        SCON= 0x50;                //8位數據,可變波特率
        TMOD= 0x20;                //設定定時器1為8位自動重裝方式
        TL1 = 0xF3;                //設定定時初值
        TH1 = 0xF3;                //設定定時器重裝值
        ET1 = 0;                //禁止定時器1中斷
        TR1 = 1;                //啟動定時器1
        ES=1;                                                
        EA=1;                                                                                    
}
void SendOneByte(u8 c)
{
    SBUF = c;                //發送數據
    while(!TI);        //等待發送完成
    TI = 0;                        //發送中斷請求標志位清0
}

void main()
{
        u8 i;
        UstartInit();
        while(1)
        {
                if(key==0)
                {
                        delay(1000);
                        if(key==0)
                        {
                                while(!key);
                                EA=0;
                                for(i=0;i<4;i++)
                                        SendOneByte(table[i]);
                                EA=1;
                        }
//                        SBUF = "haha";
//                        while(!TI);
//                        TI=0;               
                }
        }
}

void Ustart() interrupt 4
{
        u8 receiveData;
        RI=0;
        receiveData=SBUF;
        SBUF=receiveData;
        while(!TI);
        TI=0;
}
回復

使用道具 舉報

ID:508775 發表于 2019-4-20 08:08 | 顯示全部樓層
wulin 發表于 2019-4-18 22:23
改這樣試試
#include "reg52.h"

好的,我試試。
回復

使用道具 舉報

ID:508775 發表于 2019-4-20 08:08 | 顯示全部樓層
xuyaqi 發表于 2019-4-18 21:49
SBUF里只能放一個字符,不能放字符串的。

后來用一個字符串的也不行哈哈
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产ts一区| 四虎永久| 婷婷综合五月天 | 玖玖色在线视频 | 日韩免费视频一区二区 | 中国一级特黄真人毛片 | 久久综合伊人一区二区三 | 亚洲精品视频免费 | 操操日| 香蕉久久a毛片 | 看av电影| 成人久久久| 精品99爱视频在线观看 | 欧美日韩国产一区二区三区 | 欧美日本在线观看 | 欧美在线亚洲 | 免费黄色片视频 | 国产麻豆乱码精品一区二区三区 | www.久久久久久久久久久 | 日韩一区二区精品 | 国产丝袜一区二区三区免费视频 | 欧美日韩久久久久 | 国产成人综合在线 | 国产伦精品一区二区三毛 | 精品久久久久久久久久久久久久 | 成人久久久 | 久久久九九| av天天干| av网站免费 | 91免费观看| 国产1区2区3区 | 日韩欧美在线观看 | 国产成人jvid在线播放 | 亚洲精品欧美精品 | 色综合国产 | 亚洲午夜一区二区 | 国产成人精品区一区二区不卡 | 97视频人人澡人人爽 | 欧美亚洲国产一区二区三区 | 日本精品视频一区二区三区四区 | 激情av|