現在PIC單片機還有用的嗎?
對于計算機學(xué)院與電子學(xué)院相關(guān)的同學(xué)來(lái)說(shuō),單片機一定不是一個(gè)陌生的概念。在大學(xué)的學(xué)習生涯中,經(jīng)常用于教學(xué)的是MCS-51系列單片機。其實(shí),除了MCS-51單片機外,還有一類(lèi)單片機——PIC單片機。
本文引用地址:http://dyxdggzs.com/article/202303/443909.htm01 什么是PIC單片機
PIC單片機,英文名為Peripheral Interface Controller,翻譯為“開(kāi)發(fā)和控制外圍設備用集成電路”,可以看作是一種高度集成化的小型計算機,擁有CPU、寄存器、內存單元、串口并口等一系列計算機運行時(shí)需要依賴(lài)的硬件設備。
02 PIC單片機與MCS-51單片機的區別
相較于51系列單片機,PIC單片機的區別主要有3點(diǎn):
1 總線(xiàn)結構
51系列單片機采用的是經(jīng)典的“馮諾依曼體系結構”,而PIC單片機則是采用“哈佛體系結構”。這里簡(jiǎn)單介紹一下兩種體系結構的不同:馮諾依曼體系結構是單總線(xiàn)結構,即數據傳輸與指令傳輸共用一條總線(xiàn);而哈佛體系結構則是雙總線(xiàn)結構,即數據傳輸與指令傳輸分別使用一條總線(xiàn)。由于采用哈佛體系結構,所以PIC單片機的數據總線(xiàn)和指令總線(xiàn)位數(寬度)可能不同。
2 流水線(xiàn)結構
51系列單片機采用的是單流水線(xiàn)結構,即在一條指令完全執行完畢后才會(huì )執行。而PIC單片機則有二級流水結構,可以在一定程度上實(shí)現指令并發(fā)(雖然不如x86/64系列CPU或者ARM系列CPU)。
3 匯編指令
51系列單片機大約有一百多條匯編指令,基本包含了在程序運行中需要用到的絕大多數匯編指令。而PIC的匯編只有35條,功能較少(例如沒(méi)有常用的乘除功能,需要使用循環(huán)加/減實(shí)現乘除功能)。但是PIC的指令執行較快,PIC單片機一個(gè)指令的執行只需一個(gè)指令周期,而51系列單片機則需要2至4個(gè)指令周期。
除了以上區別,在保密性方面,PIC單片機不如51系列單片機,PIC單片機比較不能抗干擾,也很容易被解密。
03 PIC單片機環(huán)境C語(yǔ)言編程簡(jiǎn)介(pic單片機c語(yǔ)言)
相較于其他編程語(yǔ)言,使用C語(yǔ)言開(kāi)發(fā)PIC單片機程序有許多優(yōu)點(diǎn):
1 相較于匯編語(yǔ)言來(lái)說(shuō),使用C語(yǔ)言這類(lèi)高級編程語(yǔ)言進(jìn)行編程比較簡(jiǎn)單方便。使用匯編語(yǔ)言編程需要掌握一定的CPU運行知識,而且對寄存器、運算器指令集等都需要有一定的了解,編程時(shí)也需要時(shí)刻思考匯編指令的運行流程。而使用C語(yǔ)言編程時(shí)則只需將精力放在程序運行邏輯即可。
2 相較于C++、Java等面向對象編程語(yǔ)言來(lái)說(shuō),C語(yǔ)言更加貼近底層運行邏輯,沒(méi)有封裝、繼承等更加高級的語(yǔ)法,更加純粹地關(guān)注程序的執行流程。
04 PIC單片機的C語(yǔ)言編程
PIC單片機環(huán)境下的C語(yǔ)言編程與我們平時(shí)使用的C語(yǔ)言在語(yǔ)法上大致類(lèi)似,不過(guò)仍有些許不同。下面對PIC單片機的C語(yǔ)言編程做簡(jiǎn)要介紹。
1 編譯器配置。由于PIC單片機有獨特的CPU架構,因此不同于傳統的gcc或者vc++編譯器進(jìn)行編譯,PIC單片機環(huán)境下的C語(yǔ)言有專(zhuān)門(mén)的C語(yǔ)言編譯器PICC Compiler。
2 PIC單片機C語(yǔ)言同樣支持常見(jiàn)的short、int、long、float等基本數據類(lèi)型。不過(guò)需要注意的是,PIC單片機C語(yǔ)言的int類(lèi)型為16位存儲,long類(lèi)型為32位存儲,float類(lèi)型為24位存儲。
3 除了基本數據類(lèi)型外,PIC單片機C語(yǔ)言也同樣支持數組、結構體和聯(lián)合體等復合數據類(lèi)型。
4 PIC單片機C語(yǔ)言有一個(gè)特殊的數據寄存器bank,該寄存器由程序員管理,在定義變量時(shí)必須指定變量存儲位置,若不指定則默認存儲在bank0中。
若定義存儲于其他bank寄存器的變量,則需要在定義變量時(shí)指定bank寄存器編號。例如:
bank1 unsigned char buffer[32];
bank2 int flag1, flag2;
5 PIC單片機C語(yǔ)言保留volatile關(guān)鍵字,用于告知某些特殊的值可能會(huì )發(fā)生改變。(pic單片機c語(yǔ)言)
6 使用PIC單片機C語(yǔ)言編程時(shí),雖然也可調用標準庫函數,不過(guò)由于PIC單片機性能有限,由于諸如scanf()/printf()等庫函數的代碼比較繁雜,因此在調用這些庫函數時(shí)需要額外謹慎,可能會(huì )造成程序運行時(shí)間大幅度增加甚至宕機。
7 PIC單片機C語(yǔ)言支持C語(yǔ)言與匯編語(yǔ)言混合編程。若在C語(yǔ)言?xún)炔迦雲R編語(yǔ)言代碼,則需要使用asm關(guān)鍵字標識。
評論