單片機基礎知識及單片機語言_第1頁
單片機基礎知識及單片機語言_第2頁
單片機基礎知識及單片機語言_第3頁
單片機基礎知識及單片機語言_第4頁
單片機基礎知識及單片機語言_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機基礎知識及單片機語言第一頁,共三十七頁,編輯于2023年,星期日

2、單片機能做什么凡是與控制或簡單計算有關的電子設備都可以用單片機來實現,再根據具體實際情況選擇不同性能的單片機,如:atmel,stc,pic,avr,凌陽,80C51,arm等第二頁,共三十七頁,編輯于2023年,星期日工業(yè)自動化:數據采集、測控技術。智能儀器儀表:數字示波器、數字信號源、數字萬用表、感應電流表等。消費類電子產品:洗衣機、電冰箱、空調機、電視機、微波爐、手機、IC卡、汽車電子設備等。通訊方面:調制解調器、程控交換技術、手機、小靈通等。武器裝備:飛機、軍艦、坦克、導彈、航天飛機、魚雷制導、智能武器等。等等…..第三頁,共三十七頁,編輯于2023年,星期日

3、怎么開始學習?1、實踐第一。2、即缺什么補什么(補充必要的理論知識)。3、做實際小制作積累經驗,比如調試、編程。(可在網絡上搜集題目,也可自己有什么想法大膽的去試驗)第四頁,共三十七頁,編輯于2023年,星期日4、80C51系列介紹

Intel的:80C31、80C51、87C51,80C32、80C52、87C52等;

﹡ATMEL的:89C51、89C52、89C2051等;

Philips、華邦、Dallas、STC等公司的許多產品。

80C51是MCS-51系列中的一個典型品種;其它廠商以8051為基核開發(fā)出的CMOS工藝單片機產品統(tǒng)稱為80C51系列。當前常用的80C51系列單片機主要產品有:第五頁,共三十七頁,編輯于2023年,星期日80C51的引腳封裝總線型非總線型第六頁,共三十七頁,編輯于2023年,星期日第七頁,共三十七頁,編輯于2023年,星期日總線(BUS)是計算機各部件之間傳送信息的公共通道。微機中有內部總線和外部總線兩類。內部總線是CPU內部之間的連線。外部總線是指CPU與其它部件之間的連線。外部總線有三種:數據總線DB(DataBus),地址總線

AB(AddressBus)和控制總線

CB(ControlBus)。第八頁,共三十七頁,編輯于2023年,星期日CPU:由運算和控制邏輯組成,同時還包括中斷系統(tǒng)和部分外部特殊功能寄存器;RAM:用以存放可以讀寫的數據,如運算的中間結果、最終結果以及欲顯示的數據;ROM:用以存放程序、一些原始數據和表格;I/O口:四個8位并行I/O口,既可用作輸入,也可用作輸出;T/C:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;第九頁,共三十七頁,編輯于2023年,星期日五個中斷源的中斷控制系統(tǒng);

一個全雙工UART(通用異步接收發(fā)送器)的串行I/O口,用于實現單片機之間或單片機與微機之間的串行通信;片內振蕩器和時鐘產生電路,石英晶體和微調電容需要外接。最高振蕩頻率取決于單片機型號及性能。第十頁,共三十七頁,編輯于2023年,星期日第二部分單片機C語言入門1、C51簡介

C語言是一種編譯型程序設計語言,它兼顧了多種高級語言的特點,并具備匯編語言的功能。目前,使用C語言進行程序設計已經成為軟件開發(fā)的一個主流。用C語言開發(fā)系統(tǒng)可以大大縮短開發(fā)周期,明顯增強程序的可讀性,便于改進、擴充和移植。而針對8051的C語言日趨成熟,成為了專業(yè)化的實用高級語言。第十一頁,共三十七頁,編輯于2023年,星期日

C語言作為一種非常方便的語言而得到廣泛的支持,很多硬件開發(fā)都用C語言編程,如:各種單片機、DSP、ARM等.C語言程序本身不依賴于機器硬件系統(tǒng),基本上不作修改就可將程序從不同的單片機中移植過來。

