1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4073|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

想讓c51單片機串口實現(xiàn)加1計數(shù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:744346 發(fā)表于 2020-5-25 14:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include "reg52.h"                         //此文件中定義了單片機的一些特殊功能寄存器

  2. typedef unsigned int u16;          //對數(shù)據(jù)類型進行聲明定義
  3. typedef unsigned char u8;

  4. void UsartInit()
  5. {
  6.         SCON=0X50;                        //設(shè)置為工作方式1
  7.         TMOD=0X20;                        //設(shè)置計數(shù)器工作方式2
  8.         PCON=0X80;                        //波特率加倍
  9.         TH1=0XF3;                                //計數(shù)器初始值設(shè)置,注意波特率是4800的
  10.         TL1=0XF3;
  11.         ES=1;                                                //打開接收中斷
  12.         EA=1;                                                //打開總中斷
  13.         TR1=1;                                        //打開計數(shù)器
  14. }

  15. void main()
  16. {       
  17.         UsartInit();  //        串口初始化
  18.         while(1);               
  19. }

  20. void Usart() interrupt 4
  21. {
  22.         u8 receiveData;

  23.         receiveData=SBUF;//出去接收到的數(shù)據(jù)
  24.         if(RI)
  25.         {
  26.         RI=0;
  27.         SBUF=receiveData+1;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  28.         }
  29.         if(TI)
  30.         {
  31.         TI=0;
  32.         }                                                 //清除發(fā)送完成標志位
  33. }
復(fù)制代碼
我的代碼是這樣的我想讓subf實現(xiàn)每一次返回后都能加1,就是我第一次發(fā)送的是1,可以返回值是2,可以在不改變串口通信助手的情況下把第二次發(fā)送的改成2么?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:94031 發(fā)表于 2020-5-25 15:19 | 只看該作者
你的這個要求,需要改變串口通信助手軟件,否則實現(xiàn)不了。
回復(fù)

使用道具 舉報

板凳
ID:213173 發(fā)表于 2020-5-25 15:53 | 只看該作者
串口組手的發(fā)送和接收是分開的,沒有按接收到的數(shù)據(jù)再發(fā)送的選項。
你這樣寫不能保證發(fā)送完畢TI被清0。
    if(TI)
    {
           TI=0;
    }
要這樣寫才對
void Usart() interrupt 4
{
        u8 receiveData;
        RI=0;
        receiveData=SBUF;//保存接收到的數(shù)據(jù)
        SBUF=receiveData+1;//將接收到的數(shù)據(jù)+1返回上位機
        while(!TI);//等待發(fā)送完成
        TI=0;//清除發(fā)送完成標志位
}
回復(fù)

使用道具 舉報

地板
ID:298663 發(fā)表于 2020-5-25 16:40 | 只看該作者
你的代碼有問題,最終可能會導(dǎo)致這樣的情況,你無論發(fā)送什么數(shù)字都串口都沒有反饋數(shù)據(jù)過來,或者你發(fā)送任何數(shù)字反饋都是1.  幫你代碼改動下, 你仿真看看
#include "reg52.h"                         //此文件中定義了單片機的一些特殊功能寄存器

typedef unsigned int u16;          //對數(shù)據(jù)類型進行聲明定義
typedef unsigned char u8;



void UsartInit()
{
        SCON=0X50;                        //設(shè)置為工作方式1
        TMOD=0X20;                        //設(shè)置計數(shù)器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XF3;                                //計數(shù)器初始值設(shè)置,注意波特率是4800的
        TL1=0XF3;
        ES=1;                                                //打開接收中斷
        EA=1;                                                //打開總中斷
        TR1=1;                                        //打開計數(shù)器
}

void main()
{        
        UsartInit();  //        串口初始化
        while(1);               
}

void Usart() interrupt 4
{
        
        u8 receiveData;
     
        if(RI)
        {
        RI=0;
        SBUF=receiveData+1;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
        }
        if(TI)
        {
        TI=0; //清除發(fā)送完成標志
         receiveData=SBUF;  //只要有發(fā)送,就把發(fā)送緩存區(qū)的數(shù)據(jù)賦值給接收數(shù)據(jù)
         RI=1; //這里添加用意:當你發(fā)送數(shù)據(jù)的時候,必須設(shè)置接收標志位,才可以觸發(fā)接收中斷
        }                                                
}
回復(fù)

使用道具 舉報

5#
ID:744346 發(fā)表于 2020-5-26 09:39 | 只看該作者
xuyaqi 發(fā)表于 2020-5-25 15:19
你的這個要求,需要改變串口通信助手軟件,否則實現(xiàn)不了。

主要是我們師傅要我們實現(xiàn)通過串口通信按下計數(shù)這個要求
回復(fù)

使用道具 舉報

6#
ID:744346 發(fā)表于 2020-5-26 09:42 | 只看該作者
wulin 發(fā)表于 2020-5-25 15:53
串口組手的發(fā)送和接收是分開的,沒有按接收到的數(shù)據(jù)再發(fā)送的選項。
你這樣寫不能保證發(fā)送完畢TI被清0。
  ...

感謝您的幫助
回復(fù)

使用道具 舉報

7#
ID:456196 發(fā)表于 2020-5-26 10:22 | 只看該作者
應(yīng)該不行吧,可以用labview啥的,自己做個簡單的串口通信上位機
回復(fù)

使用道具 舉報

8#
ID:319023 發(fā)表于 2020-5-26 10:31 | 只看該作者
應(yīng)該是有一個計數(shù)的變量,有串口接收數(shù)據(jù)就計數(shù)加1吧
回復(fù)

使用道具 舉報

9#
ID:94031 發(fā)表于 2020-5-26 11:36 | 只看該作者
樹先生37 發(fā)表于 2020-5-26 09:39
主要是我們師傅要我們實現(xiàn)通過串口通信按下計數(shù)這個要求

可以用兩個單片機完成師傅要。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表