單片機(jī)c語言總結(jié)1_第1頁
單片機(jī)c語言總結(jié)1_第2頁
單片機(jī)c語言總結(jié)1_第3頁
單片機(jī)c語言總結(jié)1_第4頁
單片機(jī)c語言總結(jié)1_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

PAGE1單片機(jī)總結(jié)1、單片機(jī)即單片微型計(jì)算機(jī),是將計(jì)算機(jī)主機(jī)(CPU、內(nèi)存和I/O接口)集成在一小塊硅片上的微型機(jī)。2、單片機(jī)為工業(yè)測控而設(shè)計(jì),又稱微控制器。具有三高優(yōu)勢(集成度高、可靠性高、性價(jià)比高)。3、主要應(yīng)用于工業(yè)檢測與控制、計(jì)算機(jī)外設(shè)、智能儀器儀表、通訊設(shè)備、家用電器等。特別適合于嵌入式微型機(jī)應(yīng)用系統(tǒng)。定時(shí)器T2的使用注:51系列是沒有定時(shí)器T2的;#defineMSB_reload_value0x36/*msbreloadvalueexemple高位重載值:延時(shí)60ms*/

#defineLSB_reload_value0x36/*lsbreloadvalueexemple低位重載值*/

#include<reg52.h>//當(dāng)前文件夾內(nèi)的文件

/**FUNCTION_PURPOSE:Thisfilesetuptimer2inmode0(16bitsauto-reloadup/downcountingtimer).

*用于模式0:16位自動(dòng)重載向上/下計(jì)時(shí)

*The16-bitsregisterconsistofall8bitsofTH2andall8bitsofTL2.

*16位寄存器由8位的TH2和8位的TL2組成

*TheEXF2bittoggleswhentimer2overfloworunderflowoccurs.

*當(dāng)timer2向上/下溢出時(shí),置位EXF2位

*EXF2doesnotgenerateinterrupt.Thisbitcanbeusedtoprovide17-bitresolution

*FUNCTION_INPUTS:P1.1(T2EX)=0fordowncountingor1forupcounting.

*EXF2位并不引起中斷。此位可以用來提供17位輸入功能:向上/下計(jì)數(shù)功能

*FUNCTION_OUTPUTS:void*/

sbitB02=P0^2;

sfrT2OMD=0XC9;

voidmain(void)

{

T2OMD=0xfc;

EXF2=0;/*resetflag定時(shí)器2外部標(biāo)志位清除*/

TCLK=0;

RCLK=0;/*disablebaudrategenerator不用于波特率發(fā)生器*/

EXEN2=0;/*ignoreeventsonT2EX視T2EX(P1.1)端信號無效*/

TH2=MSB_reload_value;/*Initmsb_value填入初始化值*/

TL2=LSB_reload_value;/*Initlsb_value*/

RCAP2H=MSB_reload_value;/*reloadmsb_value重載值*/

RCAP2L=LSB_reload_value;/*reloadlsb_value*/

C_T2=0;/*timermode定時(shí)模式*/

CP_RL2=0;/*reloadmode重載模式*/

EA=1;/*interuptenable中斷允許*/

ET2=1;/*enabletimer2interrupt允許T2中斷*/

TR2=1;/*timer2run開始計(jì)時(shí)*/

while(1);/*endless*/

}

voidit_timer2(void)interrupt5/*interruptaddressis0x002b定時(shí)器2中斷向量入口*/

{

B02=~B02;/*P1.2togglewheninterrupt.中斷時(shí)取反*/

TF2=0;/*resetinterruptflag復(fù)位中斷標(biāo)志位*/

}

下面介紹下T2的相關(guān)的用法

52的定時(shí)器T2寄存器說明

51系列的單片機(jī)中都有兩個(gè)定時(shí)器T0和T1,網(wǎng)上的資料挺多的,52單片機(jī)比51單片機(jī)的資源多了一個(gè)定時(shí)器T2和128字節(jié)的ram。

定時(shí)器T2的功能比T1、T0都強(qiáng)大,但描述它的資料不多,可能是使用得比較少的緣故吧。

它是一個(gè)16位的具有自動(dòng)重裝和捕獲能力的定時(shí)/計(jì)數(shù)器,它的計(jì)數(shù)時(shí)鐘源可以是內(nèi)部的機(jī)器周期,

