51單片機讀書筆記_第1頁
51單片機讀書筆記_第2頁
51單片機讀書筆記_第3頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、51單片機讀書筆記【篇一:51單片機讀書筆記】單片機是一種集成電路芯片,采用超大規(guī)模技術把具有數(shù)據(jù)處理能力(如算術運算、邏輯運算、數(shù)據(jù)傳送、中斷處理)的微處理器(cpu),隨機存取數(shù)據(jù)存儲器(ram),只讀程序存儲器(rom),輸入輸出電路(i/o口),可能還包括定時/計數(shù)器,串行通彳口(sci),顯示驅動電路(led或led驅動電路),脈寬調制電路(pwm),模擬多路轉換器及a/d轉換器等電路集成到一個單塊芯片上,構成一個最小然而完善的計算機系統(tǒng)。軟件特征是指指令系統(tǒng)特性和開發(fā)支持環(huán)境,指令特性即單片機的尋址方式、數(shù)據(jù)處理方式、邏輯處理方式、輸入輸出特性及對電源的要求等等現(xiàn)在常規(guī)的單片機普遍

2、都是將中央處理器(cpu)、隨機存取數(shù)據(jù)存儲(ram)、只讀程序存儲器(rom)、并行和串行通信接口,中斷系統(tǒng)、定時電路、時鐘電路集成在一個單一的芯片上,增強型的單片機集成了如a/d轉換器、pmw(脈寬調制電路)、wdt(看門狗),有些單片機將led(液晶)驅動電路都集成在單一的芯片上,這樣單片機包含的單元電路就更多,功能就越強大單片機按內(nèi)部數(shù)據(jù)通道的寬度,可分為4位、8位、16位及32位單片機。單片機的特點可歸納為以下幾個方面:1)集成度高2)存儲容量大3)外部擴展能力強4)控制功能強5)低電壓、低功耗6)低電壓、低功耗7)可靠性高mcs-51系列單片機還有頗具特色的21個特殊功能寄存器sf

3、r利用sfr可完成對定時器、串行口、中斷邏輯的控制,這就使得單片機可以把定時/計數(shù)器、串行口、中斷邏輯等集成在一個芯片上。mcs-51單片機組成結構中包含運算器、控制器、片內(nèi)存儲器、并行i/o口、串行i/o口、定時/計數(shù)器、中斷系統(tǒng)、振蕩器等功能部件sp是堆棧指針寄存器,pc是程序計數(shù)器,psw是程序狀態(tài)字寄存器,dptr是數(shù)據(jù)指針寄存器。程序狀態(tài)字寄存器(標志寄存器)。程序狀態(tài)字寄存器(psw)是一個8位的特殊寄存器,它保存alu運算結果的特征和處理狀態(tài),以供程序查詢和判另U。psw中各位狀態(tài)信息通常是指令執(zhí)行過程中自動形成的,但也可以由用戶根據(jù)需要加以改變。psw中各位的定義如下:時,(c

4、y)=1;當加法或減法運算時,最高位無進位或借位,(cy)=0。cy位主要用在多字節(jié)的加減法運算中。ac(psw.6):輔助進位標志。無符號數(shù)運算中,當加法或減法運算時,低4位向局4位有進位或借位,(ac)=1;當加法或減法運算時,低4位向高4位無進位或借位,(ac)=0。ac位常作為計算機進行bcd碼修正的判斷依據(jù)。 f0(psw.5):用戶標志位。無特另U意義,供用戶自行定義。通過軟件置位或清零,并根據(jù)(f0)=1或0來反映系統(tǒng)某一種工作狀態(tài),決定程序的執(zhí)行方式。 rs1、rs0(psw.4、psw.3):工作寄存器組選擇位。可用軟件置位或清零,用于選定當前使用的4個工作寄存器組中的某一組

5、。將在存儲器結構部分中介紹。 ov(psw.2):溢出標志。主要用在有符號數(shù)運算時,運算結果超出了范圍時,(ov)=1;否則,(ov)=0。如為8位運算,若結果超過了8位補碼所能表示的范圍128+127,則(ov)=1。計算機在數(shù)據(jù)處理過程中,ov置位和清位的依據(jù)是:即(ov)=(c)?(c7.6)。p(psw.0):奇偶標志位。在執(zhí)彳了指令后,單片機根據(jù)累加器a的8位二進制數(shù)中“1的個數(shù)的奇偶,自動給該標志置位或清零。若累加器a的8位二進制數(shù)中“1的個數(shù)為奇數(shù),貝U(p)=1;若累加器a中“1的個數(shù)為偶數(shù),貝U(p)=0。該標志對串行通信的數(shù)據(jù)傳輸非常有用,通過奇偶校驗可檢驗傳輸?shù)目煽啃钥刂?/p>

