學習STC51單片機16(芯片為STC89C52RCRC)

每日一言

????????那些讓你喘不過氣的日子,正是蛻變的開始。

?

串口編程寄存器分析(紅色框里面的這個是串口助手里面生成的波特率初始化函數哈)

我們就根據以上的寄存器分析,因為這個是配置波特率的需要的寄存器

PCON

smod= 0 就是PCON的bit 7 這個位置為0 也就是 我們用8421法可以推算出 0x7F 為 0111 1111 ,那么&上個0x7F那么就會等于 &上一個0111 1111 ?那么我們smod這個位置就會為0 ?,那么我們的波特率就不會加倍

SCON

SCON寄存器的話是控制串口工作模式??有4種方式 ,然后這個TH1也是通過這個SCON寄存器里面的講解來算的

先介紹一下8 位 UART 的含義

在串口工作模式 1(你代碼中使用的模式)中,“8 位 UART” 指:

  • 數據位為 8 位:每次傳輸 1 個字節(8 位)的數據,例如 ASCII 字符(如'A'對應二進制0100 0001)。
  • 無第 9 位:與模式 2/3(9 位 UART)不同,模式 1 不使用 TB8/RB8 位,適合簡單的數據傳輸(如發送文本、傳感器數據等)。

TMOD

這個就是老朋友了,定時器的工作模式

我們一般用按位與和按位或來設置

我們對于串口通信的定時器的模式的話我們就設置為8位的自動重裝載模式

波特率的計算和定時器不可分家

TL1 和TH1 這個啊就是定時器1的兩個8位寄存器

在串口通信中啊,一般使用的是8位自動重載的模式,這個模式是什么意思呢,就是為了計算波特率的準確度,在TL1溢出的時候,TH1會自動將自身的值給TL1,這樣就不會有誤差,精度更高,所以在配置串口通信的時候,我們會將TH1和TL1的值設置成相同的,就是為了計算波特率的精準度高。

Tips:這個scon的8位UART和TMOD 8位自動裝載的這個是沒有一點關系的,不要以為都是8就有什么關系,他們的功能都是獨立的!!!

但實際應用中,模式 1(8 位 UART)+ 定時器 1 模式 2?是最常用的組合,因為:

  • 8 位數據格式滿足大多數場景(如 ASCII、傳感器數據)。
  • 定時器模式 2 的自動重裝機制簡化了波特率控制。

5. 關鍵區別總結

參數

8 位 UART(SCON)

8 位自動重裝(Timer1)

作用

定義串口數據幀格式

生成穩定的波特率時鐘

相關位

SM0=0, SM1=1 (模式 1)

TMOD.6=1, TMOD.5=0 (模式 2)

數據位數

每幀 8 位數據

與數據位無關

波特率控制

依賴定時器溢出率

直接決定溢出率

總結

  • 8 位 UART(SCON)和定時器 1 模式 2(8 位自動重裝)是串口通信的黃金組合,但兩者功能獨立。

講完這個寄存器那我們就要根據這個寄存器為什么要這樣配置我們要搞懂原理

PCON為什么配置PCON &=0x7F?

?這行代碼使用了按位與操作 。0x7F 轉換為二進制是 0111 1111 ,PCON 寄存器與 0x7F 按位與,會將 PCON 寄存器的最高位(即 SMOD 位 )清零,其他位保持不變 ,從而確保 SMOD = 0,使串口波特率不加倍 。

SCON為什么配置成0x50??

????????因為0x50相當于 0101 0000 就是我不用后面的四位不用的位都上0,就是TB8 RB8 TI RI,然后用8421法算出來就是0x50,那為什么是前面4位都是0101呢 ?因為和他們的工作方式有關,這邊我們選擇是是8位UART 所以SM0是0,SM1是1,還有我們運行串口通信所以REN要設為1,所以就是0101 0000 轉換為0x50

TMOD為什么設置為TMOD &= 0x0F; TMOD |= 0x20;????

????????因為我們定時器用的是定時器1,所以只用定時器1,定時器0不變,然后定時器1我們還要設置其為8位的自動重裝載模式,所以先定時器M1M0的位置要為1、0,也說明了這個模式的作用,所以我們先TMOD &= 0x0F;? ? 0x0F是00001111 &上這個之后 定時器0不變,定時器1清0,因為這個是按位&,后面TMOD |= 0x20就是讓M1M0的位置要為1、0 所以就是 0010 0000 ?| 上這個之后定時器1有1為1全0為0 ,所以此時定時器就算設置好了 然后這個0010 0000利用8421法就直接變成 0x20

