高手講解PIC單片機:從管腳到指令,一看就懂

2021-02-18 EDN電子技術設計

單片機入門不難,這是幾年前的一篇老文章,講得通俗易懂,分享給初學者。

這個8條腿的小螃蟹就是我們的第一頓飯,只要把它吃下去,以後的大餐就好辦了。

第1、8條腿接電源 +5V 和 地線。頭兩條腿是螃蟹鉗子,好吃的很。 現在剩下了 6 條腿

第2、3條腿 使用時外接一個晶振的東西 我們接一個 4 MHz的。

第4條腿是復位腳,是一個信號輸入腳。單片機正常運行時接高電平。當有一個低電平脈衝輸入到這個腳時單片機就復位。所謂復位就是單片機內部所有的工作部件統統回到規定的狀態,程序也復位到頭一句上開始逐條運行。例如,你設計的一個報警鎖定的 LED紅燈亮後,當需要解除報警時,用一個按鈕給這個腳瞬時接地一下,相當於給它一個夫脈衝,系統就復位了,led燈就熄滅了,程序從頭開始。

以上5個腳,幾乎所有單片機都有,包括世界上最複雜的,和世界比較簡單的單片機PIC12CE519

輪到第幾條腿啦?奧,是第5條腿,這條叫單片機的 I/O 腳。就是輸入輸出腳。你可通過程序動態地控制它作為輸入或輸出,作為輸出時可以程序控制它的輸出電平為高1或低0。所以,他的工作狀態有四種:輸入0,輸入1,輸出0,輸出1,剩下的兩條腿和第5腳功能一個樣。

上邊我們已經把8條腿消化掉了,其實我們要弄明白的也就3隻腿,我們再簡單一些,先整明白兩條腿,即GP0,GP1.這兩條腿低級一點的用法,可以控制繼電器,LED燈,高級一些的用法可以進行I2C總線,RS232總線的通信,作為擴展輸入可以模擬出來A/D轉換器(6--7bit),可以測量一個電阻的粗略值。作為輸出也可以直接推動揚聲器奏出音樂。這是後話暫且不提。

現在要控制使用這兩隻腿,我這個三腳貓功夫的說書的不得不講一下軟體了,要想講明白軟體又不得不涉及到單片機的內部結構。那位說啦,你可別提這軟體和結構了,以前俺就是讓它們打敗的,現在聽到這個心裡就打鼓。嘿嘿,不要緊,果真如你所說,那你就不妨跟著我再失敗一次, 反正嗎多一次失敗又不納稅,嘿嘿。不過你也要有思想準備,徹底弄明白是個漸進的過程。

要說這程序和單片機內部結構,還真是老大難,不過蟹黃蟹肉可都在裡面。我現在要是給你說PIC單片機是哈佛結構的,51系列是馮-諾伊曼結構的,恐怕你要立馬走人了。所以我得用點心思不讓你溜號。

好在PIC系列的製造商(microchip 微芯公司 美國)理解我等苦衷,全部只有35條指令,而且有一些指令我們一般很少使用,常用的也就十幾句,用的時候查手冊,無需記憶。就算我們兩天學習一句,也就兩三個月時間,總比到老了還怕它們強啊。廢話少說先看下面的兩個例語:

my_name006: movlw 02h '常數2進入w

movwf GPIO 'W 的數進入 寄存器GPIO

這就是我們編的程序裡的兩個句子,也叫源程序。有以下特點

每行只能寫一句話

每句話由四部分組成:

標號: 操作指令 操作數 '程序注釋

下面我結合例子把這四部分解釋一下。

第一部分 my_name006: 叫做標號,它是由字母或數字組成,由冒號結束。標號可有可無,比如第二句就沒有標號。

第二部分movlw 叫做操作指令。它是必須有的,不能省略。PIC 系列的單片機共有 35 條指令。

第三部分02h 叫做操作數。有的指令沒有操作數或者操作數是默認的,也不用寫。

