外圍功能電路控制 LET′S TRY“嵌入式編程”: 4 of 6

外圍功能電路控制

LET′S TRY“嵌入式編程”: 4 of 6

本連載講解作為嵌入式系統開發技術人員所必需具備的單片機的基礎知識。

在《單片機入門(1)~(3)》中,我們一起學習了單片機的硬件和編程語言以及開發環境等。

本期讓我們一起來學習單片機的外圍功能電路控制的基礎知識吧。

(SFR) Special Function Registers

單片機中有象箱子功能一樣的地方,我們稱為寄存器,用來暫存數據。寄存器的種類有程序計數器、通用寄存器、以及SFR(特殊功能寄存器)等。

SFR主要用來設定外圍功能電路(計數器或串行端口、通用I/O等)的工作方式,確認其工作狀況,并對其進行控制的。也就是說SFR并非僅僅只是用來保存數據的“箱子”。通過改變保存在“箱子”里的數據,不僅可以改變外圍功能電路的動作方式,而且“箱子”里的數據也將隨著外圍功能電路的工作狀況而改變。

控制外圍功能電路的基礎知識

下面以通用I/O為例來說明單片機對外圍功能電路的控制。通用I/O具有以下功能:

  1. 輸出功能:可以輸出高電平電壓或低電平電壓
  2. 輸入功能:可以讀出輸入到引腳的電壓電平

首先來看輸出功能的控制。圖1中的引腳A是一個通用I/O。

如果向引腳A的寄存器(SFR)

  • 寫入0,則引腳A的輸出電壓將為低電平(0V)。
  • 寫入1,則引腳A的輸出電壓將為高電平(5V)。

圖1:通用I/O的輸出功能

圖1:通用I/O的輸出功能

如果將圖1的引腳A連接一個LED,就可以構成一個控制LED的電路(見圖2)。此時,向寄存器(SFR)寫入0則LED亮燈,輸入1則LED熄滅。雖然這是一種很簡單的動作,但卻反映了單片機對各種外圍功能電路進行控制的基本原理。利用這種功能,就可以完成象電機的ON/OFF一樣的開關作用(由于通常的單片機上不能流過驅動電機運行的大電流,所以還需另行準備用FET或晶體管作成的電機驅動電路)。另外,如果使用多個通用I/O端口,就可以完成更加復雜的控制。

圖2:通用I/O的LED控制電路

圖2:通用I/O的LED控制電路

接下來看輸入功能(圖3)。

  • 如果向引腳A輸入低電平電壓(0V),就會從寄存器(SFR)讀出0。
  • 如果向引腳A輸入高電平電壓(5V),就會從寄存器(SFR)讀出1。

即,讀取寄存器(SFR)的值,就可以判斷外部電壓是低電平電壓還是高電平電壓。

圖3:通用I/O的輸入功能

圖3:通用I/O的輸入功能

圖4:通用IO輸入功能構成的開關電路

使用通用I/O的輸入功能構成圖4所示的電路,單片機就可以判斷出開關(S)的狀態。

  • 當開關(S)斷開時,電源電壓通過上拉電阻(R),連接到引腳A(相當于輸入高電平電壓),寄存器(SFR)將的值變為1。
  • 當開關(S)關閉時,引腳A被連接到低電平電壓,寄存器(SFR)的值變為0。

單片機通過讀取引腳A的寄存器(SFR)的值,是“1”還是“0”,可以判斷外部開關(S)是斷開還是關閉狀態。

圖4:通用IO輸入功能構成的開關電路

圖4:通用IO輸入功能構成的開關電路

單片機上搭載了各種功能的SFR。通過程序來更改或讀出這些功能寄存器的值,就可獲知單片機外圍電路的信息,而對外圍電路進行控制。所以可以說,SFR就象是單片機的五官或者手腳。

以上就是單片機控制外部外圍功能的基礎知識。下期是本系列的最后一期,我們將說明關于中斷的內容。敬請期待。

轉載于:https://www.cnblogs.com/isAndyWu/p/9596351.html

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

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

相關文章

如何防止代碼腐爛

很多團隊都有這個問題,一個項目的代碼本來開始設計得好好的,一段時間以后,代碼就會變得難以理解,難以維護,難以修改。為什么?我一直在思考這個問題。 讓我們先看一個人的情況。 1. 程序員的成長 新手的代碼…

什么是商業智能(BI),以及其與數據分析的區別?

BI(Business Intelligence)即商務智能,它是一套完整的解決方案,用來將企業中現有的數據進行有效的整合,快速準確地提供報表并提出決策依據,幫助企業做出明智的業務經營決策。它是一種產品/服務,…

php課程 4-15 數組遍歷、超全局數組、表單提交數據(多看學習視頻)

php課程 4-15 數組遍歷、超全局數組、表單提交數據(多看學習視頻) 一、總結 一句話總結:超全局數組特別有用,比如$_SERVER可以獲取所有的客戶端訪問服務器的情況。 1、數組遍歷三種方式(最不熟悉的那一種)…

git branch 分支

Git自學之路(四)- git branch 分支 幾乎所有的版本控制系統都以某種形式支持分支。 使用分支意味著你可以把你的工作從開發主線上分離開來,以免影響開發主線。 在很多版本控制系統中,這是一個略微低效的過程——常常需要完全創建一…

軟件工程師的十個“不職業”行為

職業化是軟件工程師的必然選擇。本文根據我在教學和軟件開發管理方面的實踐,列舉幾個軟件工程師“不職業”的行為或習慣,從另外一個側面進一步探討什么是真正的軟件工程師職業化。職業化之于軟件工程師非常重要。因為:軟件是看不見也摸不著的…