6、器是單片機的神經(jīng)中樞,是由指令寄存器ir、指令譯碼器id、程序計數(shù)器pc、堆棧指針sp、數(shù)據(jù)指針dptr、定時及控制邏輯電路等組成。它先以主振頻率為基準發(fā)出cpu的時序,對指令進行譯碼,然后發(fā)出各種控制信號,完成一系列定時控制的微操作,用來協(xié)調單片機內(nèi)部各功能部件之間的數(shù)據(jù)傳送、數(shù)據(jù)運算等操作控制器1)程序計數(shù)器pc(16位的計數(shù)器)。用于存放cpu下一條要執(zhí)行的指令地址,是一個16位的專用寄存器,可尋址范圍是0000hffffh,共64kb。指令寄存器(ir)o指令寄存器用于存放指令代碼指令譯碼器id。指令譯碼器用于分析指令功能,根據(jù)操作碼產(chǎn)生相應操作的控制信號。(3) 數(shù)據(jù)指針(dptr)

7、。數(shù)據(jù)指針dptr是一個16位的專用寄存器,其高位字節(jié)寄存器用dph表示,低位字節(jié)寄存器用dpl表示。定時與控制邏輯。定時與控制邏輯由時序部件和微操作控制部件構成時序部件。時序部件由時鐘系統(tǒng)和脈沖分配器構成微操作控制部件。計算機在執(zhí)行一條指令時,總是把一條指令分成若干基本操作,稱為微操作。微操作控制部件根據(jù)指令產(chǎn)生計算機各部件所需要的控制信號。這些控制信號是由指令譯碼器的輸出信號、脈沖分配器產(chǎn)生的節(jié)拍脈沖以及外部的狀態(tài)信號等進行組合產(chǎn)生【篇二:51單片機學習筆記】51單片機手冊51單片機手冊1開發(fā)板1程序下載1程序開發(fā)1開發(fā)環(huán)境1i2c2i2c通信讀寫數(shù)據(jù)過程2spi總線4概括4c語言應用4斷

8、4data,idata,xdata,pdata,code5c語言中的static詳細分析6開發(fā)板程序下載stc90xx的下載注意點:1.3.3v和5v短路帽需要接到5v2.j0挑到auto3.txd,rxd都在usb端4.用usb轉串口線連接pc和板子5.usb轉串口的驅動裝上.6.用pzisp.exe,芯片型號要選對。程序開發(fā)開發(fā)環(huán)境需要轉上keil3工程文件后綴為uv2一開始要新建一個project,會自動跳出選擇相應芯片的窗口,選擇對應的就ok,主要是為了生成頭文件i2ci2c通信讀寫數(shù)據(jù)過程在通信之初,主從機必須根據(jù)自己的要求約定好通信規(guī)則:command的定義和位置、address的

