通俗易懂講PIC單片機:從一竅不通到入門進步

2021-01-08 電子產品世界

  單片機入門不難-談PIC系列(轉自礦石收音機論壇---嶗山)十年前的老帖子,講得通俗易懂,分享之。

本文引用地址:http://www.eepw.com.cn/article/201803/376687.htm

  請看圖1

    

  這個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條我看也沒啥難的。

  '---

  再加深一下對寄存器的認識:

  要把一個常數存儲到,或者說寫到一個寄存器中,僅用一條指令是辦不到的,必須通過一個特殊的寄存器W,把數據倒過去. 這就應該使用到兩個語句。

  movlw 02H 指令的意思是把一個常數存入特殊寄存器W, 這個常數是3,後面的H是表示十六進位

  movwf GPIO 指令的意思是把特殊寄存器W的數值存入寄存器. 這個寄存器的名稱是 GPIO

  這裡涉及到兩個概念,常數和寄存器.

  常數好說,比如說十進位數 35, 26 但要注意,在單片機系統裡我們一般不用十進位,而使用十六進位. 有關數制轉換方面的知識,是計算機的基礎,必須會熟練地在二進位、十六進位、十進位之間轉換,我就不羅索了.

  寄存器也叫單片機的內存。

  一個寄存器可以存儲的數值範圍是0--255,用十六進位表示就是 0---FFH.用二進位表示就是00000000----11111111.

  以後要養成習慣用十六進位表示數.

  那麼,一個單片機裡有多少個這樣的寄存器哩,pic12ce512裡面有1024個這樣的寄存器可以供你使用,為了使用方便生產商已經給它們編上了號碼,第一號碼是000H,往下依照次序為 001H,002H........3FFH.(怎麼樣,開始用十六進位說事了吧,如果你不熟悉熟制轉換趕緊補課來得及)

  有了編號就像我們居住的房間有了房間號碼,使用就方便的多了.房間號碼在郵政行業叫地址,因此我們稱這些號碼叫做寄存器地址,或稱地址數 例如 名稱為 GPIO 的寄存器,他的地址,或地址數是 06H 。所以我們的兩個例句完全等同於:

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

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

  '-

  有兩個寄存器比較特殊,它們沒有地址,一個名字叫做 W, 另一個叫做 TRIS. 所以他們兩個在存儲數據的時候比較快,一個指令就可以解決問題,例如: movlw 03H 一條指令就把常數3寫入到W寄存器了。關於TRIS寄存器,我們以後用到它再說.

  除了他們兩個以外的其他所有寄存器,在寫入數據時一般都要用兩條指令進行。

  今天就扯到這裡,雖然只有兩個指令,但主要目的是要同學們接觸一下指令,建立寄存器的概念以及他們同硬體部件的聯繫。增強學習的信心。能有這些體會,這一節就算過關了。

  隨著以後的深入,你會發現小小單片機裡面是一個大世界,興趣也由此而生。

  我們上一次講的兩個指令是是如何控制管腳電平的高低。前提是所有管腳已經被定義成輸出了(OUT)如果被定義成了輸入,則上次的指令雖然也能運行,但運行後絲毫不能改變管腳電平高低,因為此時管腳是輸入狀態,電平取決於外部輸入,指令無法改變。

  在PIC單片機系列中,改變I/O口的輸入輸出依靠寫入寄存器TRIS的值,相應位寫0,表示對應管腳被定義成了輸出,寫1,就是輸入。

  現在假如預把GP1、GP2管腳定義成輸出,其他腳全是輸入。那就應該向TRIS 寄存器寫入二進位數 11111001,換算成十六進位就是

  F9H.

  依照以前我們學到的知識,在PIC系列單片機裡,本來應該用下列的語句來完成我們的設定:

  movlw 0F9H '常數進W 以字母開頭的常數前面必須加0

  movwf TRISA '把W內的數複製到TRIS

  實際上PIC系列的單片機也都是這麼寫的,後面加的A,表示第一個8位的口(有的單片機不僅一個口,還有好幾個8位的I/O口如TRISB TRISC TRISD等等) .

  但是,記住了, PIC12系列的單片機必須改寫成為:

  movlw 0F9H '常數進W 以字母開頭的常數前面必須加0

  tris GPIO '把W內的數複製到TRIS 以後凡見到這個指令一律理解成 movwf TRISA

  寫法不同,意思是一樣的. 這樣你就又學了一個指令TRIS,不過這個指令的實質還是你曾經學過的movwf 只是寫法不同罷了.

  在PIC12系列裡TRIS作為指令, 在其他系列(PIC161718)裡把 TRIS 作為普通寄存器看待.

  因為我們現在講的就是PIC12CE519,所以我們暫時用

  tris GPIO

  這個格式,等以後進入PIC16C877 我們再寫成 movwf TRISA , 至於理解按照後者進行.

  '-

  如果我們要控制GP1 GP2管腳的輸出電平, 其他管腳作為輸入.並且讓GP1輸出低電平,GP2輸出高電平.完整的程序如下:

  movlw 0F9H '常數進W

  tris GPIO '把W內的數複製到TRIS ,GP1 GP2為輸出,其他為輸入

  '此行無命令,起到的作用是容易讀懂程序

  movlw 04H '常數4的二進位是 00000100 ,GP1=0 GP2=1

  movwf GPIO 'W內的數進GPIO 輸出生效,原來定義成輸入的腳的電平,不會受該句影響

  上面已經學會了三條指令,但是8位寄存器的概念概念一定要建立起來,程序通過寫入寄存器不同的數據

  控制管腳作為輸入使用還是輸出使用,作為輸出時是輸出高電平還是低電平。

  這樣的操作又一個特點,就是每次寫入數據,同時控制的往往不是一個管腳,而是好幾個個.最多一次可

  以控制8個管腳.在單片機裡往往每8個腳叫做一個口,如口A, 口B,用英文表示就是GPIO PORTA PORTB PORTC 等.

  更多的情況是:某個口內的某一個管腳需要改變電平,其他腳電平不變.例如我們僅需要GPIO口上的GP1

  這個管腳的電平拉高,其他管腳電平不發生變化.這時候位操作指令為我們提供了方便,假如我們事先已經把GP1管腳定義過輸出了(方法見前面講過的):

  bcf GPIO,GP1 '注釋 GPIO口上GP1管腳電平拉低,我們行話叫 清除。

  bSf GPIO,GP1 '注釋 GPIO口上GP1管腳電平拉高,我們行話叫 置位。

  怎麼樣,這樣控制某一個管腳的電平就方便多了,你的編程效率大大提高啊.

  記住:PIC所有單片機所有寄存器都是可以位操作的,這在51的單片機上是不能完全實現的.

  不僅如此,PIC所有單片機所有管腳的單腿驅動輸出電流可以高達 25mA,所以如果你驅動一個 5到10mA電流的LED發光二極體,根本不用加三極體,串個電阻直接掛在單片機上就得了,這在51的單片機上也是不能實現的,要加驅動三極體或驅動晶片.

  怎麼樣,學PIC有好處吧. 也別急,好處還有那,且聽我慢慢地白話。

  一不小心,你已經會 5 個指令了,還有30個,加油啊。

  繼續

  單片機的大部分指令,或者說單片機所做的大部分工作,多數在寫入或讀出寄存器。關於寄存器的初步概念我想我們已經建立起來了,它是一個能夠存儲8位二進位數據(最大255 = 0FFH) 的單元 每個單元都有它的編號,我們叫做它的地址,或地址編碼. 地址編碼也是十六進位的. 另外寄存器裡的數據掉電就會丟失。

  寄存器的英文是RAM 也要記住.

  PIC12CE519 裡面共有有48個寄存器供我們操作使用, 它們每一個都有固定的地址編碼。

  地址編碼並不是連續的號碼,而是分成了兩段:

  第一段: 從00H 開始, 依次是01H, 02H, 03H ....0AH, 0BH......到1FH 結束. 計32個寄存器

  第二段: 從30H 開始, 依次是31H, 32H, ......................到3FH 結束 計16個寄存器

  這種地址不連續編號, 而是要跳過去一段的做法, 對於我們新手來說很是不習慣. 為了讓我們容易入門, 我們暫時先不管第二段RAM, 只當它不存在, 所有程序我們只涉及到第一段連續的ram 地址. 等我們熟練的掌握好了ram 的使用,再涉及第二段地址的RAM, 那時,你就會理解單片機設計者把它們分成兩段的苦心了.

  為了規範,我們今後一律把RAM的分段, 叫做分頁. 第一地址段叫00頁面, 第二地址段叫01頁面.

  例如: 我們學過的 I/O 口電平控制寄存器 GPIO, 它的地址編碼是 06H, 屬於00頁面.

  '--

  所有這32+16=48個寄存器除了在地址上分成了兩個頁面以外,又把它們分成兩類:

  一類專用寄存器,一類通用寄存器.

  所謂專用,就是這個寄存器的功能已經由系統分配好了.例如 地址為06H 的名稱就做GPIO寄存器的功能,是它的每個位,都對應到一個I/O腳的電平.

  另一類 是通用寄存器,你可以理解成它的功能系統沒有事先預定,而是由你在編程序的時候隨機使用.

  pic12ce519 的專用寄存器有 7 個, 位置在我們第00葉面的最前面. 這7個專用寄存器的地址編碼是: 00H,01H, 02H, ----06 H

  剩下的所有寄存器包括所有第01頁面, 全部都是通用寄存器.

  例子: 在兩個通用寄存器 09H, 0AH 內, 寫入常數 FC H

  movlw 0FCH '常數進W

  movwf 9H '複製W內的數到通用寄存器09H

  movwf 0AH '複製W內的數到通用寄存器0AH 由於此時W內並沒有改變,W不用再進常數.

  '-

  下面是PIC12CE519的 寄存器ram的地址地圖:

  圖最上端的 00 01 表示的是頁面號碼,或叫頁面地址。

  左側 從00 --- 1FH 是00頁面, 右側是01頁面。

  從00H 到 06H 都已經起好了名稱 ,它們是專用寄存器,用處各有不同。以後我們會逐個介紹它們

  剩下的都是通用寄存器 或者叫普通寄存器 General Purpose Registers 意思是一般用途的寄存器

  地址從20H 到 2FH 也不是「空洞」,也不是不能訪問,只是讀寫它們的時候等於讀寫它們左側對應的00頁面。這一點我們可能有些迷惑,弄不明白也沒有關係,以後隨著程序理解的深入,會搞清楚的。

  內存圖譜,不要求記下來,但是應該有個大體印象,用的時候會察看就可以了。等編程時間一長

  就那麼幾個字節,自然就記住了。

  所謂字節是衡量二進位數據長度的一個單位。一個寄存器剛好能記住一個字節的數據。如果你要存儲的數據比較大超過了255,那就要佔2個存儲器甚至更多。描述的時候通常我們不說這個數值佔了多少個寄存器,而是說這個數據是幾個字節的。

  字節的英文是byte 一個二進位數的一位,叫比特 英文bit 1 byte 包含 8 bit

  繼續

  下面我們學習一條新指令,叫做空操作指令

  nop '什麼事情也不做,但執行這個指令也要消耗掉一點時間。它沒有操作數。

  '不要理解成程序停了,實際上程序仍在正常運行。執行一連串的空操作指令,單片機

  '白耗費時間,什麼活也不幹,往往用於延時

  如果你需要一個很短時間的延時,可以採用一連串的空操作。注意每個 nop 也是佔一行, 例如:

  movlw 0F9H '常數進W

  tris GPIO '把W內的數複製到TRIS ,GP1 GP2為輸出,其他為輸入

  bsf GPIO,GP1 '管腳GP1輸出高電平點亮LED燈(如果你已經接上燈的話)

  nop

  nop

  nop

  nop

  nop

  ... .

  bcf GPIO,GP1 '管腳GP1輸出低電平關閉LED燈

  nop

  nop

  nop

  nop

  ...

  運行的效果是接在管腳GP1上的LED燈先亮一段時間,再熄滅一段時間的閃爍。

  這回再說一個程序轉向的語句,goto 指令,學過basic 和 c 等語言的對它不陌生。

  單片機對程序的執行是逐句自上而下進行。當它運行到某個位置,如果你不希望繼續運行它下面的語句,而是希望它無條件的強行轉到某一句上,就可以使用goto語句。

  我們還是通過例子來說明goto 的使用方法。

  已知外部晶振的頻率為4 MHz, 設計程序從pic12ce512 單片機的GP1管腳上輸出一個方波信號,信號頻率固定並計算出頻率的值。

  movlw 0F9H '常數進W

  tris GPIO '把W內的數複製到TRIS ,GP1 GP2為輸出,其他為輸入

  myWAVE: bsf GPIO,GP1 '管腳GP1輸出高電平點亮LED燈(如果你已經接上燈的話)

  nop

  nop

  nop

  nop

  nop

  nop

  nop

  bcf GPIO,GP1 '管腳GP1輸出低電平關閉LED燈

  nop

  nop

  nop

  nop

  nop

  goto myWAVE 'myWAVE是標號,某行必須有這個標號,否則程序通不過

  nop '由於goto的存在,以下語句得不到運行

  nop

  nop

  當程序自上而下運行到goto 語句時, 不再繼續運行它底下的語句, 而是讓程序強行轉向到標號為myWAVE的語句上,並繼續運行.

  這樣一來的結果,程序會永遠在標號myWAVE的這一句 bsf GPIO,GP1 到goto之間循環, 打轉轉.

