衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用延時法模塊串口

CHANBAEK ? 來源:嵌入式開發教程 ? 作者:郭學提 ? 2023-07-12 11:52 ? 次閱讀

使用波特率為9600bpS,晶振頻率為11.0592MHz,通過計算可知,串口的每位需延時0.104ms,通過執行96個指令周期可能完成0.104ms的延時。與其相關的程序在結構上可分為:IO口定義、串口發送函數、串口接收函數、延時函數。下面依次介紹各個部分。

1.IO口定義程序等

這部分程序主要包括基本的IO口定義、全局變量定義、頭文件包含、函數聲明等。為后面程序提供編程基本。其程序代碼如下:

sbit  RXD1 = 0x90; 
sbit  TXD1 = 0x91; 
#define  WR_delay     44 //寫延時 
#define  RD_delay     43 //讀延時

2.串口發送函數

串口發送函數首先發送起始位,再發送數據,根據通信協議選擇是否發送校驗位。最后發送停止位。延時法模擬串口發送流程如圖所示。

圖片

其程序代碼如下:

#define  Check_bit_switch_on_off    0//不使用校驗位
uchar Check_bit;
//往串口寫一個字節 
void Send_Byte(uchar input,bit Check_bit) 
{ 
    uchar i=8; 
    TXD=(bit)0; //發送啟始位 
    Delay(39); 
    //發送8位數據位 
    while(i--) 
    { 
      TXD=(bit)(input&0x01); //先傳低位 
      Delay(36); 
      input=input >>1; 
    } 
    //發送校驗位(無) 
    #if Check_bit_switch_on_off
    {
      TXD1=(bit)(Check_bit); //發送校驗位
      Delay(36); 
    }
    #else
    Check_bit = Check_bit;
    #endif
    TXD1=(bit)1; //發送結束 位 
    Delay(46); 
}

3.串口接收函數

串口接收函數首先等待起始位,然后接收數據,根據通信協議選擇是否需要接收校驗位。最后等待停止位。延時法模擬串口接收流程如圖所示。

圖片

其程序代碼如下:

//從串口讀一個字節 
uchar Revice_Byte(void) 
{ 
    uchar Output=0; 
    uchar i=8; 
    uchar temp=RD_delay; 
    //發送8位數據位 
    Delay(RD_delay *1.5); //此處注意,等過起始位 
    while(i--) 
    { 
      Output > >=1; 
      if(RXD1) 
        Output |=0x80; //先收低位 
      Delay(35); //(96-26)/2,循環共 
      //占用26個指令周期 
    } 
    //接收校驗位
    #if Check_bit_switch_on_off
    (Check_bit)=TXD; //接收校驗位
    Delay(35); 
    #endif
    while(--temp) //在指定的 
    //時間內搜尋結束位。
    { 
      Delay(1); 
      if(RXD1)
      break; //收到結束位便退出 
    } 
    return Output; 
}

用延時方式可以模擬多個個串口,但是使用延時方式模擬的串口在接收上存在一定的難度,主要是采樣定位要求嚴格,另外還必須知道每條語句的指令周期數。在調試過程中,讀者可以借助編譯軟件通過反匯編的方式查看編譯后的匯編語句,已確定你所使用的C語句的執行時間。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 晶振
    +關注

    關注

    34

    文章

    2899

    瀏覽量

    68316
  • 串口
    +關注

    關注

    14

    文章

    1558

    瀏覽量

    77052
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62977
  • 波特率
    +關注

    關注

    2

    文章

    308

    瀏覽量

    34280
  • IO口
    +關注

    關注

    3

    文章

    170

    瀏覽量

    24202