C提供了很多數學函數并支持浮點運算,開發(fā)效率高,故可縮短開發(fā)時間,增加程序可讀性和可維護性。

C-51的特點第十二頁,共三十七頁,編輯于2023年,星期日C-51與ASM-51(匯編)相比,有如下優(yōu)點:1.

對單片機的指令系統(tǒng)不要求了解,僅要求對8051的存貯器結構有初步了解;2.

寄存器分配、不同存貯器的尋址及數據類型等細節(jié)可由編譯器管理;3.

程序有規(guī)范的結構,可分成不同的函數,這種方式可使程序結構化;4.

提供的庫包含許多標準子程序,具有較強的數據處理能力;5.

由于具有方便的模塊化編程技術,使已編好程序可容易地移植;第十三頁,共三十七頁,編輯于2023年,星期日2、單片機C程序設計的一般格式幾個基本概念(1)函數:C語言程序由一個主函數和若干個其它函數構成,程序中由主函數調用其它函數,其它函數之間也可以相互調用。(2)指針與指針變量:若定義變量x,&x即為x的指針,指針變量是指針的指針,若xp=&x,利用*xp即可訪問變量x。(3)#include(包含處理命令):把一個源文件將另外一個源文件的全部內容包含進來,或者說把一個外部文件包含到本文件之中。(4)#define(宏定義):在C程序中,可以指定一標志符去定義一個常量或字符串。第十四頁,共三十七頁,編輯于2023年,星期日單片機C程序的基本結構(1)主函數名必須為main()。C程序通過函數調用去執(zhí)行指定的工作。(2)一個函數由說明部分和函數體兩部分組成。函數說明部分是對函數名、函數類型、形參名和形參類型等所做的說明。(3)C程序的執(zhí)行總是從main()函數開始,而對該函數的位置無特殊規(guī)定。(4)在源程序文件需要包含其它源程序文件時,應在本程序文件頭部用包含命令#include處理。(5)C程序中的一個函數需要調用另一個子函數時,另一個函數應寫在前面,否則應聲明。(6)C程序書寫格式自由,一行可寫一個語句或幾個語句。每個語句結尾用;結束。第十五頁,共三十七頁,編輯于2023年,星期日3、單片機C程序的數據類型常量和符號常量例:#definePARL3.14159(PARL即為符號常量)(1)整型常量,如11,o11,0xff等。(2)實型常量,如0.12,1.55e5等。(3)字符常量,如‘a’、‘A’等。(4)字符串常量,如“a”、“CHINA”等。變量(1)位變量:bit和sbit(2)字符變量:singedchar和unsignedchar(3)整型變量:singedint和unsignedint(4)長整型變量:unsignedlong和signedlong第十六頁,共三十七頁,編輯于2023年,星期日(3)實型變量:float和double(4)寄存器變量:sfr和sfr164、單片機C程序的運算符和表達式(1)算術運算符13個:+、-、*、/、%、=、+=、-=、*=、/=、%=、++、--(2)關系運算符6個:>、<、==、>=、<=、!=(3)邏輯運算符3個:&&、||、!(4)位操作運算符7個:>>、<<、|、&(相與)、^、~、&(變量取地址)(5)指針運算符:*第十七頁,共三十七頁,編輯于2023年,星期日5、單片機C程序的一般語法結構順序結構例:main(){P0=0xff;P2=0x30;P1=0xff;P3=0xff;scan();test();}第十八頁,共三十七頁,編輯于2023年,星期日分支結構(1)單分支結構形式:if(條件表達式){執(zhí)行語句;}例:第十九頁,共三十七頁,編輯于2023年,星期日(2)雙分支結構:形式:if(條件表達式){語句1;}else{語句2;}例:第二十頁,共三十七頁,編輯于2023年,星期日(3)由雙分支結構變化而成的多分支結構形式:

if(表達式1)語句1;

elseif(表達式2)語句2;

.

.elseif(表達式n)語句n;else語句n+1;第二十一頁,共三十七頁,編輯于2023年,星期日例:第二十二頁,共三十七頁,編輯于2023年,星期日(4)switch…case多分支轉移結構語句形式:

switch(條件表達式)