第四部分是程序注釋,必須以單引號開頭,主要作用是提醒和備忘。注釋也是可有可無。

第二個例句中,省略了標號,當然注釋也可以省略。他的指令是movwf, 操作數是GPIO。操作數不一定是數字,也可能是一個由字母組成的字符串。

知道了語句格式以後,我們下面就學習一些常用語句。我們先把這兩個例句弄清楚。

這兩句話的作用是把 2 這個常數寫入到 GPIO 這個寄存器裡。

單片機裡有一些部件需要我們使用和操作,都是通過讀寫寄存器來實現的。每個部件都對應有操控它的寄存器,例如我們要控制使用的管腳GP0,GP1 這兩個管腳對應的寄存器就叫做GPIO。對GPIO寄存器讀操作,實際等效察看管腳電平的高低;對GPIO寄存器相應的位寫1操作,實際等校讓管腳輸出高電平。寫0,輸出低電平。

每個寄存器可以儲存一個八位的二進位數。這八個位的每個位都有名稱,從左向右的名稱是:

左端第首位名稱叫D7,

左端第二位名稱叫D6,

左端第三位名稱叫D5,

左端第四位名稱叫D4,

左端第五位名稱叫D3,

左端第六位名稱叫D2,

左端第七位名稱叫D1,

最後一位叫D0,

而每一個位對應一個管腳的電平,例如當GPIO寄存器的D0位等於1時表示管腳GP0 的電平是高電平。D0位等於0時表示管腳GP0 的電平是低電平。常數2的八位二進位表示是「00000010」 所以,GPIO寄存器存放的8位2進位數的每個位的值以及管腳電平是:

D7對 應於內部總線管腳的電平 D7=0 內部總線管腳輸出低電平

D6對應於內部總線管腳的電平 D6=0 內部總線管腳輸出低電平

D5對應於GP5 管腳的電平 D5=0 GP5 管腳輸出低電平

D4對應於GP4 管腳的電平 D4=0 GP4 管腳輸出低電平

D3對應於GP3 管腳的電平 D3=0 GP3 管腳輸出低電平

D2對應於GP2 管腳的電平 D2=0 GP2 管腳輸出低電平

D1對應於GP1 管腳的電平 D1=1 GP1 管腳輸出低電平

D0對應於GP0 管腳的電平 D0=0 GP0 管腳輸出低電平

GP0---GP5管腳我們可以從上一講的圖1硬體中查出所對應的管腳。d7 d6 對應的內部時鐘和數據總線我們現在暫且不要管它。以後本事大了在調教它們。在我們的例句中,向GPIO寄存器寫入了2,常數2的八位二進位表示是「00000010」 因此如果此時GP0, Gp1等都已經被定義成輸出的話,那麼GP1輸出高電平(接LED燈亮),GP0 輸出低電平(所接led燈熄) 。

截止到現在,你已經學會如何控制管腳的電平高低了。儘管還有一些疑問,比如怎樣定義管腳為輸出腳(以後會說),我得說如果事先gp1,gp0這兩個管腳處於輸入狀態,這兩個例句無效,是控制不了電平的。

無論如何,這一會兒,你就學會了兩個指令,35條我看也沒啥難的。單片機的入門就是這麼簡單。          

