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

下載本文檔

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

文檔簡介

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

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

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

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

*用于模式0:16位自動重載向上/下計時

*The16-bitsregisterconsistofall8bitsofTH2andall8bitsofTL2.

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

*TheEXF2bittoggleswhentimer2overfloworunderflowoccurs.

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

*EXF2doesnotgenerateinterrupt.Thisbitcanbeusedtoprovide17-bitresolution

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

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

*FUNCTION_OUTPUTS:void*/

sbitB02=P0^2;

sfrT2OMD=0XC9;

voidmain(void)

{

T2OMD=0xfc;

EXF2=0;/*resetflag定時器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定時模式*/

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

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

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

TR2=1;/*timer2run開始計時*/

while(1);/*endless*/

}

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

{

B02=~B02;/*P1.2togglewheninterrupt.中斷時取反*/

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

}

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

52的定時器T2寄存器說明

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

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

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

也可以是P1.0輸入的外部時鐘脈沖。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ù)器2溢出標(biāo)志,T2溢出時置位,并申請中斷。只能用軟件清除,但T2作為波特率發(fā)生器使用的時候,(即RCLK=1或TCLK=1),T2溢出時不對TF2置位。

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

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

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

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

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

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

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

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

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

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

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

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

T2OE

DCEN

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

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

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

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

評論

0/150

提交評論