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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4004|回復(fù): 8
收起左側(cè)

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

[復(fù)制鏈接]
ID:744346 發(fā)表于 2020-5-25 14:47 | 顯示全部樓層 |閱讀模式
  1. #include "reg52.h"                         //此文件中定義了單片機(jī)的一些特殊功能寄存器

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

  4. void UsartInit()
  5. {
  6.         SCON=0X50;                        //設(shè)置為工作方式1
  7.         TMOD=0X20;                        //設(shè)置計(jì)數(shù)器工作方式2
  8.         PCON=0X80;                        //波特率加倍
  9.         TH1=0XF3;                                //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800的
  10.         TL1=0XF3;
  11.         ES=1;                                                //打開(kāi)接收中斷
  12.         EA=1;                                                //打開(kāi)總中斷
  13.         TR1=1;                                        //打開(kāi)計(jì)數(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ā)送完成標(biāo)志位
  33. }
復(fù)制代碼
我的代碼是這樣的我想讓subf實(shí)現(xiàn)每一次返回后都能加1,就是我第一次發(fā)送的是1,可以返回值是2,可以在不改變串口通信助手的情況下把第二次發(fā)送的改成2么?
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2020-5-25 15:19 | 顯示全部樓層
你的這個(gè)要求,需要改變串口通信助手軟件,否則實(shí)現(xiàn)不了。
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-5-25 15:53 | 顯示全部樓層
串口組手的發(fā)送和接收是分開(kāi)的,沒(méi)有按接收到的數(shù)據(jù)再發(fā)送的選項(xiàng)。
你這樣寫不能保證發(fā)送完畢TI被清0。
    if(TI)
    {
           TI=0;
    }
要這樣寫才對(duì)
void Usart() interrupt 4
{
        u8 receiveData;
        RI=0;
        receiveData=SBUF;//保存接收到的數(shù)據(jù)
        SBUF=receiveData+1;//將接收到的數(shù)據(jù)+1返回上位機(jī)
        while(!TI);//等待發(fā)送完成
        TI=0;//清除發(fā)送完成標(biāo)志位
}
回復(fù)

使用道具 舉報(bào)

ID:298663 發(fā)表于 2020-5-25 16:40 | 顯示全部樓層
你的代碼有問(wèn)題,最終可能會(huì)導(dǎo)致這樣的情況,你無(wú)論發(fā)送什么數(shù)字都串口都沒(méi)有反饋數(shù)據(jù)過(guò)來(lái),或者你發(fā)送任何數(shù)字反饋都是1.  幫你代碼改動(dòng)下, 你仿真看看
#include "reg52.h"                         //此文件中定義了單片機(jī)的一些特殊功能寄存器

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



void UsartInit()
{
        SCON=0X50;                        //設(shè)置為工作方式1
        TMOD=0X20;                        //設(shè)置計(jì)數(shù)器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XF3;                                //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800的
        TL1=0XF3;
        ES=1;                                                //打開(kāi)接收中斷
        EA=1;                                                //打開(kāi)總中斷
        TR1=1;                                        //打開(kāi)計(jì)數(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ā)送完成標(biāo)志
         receiveData=SBUF;  //只要有發(fā)送,就把發(fā)送緩存區(qū)的數(shù)據(jù)賦值給接收數(shù)據(jù)
         RI=1; //這里添加用意:當(dāng)你發(fā)送數(shù)據(jù)的時(shí)候,必須設(shè)置接收標(biāo)志位,才可以觸發(fā)接收中斷
        }                                                
}
回復(fù)

使用道具 舉報(bào)

ID:744346 發(fā)表于 2020-5-26 09:39 | 顯示全部樓層
xuyaqi 發(fā)表于 2020-5-25 15:19
你的這個(gè)要求,需要改變串口通信助手軟件,否則實(shí)現(xiàn)不了。

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

使用道具 舉報(bào)

ID:744346 發(fā)表于 2020-5-26 09:42 | 顯示全部樓層
wulin 發(fā)表于 2020-5-25 15:53
串口組手的發(fā)送和接收是分開(kāi)的,沒(méi)有按接收到的數(shù)據(jù)再發(fā)送的選項(xiàng)。
你這樣寫不能保證發(fā)送完畢TI被清0。
  ...

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

使用道具 舉報(bào)

ID:456196 發(fā)表于 2020-5-26 10:22 | 顯示全部樓層
應(yīng)該不行吧,可以用labview啥的,自己做個(gè)簡(jiǎn)單的串口通信上位機(jī)
回復(fù)

使用道具 舉報(bào)

8#
無(wú)效樓層,該帖已經(jīng)被刪除
ID:319023 發(fā)表于 2020-5-26 10:31 | 顯示全部樓層
應(yīng)該是有一個(gè)計(jì)數(shù)的變量,有串口接收數(shù)據(jù)就計(jì)數(shù)加1吧
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2020-5-26 11:36 | 顯示全部樓層
樹(shù)先生37 發(fā)表于 2020-5-26 09:39
主要是我們師傅要我們實(shí)現(xiàn)通過(guò)串口通信按下計(jì)數(shù)這個(gè)要求

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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