也可以是P1.0輸入的外部時(shí)鐘脈沖。T2的控制寄存器的功能描述如下:

T2CON(T2的控制寄存器),字節(jié)地址0C8H:

位地址

0CFH

0CEH

0CDH

0CCH

0CBH

0CAH

0C9H

0C8H

符號

TF2

EXF2

RCLK

TCLK

EXEN2

TR2

C/T2

CP/RT2

各位的定義如下:

TF2:定時(shí)/計(jì)數(shù)器2溢出標(biāo)志,T2溢出時(shí)置位,并申請中斷。只能用軟件清除,但T2作為波特率發(fā)生器使用的時(shí)候,(即RCLK=1或TCLK=1),T2溢出時(shí)不對TF2置位。

EXF2:當(dāng)EXEN2=1時(shí),且T2EX引腳(P1.0)出現(xiàn)負(fù)跳變而造成T2的捕獲或重裝的時(shí)候,EXF2置位并申請中斷。EXF2也是只能通過軟件來清除的。

RCLK:串行接收時(shí)鐘標(biāo)志,只能通過軟件的置位或清除;用來選擇T1(RCLK=0)還是T2(RCLK=1)來作為串行接收的波特率產(chǎn)生器

TCLK:串行發(fā)送時(shí)鐘標(biāo)志,只能通過軟件的置位或清除;用來選擇T1(TCLK=0)還是T2(TCLK=1)來作為串行發(fā)送的波特率產(chǎn)生器

EXEN2:T2的外部允許標(biāo)志,只能通過軟件的置位或清除;EXEN2=0:禁止外部時(shí)鐘觸發(fā)T2;EXEN2=1:當(dāng)T2未用作串行波特率發(fā)生器時(shí),允許外部時(shí)鐘觸發(fā)T2,

當(dāng)T2EX引腳輸入一個(gè)負(fù)跳變的時(shí)候,將引起T2的捕獲或重裝,并置位EXF2,申請中斷。

TR2:T2的啟動(dòng)控制標(biāo)志;TR2=0:停止T2;TR2=1:啟動(dòng)T2

C/T2:T2的定時(shí)方式或計(jì)數(shù)方式選擇位。只能通過軟件的置位或清除;C/T2=0:選擇T2為定時(shí)器方式;C/T2=1:選擇T2為計(jì)數(shù)器方式,下降沿觸發(fā)。

CP/RT2:捕獲/重裝載標(biāo)志,只能通過軟件的置位或清除。

CP/RT2=0時(shí),選擇重裝載方式,這時(shí)若T2溢出(EXEN2=0時(shí))或者T2EX引腳(P1.0)出現(xiàn)負(fù)跳變(EXEN2=1時(shí)),將會(huì)引起T2重裝載;

CP/RT2=1時(shí),選擇捕獲方式,這時(shí)若T2EX引腳(P1.0)出現(xiàn)負(fù)跳變(EXEN2=1時(shí)),將會(huì)引起T2捕獲操作。

但是如果RCLK=1或TCLK=1時(shí),CP/RT2控制位不起作用的,被強(qiáng)制工作于定時(shí)器溢出自動(dòng)重裝載模式。

T2MOD(方式寄存器),字節(jié)地址0C9H:

T2OE

DCEN

T2OE:T2輸出允許位,當(dāng)T2OE=1的時(shí)候,允許時(shí)鐘輸出到P1.0。(僅對80C54/80C58有效)

DCEN:向下計(jì)數(shù)允許位。DCEN=1是允許T2向下計(jì)數(shù),否則向上計(jì)數(shù)。

T2的數(shù)據(jù)寄存器TH2、TL2和T0、T1的用法一樣,而捕獲寄存器RCAP2H、RCAP2L只是在捕獲方式下,產(chǎn)生捕獲操作時(shí)自動(dòng)保存TH2、TL2的值。