收藏 人收藏

    評論

    相關推薦

    有關串口通訊延時問題的討論

    最簡單的串口通訊作為子VI(寫、延時50ms、讀),然后單獨運行子VI可以很好的通訊,然后在主程序調用該串口通訊子VI時問題來了,寫進去以后要延時五六秒才能有返回數據,而且只要調用該子
    發表于 12-24 16:49

    串口通信延時發送問題or調用延時問題

    本帖最后由 eehome 于 2013-1-5 10:08 編輯 有沒有人遇到過以下奇怪的串口通信問題哈:簡單的串口讀寫作為子VI供主程序調用,單獨運行時讀寫正常,但是一旦在主程序中運行時就出
    發表于 12-25 09:55

    串口延時問題

    最近寫串口程序,遇到如下問題,在寫與讀之間設置延時,波特率為187500,發的16字節,收的8字節。但是運行一次延時需要設置在7ms以上才能每次都收到數據,只能延時設置小點,只運行一次
    發表于 07-01 21:12

    Labview串口讀寫的延時問題

    先說一下通訊的目的:讀取PLC中保持寄存器(MD)的值,通訊方式采用Modbus 485串口,波特率設置為19200;我采用VISA寫函數將Modbus讀指令寫入串口中,再延時10ms后,采用
    發表于 12-01 09:23

    單片機IO 口模擬串口通信低到延時

    單片機IO 口模擬串口通信低到延時,void WByte(uchar input){uchar i=8;TXD=(bit)0;//發送啟始位Delay2cp(39);//發送8位數據位while
    發表于 05-18 14:31

    為什么4432無線串口模塊有很大延時

    4432無線串口模塊直接接在USB轉TTL上通信就沒有延時。。。。為什么接到單片機上就有延時。。。。。。。而且寫得串口協議也都不能用了。。。
    發表于 07-21 21:44

    串口通訊模塊的信息與使用

    串口通訊模塊的信息與使用
    發表于 08-20 17:04 ?27次下載

    SCI串口模塊

    SCI串口模塊
    發表于 10-20 10:33 ?5次下載
    SCI<b class='flag-5'>串口</b><b class='flag-5'>模塊</b>

    一文深度了解串口WiFi模塊作用,串口WiFi模塊的應用場景

    串口WiFi模塊作用,串口WiFi模塊的應用場景
    發表于 03-01 14:25 ?28次下載

    AN1450 - 延時模塊去抖動器

    在本應用筆記中,我們將使用PIC10F322實現延時模塊/去抖動器。其延時值可設定,范圍介于2 Us至193 ps之間。它可有效用作噪聲鑒別器,也可用于開關去抖動。用作延時
    發表于 03-27 18:44 ?1次下載

    51內核軟件延時串口的巧妙方法介紹

    51內核軟件延時串口的巧妙方法介紹,具體的跟隨小編一起來了解一下。
    的頭像 發表于 07-28 11:28 ?4181次閱讀
    51內核軟件<b class='flag-5'>延時</b>和<b class='flag-5'>串口</b>的巧妙方法介紹

    你不知道單片機延時的種種情況

    模塊某協議的時序,比如串口,IIC的通訊協議,使用延時來滿足時序變化的要求和通訊速度的控制。
    發表于 05-04 17:40 ?5714次閱讀
    你不知道單片機<b class='flag-5'>延時</b>的種種情況

    無線串口模塊的概念與選型要點

    首先我們來說一下什么是無線串口模塊?無線模塊即是通過無線電信號來傳輸數據的軟硬件模組,串口模塊即是使用
    的頭像 發表于 06-17 11:42 ?2482次閱讀

    串口模塊選型要點

    無線模塊:通過無線電信號來傳輸數據的軟硬件模組; 串口模塊:使用串口通信協議來傳輸數據的軟硬件模組; 無線串口
    發表于 05-31 15:23 ?3次下載
    <b class='flag-5'>串口</b><b class='flag-5'>模塊</b>選型要點

    什么是無線串口模塊?無線串口模塊怎么用?

    常看到很多網友在百度知道,天涯問答,搜搜問問等問答平臺上提問什么是無線串口模塊,無線串口模塊怎么用等等這樣的問題。可能是剛接觸這個行業的人想了解這樣的產品才會產生疑問,思為無線針對這個
    的頭像 發表于 08-04 14:01 ?5956次閱讀
    什么是無線<b class='flag-5'>串口</b><b class='flag-5'>模塊</b>?無線<b class='flag-5'>串口</b><b class='flag-5'>模塊</b>怎么用?
    水果老虎机游戏| 百家乐视频挖坑| 外围赌球| 百家乐双龙出海注码法| 百家乐官网分析仪博彩正网| 三国百家乐的玩法技巧和规则 | 百家乐投注双赢技巧| r百家乐官网娱乐下载| 百家乐平玩法这样| 莫斯科百家乐官网的玩法技巧和规则| 鼎尊国际娱乐| 代理百家乐试玩| 戒掉百家乐官网的玩法技巧和规则 | 百家乐官网娱乐城会员| 太阳城蓝山园| 百家乐官网水浒传| 88娱乐城官方网站| 至尊百家乐赌场娱乐网规则| 澳门百家乐官网单注下注| 大发888娱乐官方网站| 川宜百家乐分析软件| 太阳城百家乐官网网址--| 六合彩现场报码| 顶尖百家乐的玩法技巧和规则 | 申博太阳城官方网站| 百家乐现金网平台排行榜| 稳赢百家乐官网的玩法技巧| 海立方百利宫娱乐城| 威尼斯人娱乐棋牌平台| 百家乐是否有路子| 百家乐官网赌场牌路分析| 伊吾县| 大发888手机版下载| 百家乐娱乐城备用网址| 百家乐官网英皇娱乐网| 墨竹工卡县| 大发888线上娱乐城加盟合作| 百家乐庄闲对冲| 百家乐官网群的微博| 鲨鱼百家乐官网游戏平台| 博赢国际娱乐城|