TL1 TH1為什么設置為 0xFD ????

首先是定時器1,1的來頭

其次要搞清楚為什么相同為什么都是一樣的值

  1. 因為是我們的TMOD設置的是8位自動重裝載模式,為什么要設置的是8位自動重裝載模式,因為這個模式的特性是 TL1當溢出時將TH1存放的值自動重裝入TL1.這樣有利于我們計算波特率的精準度高,所以我們要設置成一樣的初始值。

這些配完就 TR1(運行控制位)=1啟動定時就可以了

別忘了AUXR這個寄存器,這個寄存器的話reg52.h里面是沒有定義的,所以我們用芯片手冊查出來用法為

就直接先sfr AUXR=0x8E先聲明一下 ?后面在初始里面加入 AUXR=0x01就好了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81440.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81440.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81440.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

crud方法命名示例

以下是基于表名dste_project_indicator(項目指標表)的完整命名示例,覆蓋各類增刪改查場景: 1. 表名與實體類映射 // 表名:dste_project_indicator // 實體類:DsteProjectIndicatorEntity public class Ds…

AI時代新詞-人工智能生成內容(AIGC)

一、什么是人工智能生成內容(AIGC)? 人工智能生成內容(Artificial Intelligence Generated Content,簡稱AIGC)是指利用人工智能技術生成的各種形式的內容,包括文字、圖像、音頻和視頻等。AIGC的…

英語六級-閱讀篇

目錄 2023年12月大學英語真題(二) 十五選十(Section A) 單詞表 短語表 譯文 Passage Two(Section C) 單詞表 短語表 譯文 簡介:其實我總結這篇文章就是平時記憶該閱讀文章單詞中出現的…

Python 爬蟲開發