9、位數(shù)和位置。以讀寫從機寄存器數(shù)據(jù)為例:假設從機寄存器地址為8位、從機寄存器也位8位(被讀取數(shù)據(jù)為8位);約定讀command為0x01,寫command位0x02;約定主機發(fā)起通信后,第一個slaveaddress字節(jié)收到ack后,緊跟的一個字節(jié)為command,再下面一個字節(jié)為address。1. 讀寄存器數(shù)據(jù)步驟:1.1主機先發(fā)起一次通信,將讀command(0x01)和需要讀取的寄存器地址address寫入從機;(主機發(fā)出寫操作)1.2從機firmware的處理:2. 1.2.1將command和address分另U提取出來;1.2.2判斷command的含義(本例中,是讀指令還是寫指令

10、);1.2.3根據(jù)收到的的address,將對應寄存器的的數(shù)據(jù)放入從機i2c輸出buffer;(這個步驟可以使用指針)1.3主機再次發(fā)起一次通信,讀取從機的數(shù)據(jù);(主機發(fā)出讀操作)寫操作步驟:2.1主機發(fā)起通信,按約定依次寫入command、要寫入的從機寄存器地址address和要寫入的數(shù)據(jù)data;2.2從機firmware要做的處理:分另U提取command、address和data;2.2.2根據(jù)command做出判斷(本例中則判斷是寫入還是讀?。?.2.3將data寫入與接收到的address對應的寄存器。(這個步驟可以使用指針)。spi總線概括通常有一個主設備和一個或多個從設備,需

11、要至少4根線(1)sdo-主設備數(shù)據(jù)輸出,從設備數(shù)據(jù)輸入;(2)sdi-主設備數(shù)據(jù)輸入,從設備數(shù)據(jù)輸出;(3)sclk-時鐘信號,由主設備產(chǎn)生;cs-從設備使能信號,由主設備控制。據(jù)輸出通過sdo線,數(shù)據(jù)在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取spi接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數(shù)據(jù)spi的片選可以擴充選擇16個外設,這時pcs輸出=npcs,說npcs03接4-16譯碼器,這個譯碼器是需要外接4-16譯碼器,譯碼器的輸入為npcs03,輸出用于16個外設的選擇。c語言應用中斷timer0_int()interrupt1using2unsigne

12、dchartemp1;unsignedchartemp2;executablecstatements;interrupt聲明表示向量生成在(8*n+3),這里,n就是interrupt參數(shù)后的那個數(shù)字這里,在08h的代碼區(qū)域生成ljmptimer0_int這樣一條指令中斷源的矢量位置中斷源keil中斷編號矢量地址最高優(yōu)先級60x0033外部中斷000x0003定時器0溢出10x000b外部中斷120x0013定時器1溢出30x001b串口40x0023定時器2溢出50x002bdma70x003b硬件斷點80x0043jtag90x004b軟件斷點100x0053監(jiān)視定時器120x0063da

13、ta,idata,xdata,pdata,code從數(shù)據(jù)存儲類型來說,8051系列有片內(nèi)、片外程序存儲器,片內(nèi)、片外數(shù)據(jù)存儲器,片內(nèi)程序存儲器還分直接尋址區(qū)和間接尋址類型,分另U對應code、data、xdata、idata以及根據(jù)51系列特點而設定的pdata類型,使用不同的存儲器,將使程序執(zhí)行效率不同,在編寫c51程序時,最好指定變量的存儲類型,這樣將有利于提高程序執(zhí)行效率(此問題將在后面專門講述)。與ansi-c稍有不同,它只分samll、compact、large模式,各種不同的模式對應不同的實際硬件系統(tǒng),也將有不同的編譯結果。在51系列中1data,idata,xdata,pdata

14、的區(qū)另U:data:固定指前面0x00-0x7f的128個ram,可以用acc直接讀寫的,速度最快,生成的代碼也最小。idata:固定指前面0x00-0xff的256個ram,其中前128和data的128完全相同,只是因為訪問的方式不同。idata是用類似c中的指針方式訪問的。匯編中的語句為:moxacc,rx.(不重要的補充:c中idata做指針式的訪問效果很好)xdata:外部擴展ram,一般指外部0x0000-0xffff空間,用dptr訪問。pdata:外部擴展ram的低256個字節(jié),地址出現(xiàn)在a0-a7的上時讀寫,用movxacc,rx讀寫。這個比較特殊,而且c51好象有對此bug

15、,建議少用。但也有他的優(yōu)點,具體用法屬于中級問題,這里不提?!酒?1單片機c語言學習筆記】一、定時器/計數(shù)器1. 定時器/計數(shù)器結構2. 寄存器tcon:定時器/計數(shù)啟動和停止2.1 tcon的高4位控制定時器/計數(shù)器的啟動和中斷申請,低4位與外部中斷有關。2.1.1 tf1/tf0:定時器/計數(shù)器t1和t0的益處標志位,定時器/計數(shù)器有溢出時,會將tf1或tf0位置“T,表示定時器/計數(shù)器有中斷請求。2.1.2 tr1或tr0:定時器/計數(shù)器t1和t0的啟動/停止位。tr1或tr0設置為“T定時器/計數(shù)器t1和t0的啟動,若設置為“0”,相應的定時器/計數(shù)器就停止工作。3. 寄存器tmo

16、d:設置定時器/計數(shù)工作方式(用于計數(shù)或定時)。tmod:定時器/計數(shù)器工作方式tmod寄存器中高4位控制t1,低4位控制t0。他們對定時器/計數(shù)器工作t0、t1的控制功能是一樣。(下面以低4位控制定時器/計數(shù)器t0為例,說明各位的具體控制功能)3.2.1gate:門控位,控制定時器/計數(shù)器的啟動模式。gate=0時,只要用軟件使tcon中的tr0置“1;就可以啟動定時器/計數(shù)器工作。gate=1時,將tr0置“1外,還需要外部中斷引腳int0也為高電平,才能啟動定時器/計數(shù)器工作。c/t:定時器/計數(shù)器模式選擇位c/t=0時,定時器/計數(shù)器被設置為定時器工作方式,c/t=1時,定時器/計數(shù)器

17、被設置為計數(shù)器工作方式。3.2.2 m0、m1:定時器/計數(shù)器工作方式設置位。備注:t0、t1工作于定時或者計數(shù)時都不占cpu工作時間。定時器/計數(shù)器的初始值計算定時器/計數(shù)器應用舉例5.1用定時器t0查詢方式控制p2口8位led燈閃爍使用定時器t0的查詢方式tf0來控制p2口8位led閃爍,t0工作于方式1,led燈閃爍周期100ms,即亮50ms,熄滅50ms0。5.1.1定時器t0工作方式的設置用指令對t0的工作方式進行設置:tmod=0x01;/即tmod=00000001b,低4位gate=0,c/t=0,m1m0=01上述設置中,低4位c/t=0,使t0工作于計時方式。gate=0

18、,使tr0=1時即可啟動t0開始工作。m1m0=01,使t0工作于方式1。5.1.2定時器初值的設定單片機晶振為11.0592mhz,所以經(jīng)12分頻后送到t0的脈沖頻率是f=11.0592/12mhz,周期t=1/f=12/11.0592=1.085us。即每個脈沖計時1.085us,要計時50ms(即50000us),需要計的脈沖數(shù)為50000/1.085=46038(次)。則定時器的初始應設置為65536-46083=19453。這個數(shù)需要t0的高8位寄存器(th0)和低8位寄存器(tl0)來分別存儲,這兩個寄存器初始值的設置方法如下:th0=(65536-46083)/256;/定時器t

19、0的高8位賦初值tl0=(65536-46083)%256;/定時器t0的低8位賦初值5.1.3定時器t0開始工作后,可通過編程讓單片機不斷查詢益出標志位tf0是否為1,若為1,則表示計時時間到,否則等待。5.1.4程序設計實例42:用定時器t0查詢方式p2口8位控制led閃爍#includereg51.h/包含51單片機寄存器定義的頭文件/*函數(shù)功能:主函數(shù)*/voidmain(void)(/ea=1;/開總中斷/et0=1;/定時器t0中斷允許tmod=0x01;/tmod=00000001b,使用定時器t0的模式1th0=(65536-46083)/256;/定時器t0的高8位賦初值tl

20、0=(65536-46083)%256;/定時器t0的低8位賦初值tr0=1;/啟動定時器t0tf0=0;/定時器t0溢出標志位用軟件清零p2=0xff;/先定義p2口為高電平,led燈不亮while(1)/無限循環(huán)等待查詢(while(tf0=0)/查詢標志位是否溢出;/空指令tf0=0;/若計時時間到tf0=1,需用軟件將其清0p2=p2;/將p2按位取反,實現(xiàn)led燈閃爍th0=(65536-46083)/256;/定時器t0的高8位重新賦初值tl0=(65536-46083)%256;/定時器t0的低8位重新賦初值5.2用定時器t1查詢方式控制單片機發(fā)出1khz音頻5.2.1定時器t1

21、工作方式的設置用指令對t1的工作方式進行設置:tmod=0x10;/即tmod=00010000b,高4位gate=0,c/t=0,m1m0=01上述設置中,高4位c/t=0,使t1工作于計時方式。gate=0,使tr1=1時即可啟動t1開始工作。m1m0=01,使t1工作于方式1。5.2.2定時器t1初值的設定要發(fā)出1khz音頻,讓單片機送給蜂鳴器(接p3.7引腳)的電平信號,每隔音頻的半個周期取反一次即可。音頻的周期為1/1000=0.001s,即1000US,則要計數(shù)的脈沖數(shù)為1000/1.0852=921(次),定時器t1的初值設置如下:th1=(65536-921)/256;/定時器

22、t0的高8位賦初值tl1=(65536-921)%256;/定時器t0的低8位賦初值5.2.3程序設計實例43:用定時器t1查詢方式控制單片機發(fā)出1khz音頻#includereg51.h/包含51單片機寄存器定義的頭文件sbitsound=p3八7;/將sound位定義為p3.7引腳/*函數(shù)功能:主函數(shù)*/voidmain(void)/ea=1;/開總中斷/et0=1;/定時器t0中斷允許tmod=0x10;/tmod=00010000b,使用定時器t1的模式1th1=(65536-921)/256;/定時器t1的高8位賦初值tl1=(65536-921)%256;/定時器t1的低8位賦初值tr1=1;/啟動定時器t1tf1=0;/定時器t1溢出標志位用軟件清零while(1)/無限循環(huán)等待查詢while(tf1=0)/查詢標志位是否溢出;/空指令tf1=0;/若計時時間到tf0=1,需用軟件將其清0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論