{case常量表達式1:{語句1;break;}case常量表達式2:{語句2;break;}.

..case常量表達式n:{語句n;break;}default:{語句n+1;break;}}第二十三頁,共三十七頁,編輯于2023年,星期日例:第二十四頁,共三十七頁,編輯于2023年,星期日循環(huán)結構(1)while(表達式){循環(huán)體語句;}例:voiddelay(unsignedchartimes){unsignedcharI;i=250;while(--times){while(--i);}}第二十五頁,共三十七頁,編輯于2023年,星期日(2)do{循環(huán)體語句;}while(表達式);(3)for(表達式1;表達式2;表達式3){循環(huán)體語句;}例:第二十六頁,共三十七頁,編輯于2023年,星期日6、C51區(qū)別于標準C語言的特點(1)使用文件包含命令#include應注意對應頭文件的名稱,要與規(guī)定名稱相符。(2)單片機中,一個變量可放在片內存儲單元,也可放在片外存儲單元,放在片內存儲單元還要區(qū)分是否可位尋址,或放在間接尋址區(qū)。例:intdatax,y;//表示整型變量指定在片內數據存儲區(qū)

charxdatam,n;//表示字符變量指定在片外數據存儲區(qū)第二十七頁,共三十七頁,編輯于2023年,星期日C51存儲類型存儲類型尋址空間數據長度值域范圍data片內直接尋址RAM800H~7FHidata片內間接尋址RAM880H~FFHpdata分頁尋址片外RAM800H~FFH第二十八頁,共三十七頁,編輯于2023年,星期日存儲類型尋址空間數據長度值域范圍xdata片外數據存儲(64K)160000H~FFFFHcode片內統(tǒng)一編址ROM(64K)160000H~FFFFHbdata片內可位尋址的RAM(16byet)120H~2FH第二十九頁,共三十七頁,編輯于2023年,星期日(3)21個SFR只能直接尋址,一般在頭文件中用字節(jié)定義方式定義。如:sfrTMOD=0x89;

(4)C51編譯器編譯源程序時,數據類型和存儲類型都可預先定義,但數據具體放在哪一個單元不由用戶指定。(5)單片機C程序的中斷程序與匯編語言程序不同,中斷過程通過使用interrupt關鍵字和中斷號(0~31)來實現。中斷號告訴編譯器中斷程序的入口地址。第三十頁,共三十七頁,編輯于2023年,星期日單片機中斷源與C中斷程序中中斷號對照表C中的中斷號對應單片機中的中斷源C中的中斷號對應單片機中的中斷源0外部中斷03定時器1中斷1定時器0中斷4串行口中斷2外部中斷15定時器2中斷第三十一頁,共三十七頁,編輯于2023年,星期日一個定時器0中斷程序編寫格式如下:Voidtimer0(void)interrupt1{TR0=0;TH0=0xff;TL0=0x30;TR0=0;tick_count++;}用戶不必關心現場保護及恢復現場的問題,編譯器會自動完成。中斷程序的入口地址被編譯器放在中斷向量中,無需用戶指定。第三十二頁,共三十七頁,編輯于2023年,星期日(6)片外擴展的I/O接口,可用#define進行定義。如:#include"absacc.h"#defineADC0804XBYTE[0x7ffe]第三十三頁,共三十七頁,編輯于2023年,星期日例1:清零程序(將2000H—20FFH的內容清零)

★匯編語言程序

ORG0000HSE01:MOVR0,#00HMOVDPTR,#2000H;(0000H)送DPTRLOO1:CLRAMOVX@DPTR,A;0送(DPTR)INCDPTR;DPTR+1INCR0;字節(jié)數加1CJNER0,#00H,LOO1;不到FF個字節(jié)再清LOOP:SJMPLOOP程序示例第三十四頁,共三十七頁,編輯于2023年,星期日清零程序(將2000H—20FFH的內容清零)

★C-51程序

#include<reg51.h>main(){inti;unsignedcharxdata*p=0x2000;

/*指針指向2000H單元*/for(i=0;i<256;i++){*p=0;p++;}/*清零2000H-20FFH單元*/}第三十五頁,共三十七頁,編輯于2023年,星期日★匯編語言程序

ORG0000HL00:MOV

溫馨提示

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

評論

0/150

提交評論