MCS-51單片機(jī)學(xué)習(xí)及其心得
MCS-51單片機(jī)學(xué)習(xí)及其心得
機(jī)械電子工程學(xué)院09電子(2)班曹小迪201*10330236
201*-201*上學(xué)年我們專業(yè)開設(shè)了MCS-51單片機(jī)的原理及接口技術(shù)這么專業(yè)課程,對(duì)于電子專業(yè)學(xué)生的我們是非常有必要的。單片機(jī)是一切自動(dòng)智能電子產(chǎn)品必須具備的一個(gè)不可或缺的控制中樞系統(tǒng)。通俗點(diǎn)講就是電子產(chǎn)品的“大腦”。所以學(xué)習(xí)單片機(jī)對(duì)于做電子設(shè)計(jì)的我們來說有著遠(yuǎn)的意義。
MCS51是指由美國INTEL公司(對(duì)了,就是大名鼎鼎的INTEL)生產(chǎn)的一系列單片機(jī)的總稱,這一系列單片機(jī)包括了好些品種,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的產(chǎn)品,該系列其它單片機(jī)都是在8051的基礎(chǔ)上進(jìn)行功能的增、減、改變而來的,所以人們習(xí)慣于用8051來稱呼MCS51系列單片機(jī),而8031是前些年在我國最流行的單片機(jī),所以很多場合會(huì)看到8031的名稱。
MSC-51的基本組成:
運(yùn)算器
一、MCS51的CPU由運(yùn)算器和控制器組成。
運(yùn)算器以完成二進(jìn)制的算術(shù)/邏輯運(yùn)算部件ALU為核心,再加上暫存器TMP、累加器ACC、寄存器B、程序狀態(tài)標(biāo)志寄存器PSW及布爾處理器。累加器ACC是一個(gè)八位寄存器,它是CPU中工作最頻繁的寄存器。在進(jìn)行算術(shù)、邏輯運(yùn)算時(shí),累加器ACC往往在運(yùn)算前暫存一個(gè)操作數(shù)(如被加數(shù)),而運(yùn)算后又保存其結(jié)果(如代數(shù)和)。寄存器B主要用于乘法和除法操作。標(biāo)志寄存器PSW也是一個(gè)八位寄存器,用來存放運(yùn)算結(jié)果的一些特征,如有無進(jìn)位、借位等。其每位的具體含意如下所示:控制器
控制器是CPU的神經(jīng)中樞,它包括定時(shí)控制邏輯電路、指令寄存器、譯碼器、地址指針DPTR及程序計(jì)數(shù)器PC、堆棧指針SP等。這里程序計(jì)數(shù)器PC是由16位寄存器構(gòu)成的計(jì)數(shù)器。要單片機(jī)執(zhí)行一個(gè)程序,就必須把該程序按順序預(yù)先裝入存儲(chǔ)器ROM的某個(gè)區(qū)域。單片機(jī)動(dòng)作時(shí)應(yīng)按順序一條條取出指令來加以執(zhí)行。因此,必須有一個(gè)電路能找出指令所在的單元地址,該電路就是程序計(jì)數(shù)器PC。當(dāng)單片機(jī)開始執(zhí)行程序時(shí),給PC裝入第一條指令所在地址,它每取出一條指令(如為多字節(jié)指令,則每取出一個(gè)指令字節(jié)),PC的內(nèi)容就自動(dòng)加1,以指向下一條指令的地址,使指令能順序執(zhí)行。只有當(dāng)程序遇到轉(zhuǎn)移指令、子程序調(diào)用指令,或遇到中斷時(shí),PC才轉(zhuǎn)到所需要的地方去。8051CPU指定的地址,從ROM相應(yīng)單元中取出指令字節(jié)放在指令寄存器中寄存,然后,指令寄存器中的指令代碼被譯碼器譯成各種形式的控制信號(hào),這些信號(hào)與單片機(jī)時(shí)鐘振蕩器產(chǎn)生的時(shí)鐘脈沖在定時(shí)與控制電路中相結(jié)合,形成按一定時(shí)間節(jié)拍變化的電平和時(shí)鐘,即所謂控制信息,在CPU內(nèi)部協(xié)調(diào)寄存器之間的數(shù)據(jù)傳輸、運(yùn)算等操作。存儲(chǔ)器
存儲(chǔ)器是單片機(jī)的又一個(gè)重要組成部分,每個(gè)存儲(chǔ)單元對(duì)應(yīng)一個(gè)地址,如256個(gè)單元共有256個(gè)地址,用兩位16進(jìn)制數(shù)表示,即存儲(chǔ)器的地址(00H~FFH)。存儲(chǔ)器中每個(gè)存儲(chǔ)單元可存放一個(gè)八位二進(jìn)制信息,通常用兩位16進(jìn)制數(shù)來表示,這就是存儲(chǔ)器的內(nèi)容。存儲(chǔ)器的存儲(chǔ)單元地址和存儲(chǔ)單元的內(nèi)容是不同的兩個(gè)概念,不能混淆。(1)程序存儲(chǔ)器
程序是控制計(jì)算機(jī)動(dòng)作的一系列命令,單片機(jī)只認(rèn)識(shí)由“0”和“1”代碼構(gòu)成的機(jī)器指令。
(2)數(shù)據(jù)存儲(chǔ)器
單片機(jī)的數(shù)據(jù)存儲(chǔ)器由讀寫存儲(chǔ)器RAM組成。其最大容量可擴(kuò)展到64k,用于存儲(chǔ)實(shí)時(shí)輸入的數(shù)據(jù)。8051內(nèi)部有256個(gè)單元的內(nèi)部數(shù)據(jù)存儲(chǔ)器,其中00H~7FH為內(nèi)部隨機(jī)存儲(chǔ)器RAM,80H~FFH為專用寄存器區(qū)。實(shí)際使用時(shí)應(yīng)首先充分利用內(nèi)部存儲(chǔ)器,從使用角度講,搞清內(nèi)部數(shù)據(jù)存儲(chǔ)器的結(jié)構(gòu)和地址分配是十分重要的。因?yàn)閷碓趯W(xué)習(xí)指令系統(tǒng)和程序設(shè)計(jì)時(shí)會(huì)經(jīng)常用到它們。8051內(nèi)部數(shù)據(jù)存儲(chǔ)器地址由00H至FFH共有256個(gè)字節(jié)的地址空間,該空間被分為兩部分,其中內(nèi)部數(shù)據(jù)RAM的地址為00H~7FH(即0~127)。而用做特殊功能寄存器的地址為80H~FFH。(3)特殊功能寄存器
特殊功能寄存器(SFR)的地址范圍為80H~FFH。在MCS-51中,除程序計(jì)數(shù)器PC和四個(gè)工作寄存器區(qū)外,其余21個(gè)特殊功能寄存器都在這SFR塊中。其中5個(gè)是雙字節(jié)寄存器,它們共占用了26個(gè)字節(jié)。特殊功能寄存器反映了8051的狀態(tài),實(shí)際上是8051的狀態(tài)字及控制字寄存器。
在學(xué)習(xí)單片機(jī)的基本原理組成的時(shí),充分用到了之前學(xué)習(xí)的專業(yè)基礎(chǔ)課包括:電路基礎(chǔ)、模擬電子技術(shù)、數(shù)字電路基礎(chǔ)等課程,從而使我們?cè)僖淮蔚膶?duì)上述課程的鞏固學(xué)習(xí),從新的對(duì)知識(shí)梳理了一遍更加深刻了對(duì)知識(shí)的印象,了解到了知識(shí)串接的重要性。單片機(jī)的指令系統(tǒng)
MSC-51單片機(jī)有包括:數(shù)據(jù)傳送指令、算數(shù)運(yùn)算指令、邏輯運(yùn)算指令、控制轉(zhuǎn)移指令、位操作指令111條,有立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、相對(duì)尋址、變址尋址、位尋址7種尋址方式。在學(xué)習(xí)單片機(jī)的指令系統(tǒng)時(shí)候我們學(xué)習(xí)了一種跟機(jī)器打交道的比較實(shí)用的匯編語言,在這個(gè)學(xué)習(xí)過程是非常有趣的,你可要通過自己編寫程序區(qū)控制單片機(jī)。通過設(shè)計(jì)可以用單片機(jī)制造一些電子產(chǎn)品輸入自己設(shè)計(jì)的程序是它完成我們所需要的功能。
MCS-單片機(jī)作為最早的單片機(jī)其結(jié)構(gòu)簡單,容易較好的讓我們初學(xué)者入門,而一切所以的后來的單片機(jī)的原理都是由MCS-拓展的,所以我們學(xué)習(xí)MSC-51為我們單片機(jī)打下堅(jiān)實(shí)的基礎(chǔ)。
擴(kuò)展閱讀:MCS51單片機(jī)入門學(xué)習(xí)心得
MSC51單片機(jī)入門學(xué)習(xí)心得
1、Keil&C51基本知識(shí)和技巧:
(1)調(diào)試時(shí)間之前記得調(diào)整晶振頻率
(2)程序改過之后要點(diǎn)擊“rebuildalltargetfile”才能更新hex文件(3)新建text文件后要保存為“文件名.c”,然后放進(jìn)工程(4)引用各串口時(shí)記得用大寫(如“P0”)
(5)用STC-ISP燒程序時(shí),當(dāng)hex文件進(jìn)行了更新,需要重新“打開程序文件”(6)用sbit可以給單片機(jī)上某個(gè)指定I/O口進(jìn)行定義,如“sbitD1=P0^0”(7)對(duì)程序進(jìn)行調(diào)試之前需要進(jìn)行保存和編譯
(8)宏定義#define的格式:#define字符串字符串代表的內(nèi)容(不需要加分號(hào))(9)如要調(diào)用子函數(shù),需在主函數(shù)之前進(jìn)行聲明,(聲明格式:“函數(shù)類型函數(shù)名(形
參類型);”,如“voiddelay(unsignedint);”。記得其后要加分號(hào))
(10)主函數(shù)里面記得先添加一個(gè)大循環(huán)while(1){}(11)每當(dāng)需要放{}的時(shí)候記得要成對(duì)地放
(12)延時(shí)函數(shù)一般用嵌套的for()語句來設(shè)計(jì),無限循環(huán)則一般用while()來實(shí)現(xiàn)(13)求反碼的技巧:以用8位二進(jìn)制表示的數(shù)00000001為例,求反碼只需用1111
1111減去00000001,用十六進(jìn)制表示即為0xff0x01,相減的結(jié)果即為00000001(0x01)的反碼
(14)向左循環(huán)移位函數(shù)“_crol_(變量名,移位的位數(shù))”能夠?qū)崿F(xiàn)二進(jìn)制數(shù)的循環(huán)左
移,使用該函數(shù)須添加頭文件“”
(15)向右循環(huán)移位函數(shù)“_cror_(變量名,移位的位數(shù))”能夠?qū)崿F(xiàn)二進(jìn)制數(shù)的循環(huán)右
移,使用該函數(shù)須添加頭文件“”
(16)char型變量一個(gè)字節(jié)(8位二進(jìn)制),int型變量2個(gè)字節(jié)(16位二進(jìn)制),longint
型4個(gè)字節(jié)(32位二進(jìn)制)
(17)用C51編程的時(shí)候出現(xiàn)“warning”的主要原因:定義出來的變量或者函數(shù)在程
序執(zhí)行過程中無法用到,一般出現(xiàn)了warning也要重新修正程序
(18)用keil編程時(shí),不能在變量聲明語句之前加其它語句(C51看作是嚴(yán)格的C語
言)
(19)return語句的作用是退出函數(shù)和返回函數(shù)值,一個(gè)函數(shù)內(nèi)部允許有多個(gè)return
函數(shù)。如果函數(shù)有返回值,則函數(shù)的類型不能為Void型
(20)在函數(shù)A中被調(diào)用的函數(shù)B中的break不能對(duì)函數(shù)A產(chǎn)生作用(21)特殊延時(shí)函數(shù):voiddelay(){;;},延時(shí)時(shí)間大約為5us(22)在keil環(huán)境下,需要按兩下backspace才能刪掉一個(gè)中文字
2、單片機(jī)硬件知識(shí):
(1)單片機(jī)復(fù)位管腳RST:復(fù)位信號(hào)輸入端,高電平有效,當(dāng)輸入不少于2個(gè)機(jī)器
周期的高電平時(shí),單片機(jī)復(fù)位,內(nèi)部的程序指針指向0;單片機(jī)正常工作時(shí)RST加0.5V的低電平電壓;RST管腳同時(shí)還是單片機(jī)的備用電源接入端VPD,當(dāng)Vdd過低時(shí),單片機(jī)接上連接在VPD端的備用電源,用來保證單片機(jī)RAM內(nèi)的數(shù)據(jù)不丟失
(2)單片機(jī)只在上電之后檢測(cè)計(jì)算機(jī)是否有傳來下載指令,如果有則上電后先從計(jì)算機(jī)上下載hex文件,然后再運(yùn)行;單片機(jī)上電后則無法對(duì)其發(fā)送下載指令(單片機(jī)只能在上電之后運(yùn)行之前進(jìn)行下載)
(3)關(guān)于P3總線:P3總線的每一個(gè)管腳除了能作為I/O接口,還有另外一個(gè)功能。
8個(gè)管腳默認(rèn)為I/O接口,要改變管腳的功能需要對(duì)內(nèi)部寄存器進(jìn)行設(shè)置
P3總線的第二功能介紹:
P3.0串行輸入口RXDP3.1串行輸出口TXDP3.2外部中斷0INT0P3.3外部中斷1INT1
P3.4定時(shí)器0/外部計(jì)數(shù)輸入T0&P3.5定時(shí)器1/外部計(jì)數(shù)輸入T1:能夠?qū)苣_輸入的方波數(shù)(高低電平轉(zhuǎn)換次數(shù))進(jìn)行計(jì)數(shù)
(4)30管腳ALE/PROG:單片機(jī)正常工作時(shí)向外輸出周期為六分之一個(gè)時(shí)鐘周期
的方波,用于檢測(cè)單片機(jī)是否正常工作
(5)31管腳EA/Vpp:低電平時(shí)單片機(jī)只訪問外部存儲(chǔ)器,高電平時(shí)當(dāng)單片機(jī)內(nèi)部
存儲(chǔ)器不夠用就訪問外部存儲(chǔ)器
3、數(shù)碼管的顯示:
(1)數(shù)碼管的動(dòng)態(tài)顯示:利用了人類的視覺停留效應(yīng),即一個(gè)人正在看某個(gè)物體,
如果這個(gè)物體消失了,但能夠在1mS(0.001S)內(nèi)重新出現(xiàn),則人眼會(huì)覺得物體沒有消失過。則在設(shè)計(jì)數(shù)碼管動(dòng)態(tài)顯示時(shí),只要保證每位數(shù)碼管都能在消失后0.01s內(nèi)重新出現(xiàn)。(每位數(shù)碼管的發(fā)光時(shí)間應(yīng)該盡量長,保證有足夠的發(fā)光亮度)
(2)在數(shù)碼管的動(dòng)態(tài)顯示中,先改變段選再改變位選能夠有效提高各段數(shù)碼管的清
晰度
3、定時(shí)器:
工作模式寄存器TMOD
控制寄存器TCON
(1)
定時(shí)器/計(jì)數(shù)器計(jì)數(shù)一次的時(shí)間約為0.0000011S(2)定時(shí)器的工作特征:每12個(gè)時(shí)鐘周期計(jì)數(shù)一次;計(jì)數(shù)完成后執(zhí)行一次定時(shí)器
中斷,定時(shí)器中斷其執(zhí)行的一般是對(duì)計(jì)時(shí)器的重新賦值;
(3)打開定時(shí)/計(jì)數(shù)器中斷的語句是“ET0/ET1=1;”,打開總中斷的語句是“EA=1;”(4)定時(shí)器無法啟動(dòng)的原因:
1、沒有打開總中斷(EA沒有置1)2、沒有打開定時(shí)器中斷(IE沒有置1)
3、沒有設(shè)定定時(shí)器的工作方式(以上原因?qū)儆诙〞r(shí)器初始化失。4、沒有給計(jì)數(shù)變量count賦初值;5、沒有打開定時(shí)器(TR沒有置1)
(5)需要定時(shí)器/計(jì)數(shù)器計(jì)數(shù)N次,則給定時(shí)器/計(jì)數(shù)器賦的初值應(yīng)該是65536-N(6)使用定時(shí)器定時(shí)比較麻煩,而且定時(shí)器的數(shù)量有限,通常在需要精確定時(shí)的情
況下才用
(7)定時(shí)器中不能處理進(jìn)行太多的數(shù)據(jù)處理,否則會(huì)影響定時(shí)的準(zhǔn)確性(8)工作模式寄存器(TMOD):
1、GATE:當(dāng)GATE=0時(shí),TR置1即可啟動(dòng)定時(shí)器;當(dāng)GATE=1時(shí),則需要在外部引腳信號(hào)INT=1的條件下把TR置1才能啟動(dòng)定時(shí)器2、C/T:定時(shí)器/計(jì)數(shù)器選擇位,C/T=1時(shí)為計(jì)數(shù)方式,C/T=0時(shí)為定時(shí)方式
3、M0M1:工作方式選擇位,一般選擇M1=0,M0=1,此時(shí)定時(shí)器工作在16位定時(shí)器方式
(9)控制寄存器(TCON):
1、TR:定時(shí)器運(yùn)行控制位,當(dāng)GATE=0時(shí),TR=1啟動(dòng)定時(shí)器,TR=0關(guān)閉定時(shí)器
2、TF:定時(shí)器溢出標(biāo)志位(與外部中斷有關(guān))3、IE:外部中斷請(qǐng)求標(biāo)志位
5、中斷:
(1)中斷的兩種觸發(fā)方式1、電平觸發(fā),中斷發(fā)生在低電平,除非重新回到高
電平,否則單片機(jī)無法返回中斷;2、CP脈沖上升/下降沿觸發(fā),中斷在CP脈沖的上升/下降沿觸發(fā),中斷響應(yīng)完之后程序自動(dòng)返回中斷繼續(xù)執(zhí)行主程序
(2)外部中斷的使用方法(以外部中斷0為例):首先必須打開CPU中斷和外部中
斷,具體在主程序中寫入“EA=1;EX0=1;”;然后編寫中斷后要執(zhí)行的程序,格式為“void函數(shù)名()interrupt0”;設(shè)置外部中斷觸發(fā)方式,“IT0=1;”代表脈沖邊沿觸發(fā),“IT0=0”代表電平觸發(fā);IT0,EX0,EA的默認(rèn)值都為0
(3)8051支持的5個(gè)中斷源分別為外部中斷0、定時(shí)器0溢出中斷、外部中斷1、
定時(shí)器1溢出中斷和串口中斷。對(duì)應(yīng)的中斷號(hào)為0、1、2、3、4;
(4)中斷函數(shù)不需要在主函數(shù)之前聲明6、獨(dú)立鍵盤:
(1)使用獨(dú)立鍵盤的技巧:如果需要系統(tǒng)按一下按鍵執(zhí)行一次指令,則應(yīng)設(shè)定為按
下按鍵后進(jìn)入死循環(huán),松開按鍵后才執(zhí)行指令,則按鍵按下的時(shí)間不會(huì)影響到執(zhí)行指令的次數(shù),避免了系統(tǒng)的錯(cuò)誤工作;同樣是針對(duì)按一下按鍵執(zhí)行一次指令的系統(tǒng),按下按鍵后和松開按鍵后設(shè)定約10毫秒的延時(shí)能夠消除由于振蕩而造成的錯(cuò)誤執(zhí)行
(2)消抖一般是延時(shí)10ms,是否要進(jìn)行消抖需要結(jié)合具體情況進(jìn)行分析7、IIC總線:(1)
I^2C總線由兩條線組成:SCL(時(shí)間線)和SDA(數(shù)據(jù)線),當(dāng)SCL為低電平時(shí),SDA的高低電平才能發(fā)生變化,SCL為高電平時(shí)SDA上的數(shù)據(jù)被讀取,此時(shí)SDA上的數(shù)據(jù)應(yīng)該保持穩(wěn)定
(2)
(3)(4)(5)(6)(7)(8)
(起始信號(hào)與終止信號(hào))
在起始信號(hào)后必須傳送一個(gè)從機(jī)的地址(7位),第8位是數(shù)據(jù)的傳送方向位(發(fā)送T/接收R),0代表主機(jī)發(fā)送數(shù)據(jù),1代表主機(jī)接收數(shù)據(jù)
當(dāng)接收器要處理內(nèi)部中斷,無法繼續(xù)接收數(shù)據(jù)時(shí),可以先把SCL拉低使發(fā)送器暫停工作,等到可以繼續(xù)接收數(shù)據(jù)時(shí)再釋放SCL
用IIC總線傳送數(shù)據(jù)時(shí),stop信號(hào)和start信號(hào)之間應(yīng)該有一定的時(shí)間間隔。時(shí)間間隔太短機(jī)器有可能反應(yīng)不過來
IIC總線進(jìn)行數(shù)據(jù)傳送時(shí),時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定
養(yǎng)成良好習(xí)慣,數(shù)據(jù)總線不用的時(shí)候要將其釋放
IIC總線空閑時(shí),SCL和SDA兩根線均為高電平;各器件與SCL、SDA的關(guān)系都是線“與”的關(guān)系
IIC主機(jī)進(jìn)行讀操作時(shí),步驟是:起始信號(hào)從機(jī)地址+0(主機(jī)發(fā)送數(shù)據(jù))應(yīng)答從機(jī)內(nèi)部存儲(chǔ)單元地址應(yīng)答再次發(fā)送起始信號(hào)從機(jī)地址+1(主機(jī)讀取數(shù)據(jù))應(yīng)答讀取指定存儲(chǔ)單元中的數(shù)據(jù)非應(yīng)答終止信號(hào)(使用IIC總線的關(guān)鍵是嚴(yán)格按照操作步驟進(jìn)行操作!)IIC主機(jī)發(fā)出終止信號(hào)之后要隔一段時(shí)間才能重新發(fā)送起始信號(hào)傳送數(shù)據(jù)時(shí)從數(shù)據(jù)的最高位開始傳送
數(shù)據(jù)傳送進(jìn)行到應(yīng)答位時(shí),要保證應(yīng)答位時(shí)鐘脈沖出現(xiàn)后和消失前SDA保持穩(wěn)定低電平
當(dāng)主機(jī)接收數(shù)據(jù)時(shí),它收到最后一個(gè)數(shù)據(jù)字節(jié)后,必須向從機(jī)發(fā)出一個(gè)結(jié)束傳送的信號(hào)。這個(gè)信號(hào)是由對(duì)從機(jī)的“非應(yīng)答”來實(shí)現(xiàn)的。然后,從機(jī)釋放SDA線,以允許主機(jī)產(chǎn)生終止信號(hào)。
無論是讀數(shù)據(jù)還是寫數(shù)據(jù),讀/寫完一個(gè)字節(jié)之后必須添加應(yīng)答信號(hào)
(9)(10)(11)(12)
(13)
8、繼電器:
繼電器的作用是利用小電流控制大電流,相當(dāng)于一個(gè)電控開關(guān)。常用的繼電器有五個(gè)引腳,其中兩個(gè)通電后繼電器進(jìn)入“常閉”狀態(tài)。不通電時(shí)繼電器處于“常開”狀態(tài)。
9、時(shí)鐘芯片DS1302:
用BCD碼來存儲(chǔ)數(shù)據(jù),BCD碼的高4位對(duì)應(yīng)一個(gè)十進(jìn)制數(shù)的十位,低4位對(duì)應(yīng)十進(jìn)制數(shù)的個(gè)位
友情提示:本文中關(guān)于《MCS-51單片機(jī)學(xué)習(xí)及其心得》給出的范例僅供您參考拓展思維使用,MCS-51單片機(jī)學(xué)習(xí)及其心得:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請(qǐng)聯(lián)系我們及時(shí)刪除。