文章目錄 1. 常用庫安裝2. 基礎爬蟲開發2.1. 使用 requests 獲取網頁內容2.2. 使用 BeautifulSoup 解析 HTML2.3. 處理登錄與會話 3. 進階爬蟲開發3.1. 處理動態加載內容(Selenium)3.2. 使用Scrapy框架3.3. 分布式爬蟲(Scrapy-Redis&#xff…

為什么需要清除浮動?清除浮動的方式有哪些?

導語: 在前端面試中,“清除浮動”幾乎是每位面試官都會問到的基礎題。雖然浮動已經不如 Flex 和 Grid 那么常用了,但它在許多老項目中仍然占有一席之地。理解浮動的機制、掌握清除浮動的方式,是面試中體現你前端基礎扎實度的關鍵點。 一、面試主題概述 浮動(float)最初是…

一鍵啟動多個 Chrome 實例并自動清理的 Bash 腳本分享!

目錄 一、📦 腳本功能概覽 二、📜 腳本代碼一覽 三、🔍 腳本功能說明 (一)? 支持批量啟動多個 Chrome 實例 (二)? 每個實例使用獨立用戶數據目錄 (三)? 啟動后自…

2025.05.26【Wordcloud】詞云圖繪制技巧

Most basic See what input file is needed to build this basic wordcloud. Text analysis A text analysis by Benjamin Tovarcis for document classification. 文章目錄 Most basicText analysis 探索詞云圖的奧秘什么是詞云圖?為什么使用詞云圖?如…

RuoYi前后端分離框架集成UEditorPlus富文本編輯器

一、背景 采用若依框架搭建了一個小型的電子書項目,項目前端、后端、移動端就一人,電子書的章節內容是以富文本內容進行呈現的,產品設計人員直接給了一個第三方收費的富文本編輯器截圖放到開發文檔中,提了一沓需求點,概況下來就是要做成下圖中的樣子。作為一個后端開發人…

ETL 工具與數據中臺的關系與區別

ETL 工具和數據中臺作為數據處理領域的關鍵概念,雖然存在一定的關聯,但二者有著明顯的區別。本文將深入剖析 ETL 工具與數據中臺之不同。 一、ETL 工具概述 ETL 是數據倉庫技術中的核心技術之一,其全稱為 Extract(抽取&#xff…

Redis(四) - 使用Python操作Redis詳解

文章目錄 前言一、下載Python插件二、創建項目三、安裝 redis 庫四、新建python軟件包五、鍵操作六、字符串操作七、列表操作八、集合操作九、哈希表操作十、有序集合操作十一、完整代碼1. 完整代碼2. 項目下載 前言 本文是基于 Python 操作 Redis 數據庫的實戰指南&#xff0…

xdvipdfmx:fatal: File ended prematurely. No output PDF file written.

今天忽然遇到:使用xelatex或lualatex編譯,一直卡住,不報錯,也無法生成PDF,主動停止編譯后就報錯 xdvipdfmx:fatal: File ended prematurely. No output PDF file written. 然后,之前能正常編譯的一些文件…

解鎖未來AI:使用DACA模式和Agentic技術提高開發效率

學習Agentic AI:Dapr Agentic Cloud Ascent (DACA)設計模式的應用與演進 背景介紹 近年來,Agentic AI(代理型人工智能)的概念在學術界和產業界掀起了一陣熱潮。Agentic AI指的是能夠自主感知、決策和行動的智能體系統,它們不僅改變了我們與技術互動的方式,也為行業發展…

Jenkins+Docker+Harbor快速部署Spring Boot項目詳解

JenkinsDockerHarbor快速部署Spring Boot項目詳解 Jenkins、Docker和Harbor是現代DevOps流程中的核心工具,結合使用可以實現自動化構建、測試和部署。下面我將詳細介紹如何搭建這個集成環境。 一、各工具的核心作用 Jenkins 自動化CI/CD工具,負責拉取代…

第12次04 :首頁展示用戶名

登錄后&#xff0c;跳轉到首頁&#xff0c;首頁會展示用戶名&#xff1b;未登錄時&#xff0c;首頁將展示登錄與注冊的選項。 第一步&#xff1a;index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml…

Flask 路由跳轉機制:url_for生成動態URL、redirect頁面重定向

在 Flask 開發中&#xff0c;url_for() 與 redirect() 是實現路由跳轉邏輯的核心工具。 url_for()負責安全、靈活地生成 URL。 redirect()負責發起重定向響應。 1、url_for()&#xff1a;生成URL url_for(endpoint, **values) 是 Flask 提供的 URL 構造工具&#xff0c;可根據…

華為OD機試真題——構成正方形的數量(2025B卷:100分)Java/python/JavaScript/C++/C/GO六種最佳實現

2025 B卷 100分 題型 本文涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、測試用例以及綜合分析; 并提供Java、python、JavaScript、C++、C語言、GO六種語言的最佳實現方式! 本文收錄于專欄:《2025華為OD真題目錄+全流程解析/備考攻略/經驗分享》 華為OD機試真題《構成…

FFMPEG-AAC編碼

一、流程圖 二、代碼解釋 avcodec_find_encoder: 根據指定的AVCodecID查找注冊的編碼器。avcodec_alloc_context3: 為AVCodecContext分配內存。()avcodec_open2: 打開編碼器。avcodec_send_frame: 將AVFrame?壓縮數據給編碼器。avcodec_receive_packet: 獲取到編碼后的…

RPC 協議詳解、案例分析與應用場景

一、RPC 協議原理詳解 RPC 協議的核心目標是讓開發者像調用本地函數一樣調用遠程服務&#xff0c;其實現過程涉及多個關鍵組件與流程。 &#xff08;一&#xff09;核心組件 客戶端&#xff08;Client&#xff09;&#xff1a;發起遠程過程調用的一方&#xff0c;它并不關心調…

Docker基礎 -- Ubuntu 22.04 AArch64 交叉編譯 Docker 鏡像構建指南

Ubuntu 22.04 AArch64 交叉編譯 Docker 鏡像構建指南 作者&#xff1a; &#xff08;填寫作者&#xff09; 發布日期&#xff1a; 2025?05?26 1 背景與目標 在企業內網&#xff08;需要代理&#xff09;環境下&#xff0c;我們需要一套可靠、可復用的 Ubuntu 22.04 交叉編…

【ISP算法精粹】ISP算法管線的預處理算法有哪些?

1. ISP預處理算法有哪些&#xff1f; 在圖像信號處理&#xff08;ISP&#xff09;流程中&#xff0c;預處理階段主要針對圖像傳感器&#xff08;如CMOS/CCD&#xff09;輸出的原始圖像數據&#xff08;通常為拜耳格式的RAW圖像&#xff09;進行初步處理&#xff0c;以校正硬件…