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

下載本文檔

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

文檔簡(jiǎn)介

單片機(jī)基礎(chǔ)知識(shí)及單片機(jī)C語(yǔ)言

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

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

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

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

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

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

AB(AddressBus)和控制總線

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

★匯編語(yǔ)言程序

ORG0000HSE01:MOVR0,#00HMOVDPTR,#2000H;(0000H)送DPTRLOO1:CLRAMOVX@DPTR,A;0送(DPTR)INCDPTR;DPTR+1INCR0;字節(jié)數(shù)加1CJNER0,#00H,LOO1;不到FF個(gè)字節(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單元*/}★匯編語(yǔ)言程序

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

MOVR1,#00HMOVDPTR,#2000H

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論