


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、51單片機讀書筆記【篇一:51單片機讀書筆記】單片機是一種集成電路芯片,采用超大規模技術把具有數據處理能力(如算術運算、邏輯運算、數據傳送、中斷處理)的微處理器(cpu),隨機存取數據存儲器(ram),只讀程序存儲器(rom),輸入輸出電路(i/o口),可能還包括定時/計數器,串行通彳口(sci),顯示驅動電路(led或led驅動電路),脈寬調制電路(pwm),模擬多路轉換器及a/d轉換器等電路集成到一個單塊芯片上,構成一個最小然而完善的計算機系統。軟件特征是指指令系統特性和開發支持環境,指令特性即單片機的尋址方式、數據處理方式、邏輯處理方式、輸入輸出特性及對電源的要求等等現在常規的單片機普遍
2、都是將中央處理器(cpu)、隨機存取數據存儲(ram)、只讀程序存儲器(rom)、并行和串行通信接口,中斷系統、定時電路、時鐘電路集成在一個單一的芯片上,增強型的單片機集成了如a/d轉換器、pmw(脈寬調制電路)、wdt(看門狗),有些單片機將led(液晶)驅動電路都集成在單一的芯片上,這樣單片機包含的單元電路就更多,功能就越強大單片機按內部數據通道的寬度,可分為4位、8位、16位及32位單片機。單片機的特點可歸納為以下幾個方面:1)集成度高2)存儲容量大3)外部擴展能力強4)控制功能強5)低電壓、低功耗6)低電壓、低功耗7)可靠性高mcs-51系列單片機還有頗具特色的21個特殊功能寄存器sf
3、r利用sfr可完成對定時器、串行口、中斷邏輯的控制,這就使得單片機可以把定時/計數器、串行口、中斷邏輯等集成在一個芯片上。mcs-51單片機組成結構中包含運算器、控制器、片內存儲器、并行i/o口、串行i/o口、定時/計數器、中斷系統、振蕩器等功能部件sp是堆棧指針寄存器,pc是程序計數器,psw是程序狀態字寄存器,dptr是數據指針寄存器。程序狀態字寄存器(標志寄存器)。程序狀態字寄存器(psw)是一個8位的特殊寄存器,它保存alu運算結果的特征和處理狀態,以供程序查詢和判另U。psw中各位狀態信息通常是指令執行過程中自動形成的,但也可以由用戶根據需要加以改變。psw中各位的定義如下:時,(c
4、y)=1;當加法或減法運算時,最高位無進位或借位,(cy)=0。cy位主要用在多字節的加減法運算中。ac(psw.6):輔助進位標志。無符號數運算中,當加法或減法運算時,低4位向局4位有進位或借位,(ac)=1;當加法或減法運算時,低4位向高4位無進位或借位,(ac)=0。ac位常作為計算機進行bcd碼修正的判斷依據。 f0(psw.5):用戶標志位。無特另U意義,供用戶自行定義。通過軟件置位或清零,并根據(f0)=1或0來反映系統某一種工作狀態,決定程序的執行方式。 rs1、rs0(psw.4、psw.3):工作寄存器組選擇位??捎密浖梦换蚯辶?,用于選定當前使用的4個工作寄存器組中的某一組
5、。將在存儲器結構部分中介紹。 ov(psw.2):溢出標志。主要用在有符號數運算時,運算結果超出了范圍時,(ov)=1;否則,(ov)=0。如為8位運算,若結果超過了8位補碼所能表示的范圍128+127,則(ov)=1。計算機在數據處理過程中,ov置位和清位的依據是:即(ov)=(c)?(c7.6)。p(psw.0):奇偶標志位。在執彳了指令后,單片機根據累加器a的8位二進制數中“1的個數的奇偶,自動給該標志置位或清零。若累加器a的8位二進制數中“1的個數為奇數,貝U(p)=1;若累加器a中“1的個數為偶數,貝U(p)=0。該標志對串行通信的數據傳輸非常有用,通過奇偶校驗可檢驗傳輸的可靠性控制
6、器是單片機的神經中樞,是由指令寄存器ir、指令譯碼器id、程序計數器pc、堆棧指針sp、數據指針dptr、定時及控制邏輯電路等組成。它先以主振頻率為基準發出cpu的時序,對指令進行譯碼,然后發出各種控制信號,完成一系列定時控制的微操作,用來協調單片機內部各功能部件之間的數據傳送、數據運算等操作控制器1)程序計數器pc(16位的計數器)。用于存放cpu下一條要執行的指令地址,是一個16位的專用寄存器,可尋址范圍是0000hffffh,共64kb。指令寄存器(ir)o指令寄存器用于存放指令代碼指令譯碼器id。指令譯碼器用于分析指令功能,根據操作碼產生相應操作的控制信號。(3) 數據指針(dptr)
7、。數據指針dptr是一個16位的專用寄存器,其高位字節寄存器用dph表示,低位字節寄存器用dpl表示。定時與控制邏輯。定時與控制邏輯由時序部件和微操作控制部件構成時序部件。時序部件由時鐘系統和脈沖分配器構成微操作控制部件。計算機在執行一條指令時,總是把一條指令分成若干基本操作,稱為微操作。微操作控制部件根據指令產生計算機各部件所需要的控制信號。這些控制信號是由指令譯碼器的輸出信號、脈沖分配器產生的節拍脈沖以及外部的狀態信號等進行組合產生【篇二:51單片機學習筆記】51單片機手冊51單片機手冊1開發板1程序下載1程序開發1開發環境1i2c2i2c通信讀寫數據過程2spi總線4概括4c語言應用4斷
8、4data,idata,xdata,pdata,code5c語言中的static詳細分析6開發板程序下載stc90xx的下載注意點:1.3.3v和5v短路帽需要接到5v2.j0挑到auto3.txd,rxd都在usb端4.用usb轉串口線連接pc和板子5.usb轉串口的驅動裝上.6.用pzisp.exe,芯片型號要選對。程序開發開發環境需要轉上keil3工程文件后綴為uv2一開始要新建一個project,會自動跳出選擇相應芯片的窗口,選擇對應的就ok,主要是為了生成頭文件i2ci2c通信讀寫數據過程在通信之初,主從機必須根據自己的要求約定好通信規則:command的定義和位置、address的
9、位數和位置。以讀寫從機寄存器數據為例:假設從機寄存器地址為8位、從機寄存器也位8位(被讀取數據為8位);約定讀command為0x01,寫command位0x02;約定主機發起通信后,第一個slaveaddress字節收到ack后,緊跟的一個字節為command,再下面一個字節為address。1. 讀寄存器數據步驟:1.1主機先發起一次通信,將讀command(0x01)和需要讀取的寄存器地址address寫入從機;(主機發出寫操作)1.2從機firmware的處理:2. 1.2.1將command和address分另U提取出來;1.2.2判斷command的含義(本例中,是讀指令還是寫指令
10、);1.2.3根據收到的的address,將對應寄存器的的數據放入從機i2c輸出buffer;(這個步驟可以使用指針)1.3主機再次發起一次通信,讀取從機的數據;(主機發出讀操作)寫操作步驟:2.1主機發起通信,按約定依次寫入command、要寫入的從機寄存器地址address和要寫入的數據data;2.2從機firmware要做的處理:分另U提取command、address和data;2.2.2根據command做出判斷(本例中則判斷是寫入還是讀?。?;2.2.3將data寫入與接收到的address對應的寄存器。(這個步驟可以使用指針)。spi總線概括通常有一個主設備和一個或多個從設備,需
11、要至少4根線(1)sdo-主設備數據輸出,從設備數據輸入;(2)sdi-主設備數據輸入,從設備數據輸出;(3)sclk-時鐘信號,由主設備產生;cs-從設備使能信號,由主設備控制。據輸出通過sdo線,數據在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取spi接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數據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參數后的那個數字這里,在08h的代碼區域生成ljmptimer0_int這樣一條指令中斷源的矢量位置中斷源keil中斷編號矢量地址最高優先級60x0033外部中斷000x0003定時器0溢出10x000b外部中斷120x0013定時器1溢出30x001b串口40x0023定時器2溢出50x002bdma70x003b硬件斷點80x0043jtag90x004b軟件斷點100x0053監視定時器120x0063da
13、ta,idata,xdata,pdata,code從數據存儲類型來說,8051系列有片內、片外程序存儲器,片內、片外數據存儲器,片內程序存儲器還分直接尋址區和間接尋址類型,分另U對應code、data、xdata、idata以及根據51系列特點而設定的pdata類型,使用不同的存儲器,將使程序執行效率不同,在編寫c51程序時,最好指定變量的存儲類型,這樣將有利于提高程序執行效率(此問題將在后面專門講述)。與ansi-c稍有不同,它只分samll、compact、large模式,各種不同的模式對應不同的實際硬件系統,也將有不同的編譯結果。在51系列中1data,idata,xdata,pdata
14、的區另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個字節,地址出現在a0-a7的上時讀寫,用movxacc,rx讀寫。這個比較特殊,而且c51好象有對此bug
15、,建議少用。但也有他的優點,具體用法屬于中級問題,這里不提。【篇三:51單片機c語言學習筆記】一、定時器/計數器1. 定時器/計數器結構2. 寄存器tcon:定時器/計數啟動和停止2.1 tcon的高4位控制定時器/計數器的啟動和中斷申請,低4位與外部中斷有關。2.1.1 tf1/tf0:定時器/計數器t1和t0的益處標志位,定時器/計數器有溢出時,會將tf1或tf0位置“T,表示定時器/計數器有中斷請求。2.1.2 tr1或tr0:定時器/計數器t1和t0的啟動/停止位。tr1或tr0設置為“T定時器/計數器t1和t0的啟動,若設置為“0”,相應的定時器/計數器就停止工作。3. 寄存器tmo
16、d:設置定時器/計數工作方式(用于計數或定時)。tmod:定時器/計數器工作方式tmod寄存器中高4位控制t1,低4位控制t0。他們對定時器/計數器工作t0、t1的控制功能是一樣。(下面以低4位控制定時器/計數器t0為例,說明各位的具體控制功能)3.2.1gate:門控位,控制定時器/計數器的啟動模式。gate=0時,只要用軟件使tcon中的tr0置“1;就可以啟動定時器/計數器工作。gate=1時,將tr0置“1外,還需要外部中斷引腳int0也為高電平,才能啟動定時器/計數器工作。c/t:定時器/計數器模式選擇位c/t=0時,定時器/計數器被設置為定時器工作方式,c/t=1時,定時器/計數器
17、被設置為計數器工作方式。3.2.2 m0、m1:定時器/計數器工作方式設置位。備注:t0、t1工作于定時或者計數時都不占cpu工作時間。定時器/計數器的初始值計算定時器/計數器應用舉例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,所以經12分頻后送到t0的脈沖頻率是f=11.0592/12mhz,周期t=1/f=12/11.0592=1.085us。即每個脈沖計時1.085us,要計時50ms(即50000us),需要計的脈沖數為50000/1.085=46038(次)。則定時器的初始應設置為65536-46083=19453。這個數需要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單片機寄存器定義的頭文件/*函數功能:主函數*/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)/無限循環等待查詢(while(tf0=0)/查詢標志位是否溢出;/空指令tf0=0;/若計時時間到tf0=1,需用軟件將其清0p2=p2;/將p2按位取反,實現led燈閃爍th0=(65536-46083)/256;/定時器t0的高8位重新賦初值tl0=(65536-46083)%256;/定時器t0的低8位重新賦初值5.2用定時器t1查詢方式控制單片機發出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初值的設定要發出1khz音頻,讓單片機送給蜂鳴器(接p3.7引腳)的電平信號,每隔音頻的半個周期取反一次即可。音頻的周期為1/1000=0.001s,即1000US,則要計數的脈沖數為1000/1.0852=921(次),定時器t1的初值設置如下:th1=(65536-921)/256;/定時器
22、t0的高8位賦初值tl1=(65536-921)%256;/定時器t0的低8位賦初值5.2.3程序設計實例43:用定時器t1查詢方式控制單片機發出1khz音頻#includereg51.h/包含51單片機寄存器定義的頭文件sbitsound=p3八7;/將sound位定義為p3.7引腳/*函數功能:主函數*/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)/無限循環等待查詢while(tf1=0)/查詢標志位是否溢出;/空指令tf1=0;/若計時時間到tf0=1,需用軟件將其清0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《2025墓地區域租賃合同》
- 2025網絡安全與行政助理的勞動合同
- 2025年初級物業招標代理合同
- 2025房屋租賃合同范文大全
- 中國第二十冶金建設公司綜合學校高中分校高一上學期期中考試歷史試題
- 電子產品研發合同協議
- 生活用水安全合同協議
- 電車運營租車合同協議
- 特級水泥購銷合同協議
- 電力變壓器轉讓合同協議
- 2023市場營銷實習報告2000字
- GA/T 72-2013樓寓對講電控安全門通用技術條件
- 隱患排查治理獎懲臺賬
- 磁環介紹課件
- 新修訂《黃河保護法》PPT
- 宣講第二十次全國代表大會報告主題班會PPT
- 小學語文人教六年級上冊 《橋》公開課- 課件
- VDA6.3 基本知識培訓教材
- 建筑智能化施工組織方案
- 部編版五年級語文下冊第六單元習作:神奇的探險之旅課件
- (全國通用)三甲人民醫院診斷證明書請假條模板(廣東佛山)
評論
0/150
提交評論