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

下載本文檔

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

文檔簡介

單片機基礎(chǔ)知識及單片機C語言

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

3、怎么開始學(xué)習(xí)?1、實踐第一。2、即缺什么補什么(補充必要的理論知識)。3、做實際小制作積累經(jīng)驗,比如調(diào)試、編程。(可在網(wǎng)絡(luò)上搜集題目,也可自己有什么想法大膽的去試驗)4、80C51系列介紹

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

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

Philips、華邦、Dallas、STC等公司的許多產(chǎn)品。

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

AB(AddressBus)和控制總線

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

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

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

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

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

C-51的特點C-51與ASM-51(匯編)相比,有如下優(yōu)點:1.

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

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

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

提供的庫包含許多標(biāo)準(zhǔn)子程序,具有較強的數(shù)據(jù)處理能力;5.

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

if(表達(dá)式1)語句1;

elseif(表達(dá)式2)語句2;.

.elseif(表達(dá)式n)語句n;else語句n+1;例:(4)switch…case多分支轉(zhuǎn)移結(jié)構(gòu)語句形式:

switch(條件表達(dá)式)

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

..case常量表達(dá)式n:{語句n;break;}default:{語句n+1;break;}}例:循環(huán)結(jié)構(gòu)(1)while(表達(dá)式){循環(huán)體語句;}例:voiddelay(unsignedchartimes){unsignedcharI;i=250;while(--times){while(--i);}}(2)do{循環(huán)體語句;}while(表達(dá)式);(3)for(表達(dá)式1;表達(dá)式2;表達(dá)式3){循環(huán)體語句;}例:6、C51區(qū)別于標(biāo)準(zhǔn)C語言的特點(1)使用文件包含命令#include應(yīng)注意對應(yīng)頭文件的名稱,要與規(guī)定名稱相符。(2)單片機中,一個變量可放在片內(nèi)存儲單元,也可放在片外存儲單元,放在片內(nèi)存儲單元還要區(qū)分是否可位尋址,或放在間接尋址區(qū)。例:intdatax,y;//表示整型變量指定在片內(nèi)數(shù)據(jù)存儲區(qū)

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

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

★匯編語言程序

ORG0000HSE01:MOVR0,#00HMOVDPTR,#2000H;(0000H)送DPTRLOO1:CLRAMOVX@DPTR,A;0送(DPTR)INCDPTR;DPTR+1INCR0;字節(jié)數(shù)加1CJNER0,#00H,LOO1;不到FF個字節(jié)再清LOOP:SJMPLOOP程序示例清零程序(將2000H—20FFH的內(nèi)容清零)

★C-51程序

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

/*指針指向2000H單元*/for(i=0;i<256;i++){*p=0;p++;}/*清零2000H-20FFH單元*/}★匯編語言程序

ORG0000HL00:MOVR0,#10H;查找16個字節(jié)

MOVR1,#00HMOVDPTR,#2000H

溫馨提示

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

評論

0/150

提交評論