相關焦點

  • 80C51單片機指令的取指、執行時序
    EA信號是表示是當前指令是讀內,還是外存儲器的控制信號。如:當選用無片內存儲器的單片機,或者不打算用片內存儲器時,EA必須接低電平,此外,片外程序存儲器的起始地址應該安排在片內存儲器之後。RD和WR信號就相對好理解,就是當讀數據時(不分內外、RAM、ROM)它就有效。WR也是這樣的。
  • 51單片機之聲雙色點陣驅動
    2)雙色點陣雙色點陣示意圖如下:COL上有兩種顏色LED在相應的管腳上,按單色點陣點亮原理置相應的電平即可發出相應的光。總結:本節紹了怎樣用51單片機製作電子音樂盒及雙色點陣的控制,下節《51單片機之聲——LCD12864漢字圖形顯示及電子日曆製作(2)》將帶您走進圖形化顯示世界及萬年曆的製作,為了幫助初學者儘快地學習與掌握51單片機的常用功能模塊,與之配套程序講解的視頻不久將會在網上發布,敬請期待。
  • 51單片機彙編語言帶借位減法指令(4條)
    這組指令包含立即數、直接地址、間接地址及工作寄存器與累加器A連同借位位C內容相減,結果送回累加器A中。這裡我們對借位位C的狀態作出說明,在進行減法運算中,CY=1表示有借位,CY=0則無借位。OV=1聲明帶符號數相減時,從一個正數減去一個負數結果為負數,或者從一個負數中減去一個正數結果為正數的錯誤情況。
  • 串行接口鍵盤控制器SK5278在單片機系統中的應用
    文中給出了該器件的特點、管腳說明和使用方法,並以AT89C2051單片機為例給出了相應的接口電路及相應程序。1 特點及引腳功能SK5278是福州貝能科技有限公司推出的採用PIC內核的鍵盤控制器。該晶片採用4線串行接口,可與任何種類的單片機接口;它具有按鍵有效指示輸出,可用中斷方式管理鍵盤;其行線X0~X3與列線Y0~Y3可構成4×4鍵盤矩陣;SK5278的16鍵鍵盤控制器內含去抖動處理電路,因而可直接輸出鍵值;此外,該器件的工作電源電壓範圍寬達4~6V;SK5278採用18腳雙列直插DIP封裝形式。其管腳排列如圖1所示,管腳說明如表1所列。
  • 事半而功倍輕鬆入門單片機
    首先小編認為學習單片機知識儲備固然重要,但是要等到所需要的理論知識全學完後再去動手操作單片機的話我相信能堅持到動手之人屈指可數,畢竟理論知識的學習小編認為是比較枯燥乏味的而且理論知識若沒有實際動手去操作也很難理解其真正的含義。
  • 在單片機中,RAM究竟有什麼用?
    例如,對於一個所謂4K的ROM,地址從0000H到0FFFH(即從0000,0001...4095),單片機運行時從哪個地址取數據,完全由程序本身決定,並不要我們幹預。記住,給單片機一通電,它經過一個短暫的復位過程,立即轉向ROM的最低地址0000H,在這裡面放置的往往是一條「跳轉」指令,它從這裡一步跳到另一個地址:程序的真正起始地址,例如51機的0080H。
  • RAM在單片機裡究竟有什麼用?
    例如,對於一個所謂4K的ROM,地址從0000H到0FFFH(即從0000,0001...4095),單片機運行時從哪個地址取數據,完全由程序本身決定,並不要我們幹預。記住,給單片機一通電,它經過一個短暫的復位過程,立即轉向ROM的最低地址0000H,在這裡面放置的往往是一條「跳轉」指令,它從這裡一步跳到另一個地址:程序的真正起始地址,例如51機的0080H。
  • 《60天學會STM32單片機線上培訓班》第二期開班倒計時2天
    單片機又稱單片微控制器,它是把一個計算機系統,包括cpu、ram、rom、定時/計數器和多種i/o接口集成到一個晶片上。由於單片機的種種優點和特性,其應用領域極其廣泛。單片機系統同樣也由硬體系統和軟體系統構成。 想知道更多關於單片機的知識嗎?
  • PLC指令入門|三菱FX5U PLC通用FB功能塊指令
    其實這兩個指令也很簡單,上升沿邊緣檢測功能塊R_TRIG與PLS、LDP指令功能是一樣的,下降沿邊緣檢測功能塊F_TRIG與PLF、LDF指令功能是一樣的,我們看下圖的程序,接通X0和接通X1,接通X2實現的效果是一樣的。還是前面的例子單按鈕控制啟停功能,我們用邊緣檢測功能塊指令也可以實現。
  • 用STC 單片機設計脈衝發生器,改進線切割工具機高頻電源
    針對這些缺點,選用STC89C52RC單片機來設計脈衝發生器,以此對其主控電路進行改進。這樣的改進投入極少,並且能夠提高工具機的工作效率和加工質量。高頻脈衝電源是線切割工具機加工專用電源,它的好壞直接關係到工具機的加工質量。目前部分老式工具機高頻電源的高頻振蕩頻率是由石英晶體產生,由於石英晶體自身存在的缺陷,會造成高頻脈寬調節不穩定,使得工具機加工穩定性變差,效率降低,損耗增大等現象。
  • 新手教程|單片機的學習實踐步驟應該這樣_深圳升學教育
    運用單片機便是了解單片機硬體結構,以及內部資源的運用,在彙編或C語言中學會各種功用的初始化設置,以及完成各種功用的程序編制。儘管很簡略,可是可以學習一般的單片機編程思想,例如,必須設置許多寄存器對引腳進行初始化處理,才能使引腳具備有數字輸入和輸出輸出功用。每運用單片機的一個功用,就要對操控該功用的寄存器進行設置,這便是單片機編程的特色。
  • 基於51單片機的日曆時鐘
    本文通過對一個基於單片機的能實現萬年曆功能電子時鐘的設計,從而達到學習、了解單片機相關指令在各方面的應用。系統由主控制器AT89C52、時鐘電路DS1302、顯示電路、按鍵電路、和複合電路等部分構成,能實現時鐘日曆的顯示的功能,能進行時、分、秒的顯示。
  • 51單片機外部中斷的總結
    51單片機的外部中斷有兩種觸發方式可選:電平觸發和邊沿觸發。選擇電平觸發時,單片機在每個機器周期檢查中斷源口線,檢測到低電平,即置位中斷請求標誌,向CPU請求中斷。
  • 最適合單片機編程的高級語言,除了C語言,別無選擇!
    單片機為什麼還在用C語言編程?答案是:C語言是最適合單片機編程的高級語言。 這個問題的意思應該是:現在有很多很好用的高級語言,如java,python,VC等等,為什麼這些語言不能用來編寫單片機程序呢?那麼這個問題的答案就是:不能不能,而是不合適。
  • FANUC機器人程序運動指令講解
    FANUC機器人程序運動指令講解
  • 最簡單DIY基於藍牙、51單片機和舵機的鋼鐵愛國者機關槍控制器
    在上一期免費51單片機和舵機開源項目中:最簡單DIY基於51單片機的舵機控制器,我簡述了舵機的控制原理和分享一個舵機控制的程序當時的源碼還是借鑑了網上一些相關的資源。所以就直接免費了。那麼這次源碼進行了大幅度的升級,用52單片機定時器0輸出兩路PWM波來控制兩個自由度的舵機,用定時器1組成波特率發生器控制串口藍牙,加上鐳射雷射模塊,代碼寫得非常精簡和奇妙,最終研製成功了鋼鐵愛國者機關槍控制器。下面是設備的全家福照。
  • 電工必學:PLC與單片機的本質區別是什麼?
    PLC與單片機的本質區別是什麼? PLC與單片機的差別是: 1、PLC是應用單片機構成的比較成熟的控制系統,是已經調試成熟穩定的單片機應用系統的產品。有較強的通用性。
  • 【DIY】使用了單片機的簡易廚房定時器製作
    作為電子愛好者,筆者熱衷製作,用單片機做一個簡單有趣的廚房定時器,既解決了實際的問題,又滿足了愛好實踐的願望,於是就有了本文的這個製作。這個電路十分簡單,可以使用洞洞板直接焊接電路,製作用不了半天,無需調節,非常適合初學者練手製作。
  • 西門子S7 1200中OB塊講解
    診斷錯誤事件OB塊(Diagnostic error interrupt):當PLC發生故障時,會觸發該事件;解除故障時,也會觸發該事件,在該模塊裡面,我們可以讀到故障信息。圖16 診斷程序在診斷程序中,我們可以獲取錯誤IO狀態,硬體標識符和通道,並添加了STP指令。