相關焦點

  • 51,AVR,PIC,MSP430,STM32單片機比較
    傳統8051:適合菜鳥入門,容易上手,價格一般(從性價比方面說)。缺點:解密容易(傳統51說:誰讓咱出道早呢,大家都研究我,哎!哭......)一般功能也有,, 但AD、eeprom等功能要靠擴展,增加硬體和軟體負擔。
  • PIC單片機之步進電機
    、繼電器、蜂鳴器、按鍵、數碼管、RS232 串口等資源,體會到了學習板的易用性與易學性,看了前幾期實例,當你實驗成功後一定很興奮,很有成就感吧!現在我們就趁熱打鐵,再向上跨一步,一起來學習一下步進電機的工作原理及使用方法,這是我們用單片機來控制機械進行運動的開始。步進電機是一種將電脈衝轉化為角位移的執行機構。當步進驅動器接收到一個脈衝信號,它就驅動步進電機就按設定的方向轉動一個固定的角度(步距角)。
  • PIC單片機C語言程序實例
    因為用戶經常使用的標準寄存器地址和其位地址都被定義在Pic h標誌頭文件中,按C語言編譯器編譯源程序的語法規則,在編寫C語言程序時,必須使用#include語句,把這個pic.h頭文件包含到自己的源程序中。即對於PIC中級產品的單片機,C語言程序的開頭是固定格式#include。編譯器在編譯處理#include語句時,會把pic.h的內容。
  • MSP430單片機輕鬆入門與實踐 — 暢學單片機
    簡介     本課程是MSP430單片機學習者從入門到深入的一套經典視頻教程,以初學者為對象,從零開始手把手教你學習MSP430單片機
  • 單片機教程:PIC單片機C語言程序設計(五)
    接前文:單片機教程:PIC單片機C語言程序設計(四)   九、C語言的運算符   C語言提供了30多個運算符,範圍很大,應用廣。  在《PIC單片機C語言程序(一)》的延時函數中,我們已用過後綴運算符i++,大家可以從中體會其用法。  (2)邏輯運算符。  邏輯運算符是基本運算符中的一種。邏輯運算符有:與「&&」、或「||「 、非「!」等3三種。  邏輯運算符&&、||為雙目(兩個量)運算符,!為單目運算符。
  • PIC單片機C語言程序設計(5)
    C語言的運算符內容較多,限於篇幅,這裡僅概況地加以介紹,希望讀者在學習時,根據PIC單片機書籍,深入學習C語言的運算符,並通過編寫C語言程序,掌握每個運算符的意義和使用規則。  3.可預置起始時刻的時鐘程序  (1)硬體電路。
  • 暢學MSP430F5438A單片機精講課程
    簡介      本課程是MSP430F5438A單片機學習者從入門到深入的一套經典視頻教程,以初學者為對象,從零開始手把手教你學習
  • 51單片機輕鬆入門與實踐 — 暢學單片機
    簡介      本課程是單片機學習者從入門到深入的一套經典視頻教程,以初學者為對象,從零開始手把手教你學習單片機,循序漸進地基於理論講解並結合實驗項目實戰開發
  • PIC單片機之I2C總線
    大家好,通過前一期的學習,我們已經對ICD2 仿真燒寫器和增強型PIC 實驗板的使用方法及學習方式有所了解與熟悉,學會了如何用單片機來控制發光管、繼電器、蜂鳴器、按鍵、數碼管、RS232 串口、步進電機、溫度傳感器等資源,體會到了學習板的易用性與易學性,看了前幾期實例,當你實驗成功後一定很興奮,很有成就感吧!
  • PIC單片機基礎知識之一
    PIC單片機在設計之初選擇了哈佛結構,並基於程序總線的寬度,發展出了12位,14位和16位指令寬度的單片機系列,分別對應的是PIC低檔系列,PIC16中檔系列,以及PIC18系列單片機。這裡要說明的是,數據總線的寬度始終是8位,所以不管它的指令寬度是多少,它仍然還是8位單片機。
  • 分享一份通俗易懂的msp430單片機學習教程
    自製實驗電路板,需要單片機晶片內部工作原理的知識、封裝知識,清楚的知道每一個引腳的功能,還需要數碼管、按鈕、排電阻、三端穩壓器、二極體、散熱器、電解電容、普通電容、電阻、鈕子開關等元件的知識,對於初學者,可以做一個只有3個數碼管、8個按鈕、8個發光二極體的簡單實驗板,這樣的實驗板,雖然簡單,但足可以幫助初學者入門單片機。
  • 51/STM32/MSP430/STC/TMS/PIC/AVR,七大主流單片機最全面對比
    個人感覺不容易上手,不適合初學者入門,資料也比較少,只能跑官網去找  2. 佔的指令空間較大,因為是16位單片機,程序以字為單位,有的指令竟然佔6  個字節。雖然程序表面上簡潔, 但與pic單片機比較空間佔用很大  應用範圍:  在低功耗及超低功耗的工業場合應用的比較多  使用最多的器件:MSP430F系列、MSP430G2系列、MSP430L09系列  TMS單片機  這裡也提一下TMS系列單片機,雖不算主流。
  • PIC單片機asm與C混合編程
    C代碼的頭文件一定要有#include,它是很多頭文件的集合,C 編譯器在pic.h 中根據你的晶片自動載入相應的其它頭文件。這點比彙編好用。載入的頭文件中其實是聲明晶片的寄存器和一些函數。如果用彙編來實現的話,是很頭疼的事情,用C 來實現是很輕鬆的事情,這裡也涉及到一點C 的內存管理(其實C 的最大優點就是內存管理)。
  • avr單片機和stm32區別與優缺點分析
    那樣得先進行選存儲體的過程,使用起來比pic方便。   3. avr的I/O腳類似pic,它也有用來控制輸入或輸出的方向寄存器,在輸出狀態下,高電平輸出的電流在10mA左右,低電平吸入電流20mA。這點雖不如pic,但比51系列還是要優秀。   AVR單片機優點:   AVR單片機是Atmel公司推出的較為新穎的單片機,其顯著的特點為高性能、高速度、低功耗。
  • pic單片機之中斷程序(附實例)
    對於單片機來說這些事件是多種多樣的。比如 說一個按鍵按下,一定的時間到了,一串數據發送完畢,或接收完一個數據。講到中斷不得不講講和中斷相對的 查詢。其實不管是按鍵按下 還是 時間到,還是數據發送完畢,這些事實上都可以用查詢的方式辦到。比如 你是經理 如果你想知道屬下任務完成了沒有 一種方式就是去詢問屬下,任務完成沒有。早上沒完成,下午在問。下午沒完成第二天再問。。。。
  • PIC單片機指令系統基礎知識
    PIC單片機指令系統基礎知識:A 指令系統是指一種單片機所能識別的所有指令的集合.(PIC系列單片機指令系統採用的是精簡指令集RISC結構體系)B 指令系統是單片機的核心,人們必須通過指令指揮CPU來完成某項特定的操作.C 如果要為某種單片機編寫程序,首先要學習,記憶和應用該單片機指令系統的每一條指令.
  • 單片機快速入門實驗:控制LED閃爍發光
    如果說初學計算機編程,最簡單的入門程序是在屏幕上顯示「Hello world!」的話,那麼學習單片機最簡單的入門實驗就是控制發光二極體(LED)閃爍發光。P89LPC900系列單片機是近幾年出現的新一代80C51內核單片機,許多人都想學習,並希望應用到自己的產品設計中。
  • PIC單片機中BANK和PAGE的分析研究
    OTP技術等都體現出單片機產業的新趨勢。現在PIC系列單片機在世界單片機市場的份額排名中已逐年升位,尤其在8位單片機市場,據稱已從1990年的第20位上升到目前的第二位。PIC單片機從覆蓋市場出發,已有三種(又稱三層次)系列多種型號的產品問世,所以在全球都可以看到PIC單片機從電腦的外設、家電控制、電訊通信、智能儀器、汽車電子到金融電子各個領域的廣泛應用。現今的PIC單片機已經是世界上最有影響力的嵌入式微控制器之一。
  • pic單片機學習教材(一):接口設計
    PIC單片機(Peripheral Interface Controller)是一種用來開發去控制外圍設備的集成電路(IC)。現在PIC單片機應用領域已經相當廣泛,為了方便廣大工程師能夠很好的學習 PIC單片機,電子發燒友網整理了PIC單片機的相關知識應用,現在先帶您學習下PIC單片機在接口設計中的應用吧。
  • PIC系列單片機程序設計基礎
    1、PIC單片機程序的基本格式本文引用地址:http://www.eepw.com.cn/article/201610/307670.htm先介紹二條偽指令:EQU ——標號賦值偽指令ORG ——地址定義偽指令PIC16C5X單片機在RESET