以上是T2的相關(guān)寄存器的描述,其實(shí)用法上跟T0、T1是差不多的,只是功能增強(qiáng)了,設(shè)置的東西多了而已。Keil的編程軟件用#include<reg52.h>里面沒有T2OM的要用sfrT2OMD=0XC9;自己聲明才可用。外部讀寫要包含一個(gè)“absacc.h”的頭文件才可;而在定義地址時(shí)要注意不要把P2口控制其它器件輸出的位的高低搞反了,最好是把P2口作為輸入口。外部的讀口是在P3.7口,外部寫的是P3.6口,都是低電平有效的,不能在P3口作為輸出的時(shí)候給這倆口低電平,否則會(huì)出錯(cuò)!三、8255擴(kuò)展鍵盤使用8255擴(kuò)展鍵盤時(shí)應(yīng)該知道8255的輸出能力,接4*4鍵盤時(shí)輸出高電平要比底電平強(qiáng),也就是說一個(gè)高電平和一個(gè)底電平接在一起時(shí),底的就會(huì)被拉高,跟單片機(jī)的高會(huì)被拉底的不一樣,查鍵碼時(shí)要取反就OK的。知識擴(kuò)展A/D轉(zhuǎn)換器的主要參數(shù)分辨率。表示A/D轉(zhuǎn)換器對模擬輸入的分辯能力,由它確定能被A/D轉(zhuǎn)換器辨別的最小模擬量,通常用二進(jìn)制位來表示,如2位、10位、12位等。分辨率的位數(shù)越高,表示其分辨率越高。ADC0809是8位A/D轉(zhuǎn)換器。轉(zhuǎn)換時(shí)間。A/D轉(zhuǎn)換器完成一次A/D轉(zhuǎn)換所需要的時(shí)間。雙積分A/D轉(zhuǎn)換時(shí)間一般為毫秒級,而逐次逼近式A/D轉(zhuǎn)換器的轉(zhuǎn)換時(shí)間一般為微秒級。ADC0809是典型的8位8通道逐次逼近式A/D轉(zhuǎn)換器,A/D轉(zhuǎn)換時(shí)間為100us左右。轉(zhuǎn)換誤差。實(shí)際A/D轉(zhuǎn)換結(jié)果與理想值之差。在點(diǎn)陣顯示漢字的子程序中運(yùn)用了二維數(shù)組來保存點(diǎn)陣漢字的數(shù)據(jù),這種方法的好處是不需要在程序中設(shè)定多個(gè)數(shù)組來分別調(diào)用(那樣做既費(fèi)時(shí)又費(fèi)力),利用二維數(shù)組可以通過改變行的起始地址,達(dá)到改變顯示漢字內(nèi)容的目的。32個(gè)關(guān)鍵字Auto 自動(dòng)變量,缺省時(shí)編譯器默認(rèn)為autoInt 整形變量Double 雙精度變量Long 長整形變量Char 字符型變量Float 浮點(diǎn)型變量Short 短整形變量Signed 有符號類型Unsigned 無符號類型Struct 結(jié)構(gòu)體變量Union 聯(lián)合數(shù)據(jù)類Enum 枚舉類型Static 靜態(tài)變量Switch 用于開關(guān)語句Case 開關(guān)語句分支Default 開關(guān)語句中的“其他”分支Break 跳出當(dāng)前循環(huán)Register 寄存器變量Const 只讀變量Volatile 變量在程序執(zhí)行中可被隱含地改變Typedef 用以給數(shù)據(jù)類型取別名Extern 變量是在其他文件正聲明Return 子程序返回語句Void 聲明空類型函數(shù)Continue 結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)Do 循環(huán)體While 循環(huán)條件If 條件語句Else 條件語句的否定分支For 一種循環(huán)語句Goto 無條件跳轉(zhuǎn)語句Sizeof 計(jì)算對象所占內(nèi)存空間大小串口通迅一、RS-232-CRS-232C標(biāo)準(zhǔn)(協(xié)議)的全稱是EIA-RS-232C標(biāo)準(zhǔn),其中EIA(ElectronicIndustryAssociation)代表美國電子工業(yè)協(xié)會(huì),RS(ecommededstandard)代表推薦標(biāo)準(zhǔn),232是標(biāo)識號,C代表RS232的最新一次修改(1969),在這之前,有RS232B、RS232A。。它規(guī)定連接電纜和機(jī)械、電氣特性、信號功能及傳送過程。常用物理標(biāo)準(zhǔn)還有有EIA�RS-232-C、EIA�RS-422-A、EIA�RS-423A、EIA�RS-485。這里只介紹EIA�RS-232-C(簡稱232,RS232)。例如,目前在IBMPC機(jī)上的COM1、COM2接口,就是RS-232C接口。波特率即數(shù)據(jù)傳送的速率,其定義是每秒鐘傳送的二進(jìn)制的位數(shù)。要實(shí)現(xiàn)單片機(jī)和計(jì)算機(jī)通迅,就必須使雙方的波特率一致。其中計(jì)算機(jī)串口的波特率常用的只有幾種,分別是:1200,2400,4800,9600,19200這樣的話,就需要單片機(jī)在其中選一個(gè),然后產(chǎn)生出相應(yīng)的頻率才能和計(jì)算機(jī)串口進(jìn)行通信。這個(gè)頻率的產(chǎn)生一般通過定時(shí)器T1產(chǎn)生。初始化步驟確定定時(shí)器1的工作方式——編程TMOD寄存器。計(jì)算定時(shí)器1的初值——裝載TH1/TL1。啟動(dòng)定時(shí)器1——編程TCON中的TR1位。④確定串行口的控制——編程SCON。⑤串行口在中斷方式工作時(shí),須開CPU和源中斷——編程IE寄存器。有限狀態(tài)機(jī)法“狀態(tài)機(jī)”的概念最早出現(xiàn)在電子技術(shù)和電子工程的數(shù)字邏輯電路設(shè)計(jì)中,“狀態(tài)機(jī)”的思想和分析方法被應(yīng)用于時(shí)序邏輯電路設(shè)計(jì)。由單片機(jī)組成的實(shí)時(shí)系統(tǒng),特別是實(shí)時(shí)控制系統(tǒng),其整個(gè)系統(tǒng)的分析機(jī)制和功能與系統(tǒng)的狀態(tài)有相當(dāng)大的關(guān)系。在一個(gè)思路清晰而且高效的單片機(jī)控制程序中,必然會(huì)出現(xiàn)“狀態(tài)機(jī)”的設(shè)計(jì)理念。下面將簡單介紹“有限狀態(tài)機(jī)”法在單片機(jī)控制程序在的應(yīng)用?!盃顟B(tài)機(jī)”的要素“狀態(tài)機(jī)”可歸納為4個(gè)要素,即現(xiàn)態(tài)、條件、動(dòng)作、次態(tài)。這樣的歸納主要是出于對狀態(tài)機(jī)內(nèi)在因果關(guān)系的考慮?!艾F(xiàn)態(tài)”和“條件”是因,“動(dòng)作”和“次態(tài)”是果,詳解如下:現(xiàn)態(tài):是指當(dāng)前所處的狀態(tài)。條件:又稱為“事件”。當(dāng)一個(gè)條件滿足,將會(huì)觸發(fā)一個(gè)動(dòng)作,或者執(zhí)行一次狀態(tài)的遷移。動(dòng)作:條件滿足后執(zhí)行的動(dòng)作。動(dòng)作執(zhí)行完畢后,可以遷移到新的狀態(tài),也可以仍舊保持原狀態(tài)。動(dòng)作不是必需的,當(dāng)條件滿足后,也可以不執(zhí)行任何動(dòng)作,直接遷移到新狀態(tài)。次態(tài):條件滿足后要遷往新狀態(tài)?!按螒B(tài)”是相對于“現(xiàn)態(tài)”而言的,“次態(tài)”一旦被激活,就轉(zhuǎn)變成新的“現(xiàn)態(tài)”了。通常主要有兩種方式來建立“狀態(tài)機(jī)”,一種是“狀態(tài)轉(zhuǎn)移圖”,另一種是“狀態(tài)轉(zhuǎn)移表”,分別用圖形方式和表格方式來建立狀態(tài)機(jī)。采用狀態(tài)轉(zhuǎn)移圖的設(shè)計(jì)實(shí)例圖23-3所示為一個(gè)簡單的按鍵狀態(tài)轉(zhuǎn)移圖,該圖中,將一次按鍵完整的操作過程分解為3個(gè)狀態(tài),采用時(shí)間序列周期為10ms。下面對圖23-3做進(jìn)一步的分析和說明。首先,讀者要充分體會(huì)時(shí)間序列的作用。在這個(gè)系統(tǒng)中,采用的時(shí)間序列周期為10ms,它意味著每隔10ms檢測一次按鍵的、輸入信號,并輸出一次按鍵額確認(rèn)信號,同時(shí)按鍵的狀態(tài)也發(fā)生一次轉(zhuǎn)換。圖中狀態(tài)0為按鍵的初始狀態(tài),當(dāng)按鍵輸入為“1”時(shí),表示按鍵處于開放,輸出“0”(1/0),下一狀態(tài)仍為狀態(tài)0;當(dāng)按鍵輸入為“0”時(shí),表示按鍵閉合,但輸出還是“0”(0/0)(沒有經(jīng)過消抖,不能確認(rèn)按鍵真正按下),下一狀態(tài)進(jìn)入狀態(tài)1。狀態(tài)1為按鍵閉合確認(rèn)狀態(tài),它表示在10ms前按鍵為閉合,因此當(dāng)要再次檢測到按鍵輸入為“0”時(shí),可以確認(rèn)按鍵被按下了(經(jīng)過10ms的消抖);輸出“1”表示確認(rèn)按鍵閉合(0/1),下一狀態(tài)進(jìn)入狀態(tài)2.而當(dāng)再次檢測到按鍵的輸入為“1”時(shí),表示按鍵可能處于抖動(dòng)干擾中;輸出為“0”(1/0),下一狀態(tài)回到狀態(tài)0。這樣,利用狀態(tài)1,實(shí)現(xiàn)了按鍵的消抖處理。狀態(tài)2為等待按鍵釋放狀態(tài),因此只有等待按鍵釋放后,一次完整的按鍵操作過程才算完成。從圖23-3的分析可知,再一次按鍵操作的整個(gè)過程,按鍵的狀態(tài)時(shí)從狀態(tài)0—狀態(tài)1—狀態(tài)2,最后返回到狀態(tài)0的,并且再整個(gè)過程中,按鍵的輸出信號僅在狀態(tài)1時(shí)給出了唯一的一次確認(rèn)按鍵閉合的信號“1”(其他狀態(tài)均輸出“0”)。因此上面狀態(tài)機(jī)所表示的按鍵系統(tǒng),不僅克服了按鍵抖動(dòng)大的問題,同時(shí)也確保再一次按鍵的整個(gè)過程中,系統(tǒng)只輸出一次按鍵閉合信號(“1”)。換句話講,不管按鍵被按下的時(shí)間保持多久,在這個(gè)按鍵的整個(gè)過程中都只給了一次確認(rèn)的輸出,因此在這個(gè)設(shè)計(jì)中,按鍵沒有“連發(fā)”功能,它是一個(gè)最簡單和基本的按鍵。單片機(jī)在和其它芯片一起工作時(shí)要在初始化前加點(diǎn)延時(shí)待電源穩(wěn)定,因?yàn)閱纹瑱C(jī)速度相比其它芯片要快,在電源還沒有穩(wěn)定狀態(tài)時(shí)初始化其它芯片,會(huì)使其不能正常工作。單片機(jī)系統(tǒng)是在單片機(jī)芯片的基礎(chǔ)上擴(kuò)展其它電路或芯片構(gòu)成的具有一定應(yīng)用功能的計(jì)算機(jī)系統(tǒng)。如數(shù)字頻率計(jì)等。單片機(jī)應(yīng)用系統(tǒng)中包括了滿足對象(如洗衣機(jī))要求的全部硬件電路和應(yīng)用軟件。構(gòu)成各種嵌入式應(yīng)用的電路系統(tǒng),統(tǒng)稱為單片機(jī)應(yīng)用系統(tǒng)。單片機(jī)通常是指芯片本身,集成的是一些基本組成部分。是典型的嵌入式系統(tǒng)的主要構(gòu)成單元,只能作為嵌入式應(yīng)用,即嵌入到對象環(huán)境、結(jié)構(gòu)、體系中作為其中的一個(gè)智能化控制單元。(1)系統(tǒng)總線: 地址總線(16位):P0(地址低8位)、P2口(地址高8位)數(shù)據(jù)總線(8位):P0口(地址/數(shù)據(jù)分時(shí)復(fù)用,借助ALE);控制總線(6根):P3口的第二功能和9、29、

溫馨提示

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

評論

0/150

提交評論