fn:substring()函數

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 fn:substring()函數返回字符串中指定開始和結束索引的子串。 語法 fn:substring()函數的語法如下&#xff1a; ${fn:substring(<s…

大數據分析如何創建最佳的移動應用用戶體驗

2019獨角獸企業重金招聘Python工程師標準>>> 如今&#xff0c;越來越多的人使用移動應用程序。而移動應用將在未來成為一個價值數十億美元的產業。大數據可以幫助企業構建最佳的用戶體驗。 多年來&#xff0c;開發移動應用程序的技術一直在不斷發展&#xff0c;這實…

C語言自學的方法

一、C語言入門的基本學習方法 《C語言》的內容很豐富&#xff0c;有的部分涉及到的細節很多&#xff0c;如硬件知識和數據結構知識等&#xff0c;自學時不可能面面俱到&#xff0c;否則必然會顧此失彼&#xff0c;反而抓不住主要矛盾。筆者認為對初學C語言的考生&#xff0c;開…

CAP原理簡單理解

C&#xff1a;集群中所有機器狀態是一致的。 A&#xff1a;客戶端訪問集群中任意一個節點&#xff0c;總能得到"處理成功"的結果。 假設有五個節點&#xff1a;n1~n5 &#xff0c;出現網絡分區被分成兩組&#xff1a;[n1~n2]和[n3~n5]&#xff0c;那么當n1出來客戶端…

Jstorm+Spring+mybatis整合

在現有的jstorm框架下&#xff0c;有一個需求&#xff1a;jstorm要對接mysql數據庫的實時讀取數據&#xff0c; 通過bolt處理&#xff0c;可能要調用service層的框架&#xff0c;最后保存到數據庫。 在網上尋找了一下&#xff0c;發現storm集成spring的資料非常少&#xff0c;有…

無限享受百度文庫,財富值無視

相信大家在百度上找東西時&#xff0c;遇到有的文庫需要財富值&#xff0c;可是自己又沒有&#xff0c;是不是很頭疼啊。請看&#xff1a; 找到自己要的文庫&#xff0c;如我找的文庫鏈接為&#xff1a;http://wenku.baidu.com/view/7db6 ... html?l5.1.5.1&&#xff08;…

JavaScript onerror 事件( window.onerror = )

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 使用 onerror 事件是一種老式的標準的在網頁中捕獲 Javascript 錯誤的方法。 實例 onerror 事件 如何使用 onerror 事件捕獲網頁中的錯誤…

上海云棲:金融政企行業的CDN最佳實踐

2019獨角獸企業重金招聘Python工程師標準>>> 摘要&#xff1a; 在剛剛結束的上海云棲大會飛天技術匯分論壇上&#xff0c;阿里云視頻云產品架構師羅小飛進行了《阿里云CDN——面向金融政企的CDN最佳實踐》主題分享&#xff0c;為上海的嘉賓介紹CDN的解決方案與技術服…

lunix基本命令

安裝lunix 批量創建文件 whoami查看當前用戶 sudo adduser lilei創建用戶 groups lilei 查看用戶所屬用戶組 sudo usermod -G root lilei 賦予root權限 sudo deluser lilei --remove-home ls -l 顯示目錄的文件 ls -a 顯示隱藏文件 PWD 獲取當前目錄 cd .. 返回上層目錄 cd 進入…

開啟Swarm集群以及可視化管理

為什么80%的碼農都做不了架構師&#xff1f;>>> 在搭建的兩臺coreos服務器上開啟swarm集群 前置條件&#xff1a; docker均開啟2375端口同一個局域網內主服務器上安裝Portainer容器安裝Portainer容器執行&#xff1a; docker run -d -p 9000:9000 --restartalways …

python基本語法:序列

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 序列的基本操作&#xff1a; 2.用例&#xff1a; 3.序列包含字符串、元組、列表。

移動互聯網開始降溫:“人才熱”退燒

去年的瘋狂搶人變成了今年的裁員甚至關門歇業&#xff0c;漫天要價變成了工作難找&#xff0c;移動互聯網市場正回歸理性 工作不好找了。 “去年這個時候&#xff0c;一個剛畢業的Android開發工程師&#xff0c;就能輕松拿到七八千一個月&#xff0c;而今年&#xff0c;很難找到…

MAP存儲數據

map可以裝多種類型的值&#xff0c;當然鍵不能重復&#xff0c;值可以重復。可以使用多種類型的父類&#xff0c;來指定值的類型。比如Object是其他類的父類。例如&#xff1a;HashMap<Object,Object>&#xff0c;它的鍵和值都可以存儲多種類型&#xff0c;反正都是Objec…

IMDb、爛番茄、MTC、各種電影行業評分名字整理

這篇不是技術文章&#xff0c;就是對總是看到但是不知道具體是什么的一些電影名詞、評分、來源&#xff0c;學習一下。 IMDb 互聯網電影資料庫&#xff08;Internet Movie Database&#xff0c;簡稱IMDb&#xff09;是一個關于電影演員、電影、電視節目、電視明星和電影制作的在…

iOS應用:成功就像中彩票,大半開發者虧本

移動是座大金礦&#xff0c;從來都不乏一飛沖天的成功故事&#xff08;Draw Something、憤怒的小鳥等&#xff09;。但是大家往往只看到光鮮的一面&#xff0c;對于移動開發者來說&#xff0c;現實是殘酷的&#xff0c;根據市場營銷機構App Promo的一項調查&#xff0c;絕大多數…