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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3966|回復: 10
打印 上一主題 下一主題
收起左側

52單片機學習中,通過串口發字符的問題,請大俠幫忙

[復制鏈接]
跳轉到指定樓層
樓主
一臺成品機器通過串口助手找出來的控制代碼:FE  68  00  01  0F  00  00  76  16 。我這里用了如下程序代碼,可是就發不出這樣的 16 進制代碼,只能發出相同的字符,希望有大俠給指點指點,謝謝!



#include <reg52.h>
#define botelv                /*波特率定義為1200*/
unsigned char zifuchuan[]="FE 68 00 01 0F 00 00 76 16";                        //待顯示字符。
volatile unsigned char sending;
sbit s2=P3^4;

void delay(unsigned char i)
{
        unsigned char j,k;
        for(j=i;j>0;j--)
                for(k=90;k>0;k--);
}
void init(void)                                //串口初始化
{
EA=0; //暫時關閉中斷
TMOD&=0x0F;  //定時器1模式控制在高4位
TMOD|=0x20;    //定時器1工作在模式2,自動重裝模式
SCON=0x50;     //串口工作在模式1
TH1=0xE8;  //計算定時器重裝值
TL1=0xE8;
//PCON|=0x80;    //串口波特率加倍
ES=1;         //串行中斷允許
TR1=1;        //啟動定時器1
REN=1;        //允許接收
EA=1;         //允許中斷
}

void send(unsigned char d)                  //發送一個字節的數據,形參d即為待發送數據。
{

SBUF=d; //將數據寫入到串口緩沖
sending=1;         //設置發送標志
while(sending); //等待發送完畢
}

void sendc(unsigned char * pd)
{
while((*pd)!='\0') //發送字符串,直到遇到0才結束
{
  send(*pd); //發送一個字符
  pd++;  //移動到下一個字符
}
}

void main()
{
        init();
        while(1)
        {
                if(s2==0)
                {
                        delay(20);
                        if(!s2)
                        {
                                while(!s2);               
                                sendc(zifuchuan);
                        }
                }
        }
}

void uart(void) interrupt 4                 //串口發送中斷
{
if(RI)    //收到數據
{
  RI=0;   //清中斷請求
}
else      //發送完一字節數據
{
  TI=0;
  sending=0;  //清正在發送標志
}
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:82765 發表于 2017-7-7 18:25 | 只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

板凳
ID:210756 發表于 2017-7-7 19:54 | 只看該作者
unsigned char zifuchuan[]="FE 68 00 01 0F 00 00 76 16";&nbsp;改成unsigned char zifuchuan[]={0xfe,……}這種形式
回復

使用道具 舉報

地板
ID:103316 發表于 2017-7-7 20:03 | 只看該作者
首先,你發送的是字符串,也就是"FE 68 00 01 0F 00 00 76 16"這一串的ASCII碼,你要寫成unsigned char zifuchuan[]=0XFE,0X68,0X00,0X01,0X0F,0X00,0X00,0X76,0X16";還有,51單片機的停止位是1位,你的串口調試助手上面是兩位
回復

使用道具 舉報

5#
ID:161951 發表于 2017-7-7 22:23 | 只看該作者
怯情久° 發表于 2017-7-7 20:03
首先,你發送的是字符串,也就是"FE 68 00 01 0F 00 00 76 16"這一串的ASCII碼,你要寫成unsigned char zif ...

unsigned char zifuchuan[]=0XFE,0X68,0X00,0X01,0X0F,0X00,0X00,0X76,0X16";
改了問題依舊喲  串口調試助手停止位也改成1位了。
回復

使用道具 舉報

6#
ID:213173 發表于 2017-7-8 07:10 | 只看該作者
hdle 發表于 2017-7-7 22:23
unsigned char zifuchuan[]=0XFE,0X68,0X00,0X01,0X0F,0X00,0X00,0X76,0X16";
改了問題依舊喲  串口調試 ...

你改成這樣還是字符串,不要用雙引號,要用花括號,如樓上所述unsigned char zifuchuan[]={0XFE,0X68,0X00,0X01,0X0F,0X00,0X00,0X76,0X16};
回復

使用道具 舉報

7#
ID:103316 發表于 2017-7-8 09:09 | 只看該作者
hdle 發表于 2017-7-7 22:23
unsigned char zifuchuan[]=0XFE,0X68,0X00,0X01,0X0F,0X00,0X00,0X76,0X16";
改了問題依舊喲  串口調試 ...

沒打全,是unsigned char zifuchuan[]={0XFE,0X68,0X00,0X01,0X0F,0X00,0X00,0X76,0X16};
還有你的發送代碼要改一下,別用指針了,既然知道要發送幾個數據,直接發送固定長度的字符串就行。 void sendc(unsigned char  *pd)
{
unsigned char i;
for(i=0;i<9;i++)
{
  send(*pd); //發送一個字符
}
}
回復

使用道具 舉報

8#
ID:161951 發表于 2017-7-8 10:43 | 只看該作者
怯情久° 發表于 2017-7-8 09:09
沒打全,是unsigned char zifuchuan[]={0XFE,0X68,0X00,0X01,0X0F,0X00,0X00,0X76,0X16};
還有你的發送 ...

修行的路上有困難也不會害怕了,在51黑中有你們真好!
大俠依你的指點,問題解決了,非常的感謝!
sendc(unsigned char  *pd)
{
unsigned char i;
for(i=0;i<9;i++)
{
  send(*pd); //發送一個字符
  pd++;  //移動到下一個字符
}
}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产高清精品一区二区三区 | 五月综合激情在线 | 国产亚洲www| 奇米久久久 | 欧美韩一区二区三区 | 精品一区二区三区免费视频 | 伊人春色成人 | 亚洲人成人一区二区在线观看 | 欧美天堂一区 | 97超碰在线播放 | 伊人热久久 | 国产美女特级嫩嫩嫩bbb片 | 亚洲福利视频网 | 91伊人| 99精品网站 | 精品欧美一区二区三区久久久 | 国产精品久久久久久久久动漫 | 视频在线亚洲 | 亚洲精品99 | 欧美日韩视频在线播放 | 国内自拍偷拍 | 精品久久久久一区二区国产 | 欧美视频在线免费 | 一级黄色片在线免费观看 | 欧美freesex黑人又粗又大 | 在线免费观看黄a | 国产探花在线精品一区二区 | 福利视频日韩 | 97色在线视频 | 成人免费av在线 | 狠狠操av | 一色一黄视频 | 九九在线视频 | 日韩一区二区三区四区五区 | 91在线看网站 | 国产欧美精品一区二区色综合朱莉 | 欧美在线视频一区二区 | 青青草精品 | 国产精品视频网 | heyzo在线 | 精品中文字幕视频 |