微機(jī)控制技術(shù)及應(yīng)用_第1頁(yè)
微機(jī)控制技術(shù)及應(yīng)用_第2頁(yè)
微機(jī)控制技術(shù)及應(yīng)用_第3頁(yè)
微機(jī)控制技術(shù)及應(yīng)用_第4頁(yè)
微機(jī)控制技術(shù)及應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩205頁(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ì)算機(jī)是由各種電子器件組成的能夠自動(dòng)、高速、精確地進(jìn)行邏輯控制和信息處理的現(xiàn)代化設(shè)備。1.1微型計(jì)算機(jī)系統(tǒng)的基本知識(shí)按其性能來(lái)分:巨型、中型、小型和微型計(jì)算機(jī)自1946年第一臺(tái)電子計(jì)算機(jī)出現(xiàn)至今,經(jīng)歷了電子管計(jì)算機(jī)、晶體管計(jì)算機(jī)、集成電路計(jì)算機(jī)、大規(guī)模/超大規(guī)模集成電路計(jì)算機(jī),并開始了以神經(jīng)網(wǎng)絡(luò)功能為基礎(chǔ)的第五代計(jì)算機(jī)的研究。每代都向體積小、重量輕、高性能的方向發(fā)展。

微型計(jì)算機(jī)(簡(jiǎn)稱微機(jī))是第四代計(jì)算機(jī)的典型,于70年代隨著大規(guī)模、超大規(guī)模集成電路的誕生而發(fā)展起來(lái)。性能價(jià)格比高,且小巧靈活,深受用戶歡迎并發(fā)展迅速。微機(jī)的核心部件是微處理器MPU(Microprocessor),也叫中央處理器或中央處理單元CPU(CentralProcessingUnit)。微型計(jì)算機(jī)的發(fā)展是與微處理器的發(fā)展同步,微處理器的集成度和性能幾乎每2、3年提高一倍,已經(jīng)推出了四代產(chǎn)品,并進(jìn)入第五代。各代的劃分通常是以其字長(zhǎng)、位數(shù)和功能,還有速度為主要依據(jù)。1.第一代(1971~1973)——4位和8位機(jī),4004,80082.第二代(1973~1978)——高檔8位機(jī)8080,Z80、MC68003.第三代(1978~1984)——16位機(jī):8086,8088、MC680004.第四代(1985~1991)——32位機(jī):80386、80486、MC680405.第五代(1992~1999)——32、64位機(jī):Pentium/PentiumPro/PentiumⅡ/PentiumⅢ/Pentium4/Itanium課程的基本要求:1.課程的性質(zhì):考試課,是專業(yè)基礎(chǔ)課2.課程的輔導(dǎo):輔導(dǎo)教師3.課程的要求:(1)課前要簡(jiǎn)單概括地預(yù)習(xí)。(2)課堂要注意聽課,把握重點(diǎn)和難點(diǎn)。必要時(shí)要做筆記。(3)課后要注意及時(shí)復(fù)習(xí),整理所學(xué)過(guò)的內(nèi)容。(4)認(rèn)真獨(dú)立地完成作業(yè)。做一些習(xí)題加以鞏固。工業(yè)控制計(jì)算機(jī)簡(jiǎn)介電子計(jì)算機(jī)是科技發(fā)展的產(chǎn)物計(jì)算機(jī)的飛速發(fā)展歸功于半導(dǎo)體集成技術(shù)的發(fā)展計(jì)算機(jī)的發(fā)展趨勢(shì)微型化巨型化網(wǎng)絡(luò)化智能模擬化單片機(jī)的概念微型機(jī)是由LSI、VLSI等組成的具有功能強(qiáng),結(jié)構(gòu)緊湊、系統(tǒng)可靠性高的特征,它由一片集成電路為主組成的中央處理器(CPU)、存儲(chǔ)器、通用或?qū)S肐/O接口電路等組成的。它分單片微機(jī)、單板微機(jī)和多板微機(jī)。單片機(jī)的概念將組成微型計(jì)算機(jī)的各功能部件:中央處理器、存儲(chǔ)器、I/O接口電路及定時(shí)/計(jì)數(shù)器等制作在一塊集成電路芯片中從而構(gòu)成完整的微型計(jì)算機(jī)。故稱作單晶片微型計(jì)算機(jī),簡(jiǎn)稱單片機(jī)(Singlechipmicrocomputer)?;蚍Q微控制器(MCU:Microcontroller)單片機(jī)的發(fā)展歷史初級(jí)階段(1974~1976)FAIRCHILD兩片集成芯片(集成工藝限制)低性能階段(1976~1978)INTERMCS-48高性能階段(1978~1982)MCS51更高性能階段(1983~多種機(jī)型并行發(fā)展單片機(jī)的應(yīng)用應(yīng)用特點(diǎn)體積小:基本功能部件滿足要求可靠性高:BUS大多在內(nèi)部;易采取電磁屏蔽功能強(qiáng):實(shí)時(shí)響應(yīng)速度;I/O直接操作使用方便:硬件設(shè)計(jì)簡(jiǎn)單;提供開發(fā)工具資料性能價(jià)格比高:電路板小;接插件少易產(chǎn)品化:研制周期短應(yīng)用:量大面廣機(jī)電一體化:電腦縫紉機(jī)智能儀表:測(cè)量?jī)x實(shí)時(shí)控制:汽車家電:(MOTOROLA)網(wǎng)絡(luò)通信:通信協(xié)議集成其中計(jì)算機(jī)外設(shè):鍵盤、打印機(jī)保健產(chǎn)品:按摩器提示單片機(jī)的出現(xiàn)使得電路設(shè)計(jì)簡(jiǎn)單化單片機(jī)的應(yīng)用典型單片機(jī)產(chǎn)品器件廠家美國(guó):IntelMotorola、Microchip、Atmel荷蘭:Philips德國(guó):Siemens日本:Nec典型單片機(jī)產(chǎn)品

?根據(jù)每種型號(hào)的存儲(chǔ)器的類型無(wú)ROM型:8031ROM型:8051EPROM:8751EEPROM型:8951單片機(jī)的發(fā)展趨勢(shì)性能不斷提高CPU功能增強(qiáng):速度、精度內(nèi)部資源增多:A/D、D/A、EEPROM多功能引腳:尋址范圍大高新技術(shù)下移,重點(diǎn)發(fā)展8位機(jī)性能單片機(jī)的發(fā)展趨勢(shì)單片機(jī)的多品種:超微型化:MC68HC705:20PIN,2KEPROM、112BYTERAM、15BITTIMERWATCHDOG低功耗,低電壓:CHMOSA工藝、空閑等待和掉電停機(jī)方式、電壓2.4~5.5V:?jiǎn)纹瑱C(jī)系統(tǒng)開發(fā)條件單片機(jī)芯片開發(fā)工具資料手冊(cè)第三節(jié)計(jì)算機(jī)中的數(shù)值和編碼

十進(jìn)制到二進(jìn)制的轉(zhuǎn)換整數(shù):除二余數(shù)法小數(shù):乘二取整法二進(jìn)制到十進(jìn)制的轉(zhuǎn)換直接按權(quán)展開二進(jìn)制到十六進(jìn)制的轉(zhuǎn)換十六進(jìn)制到二進(jìn)制的轉(zhuǎn)換第三節(jié)計(jì)算機(jī)中的數(shù)值和編碼定點(diǎn)數(shù)和浮點(diǎn)數(shù)原碼、反碼和補(bǔ)碼第四章MCS-51單片機(jī)的結(jié)構(gòu)和原理主要掌握基本組成(內(nèi)部資源)存儲(chǔ)器的配置I/O口的應(yīng)用功能工作方式時(shí)序及電路第一節(jié)MCS-51系列單片機(jī)的結(jié)構(gòu)以8051為代表講解基本組成內(nèi)部結(jié)構(gòu)特殊功能寄存器

一基本組成框圖二8051的內(nèi)部結(jié)構(gòu)算術(shù)邏輯部件ALU定時(shí)控制部件寄存器組見下頁(yè)常用寄存器(PC、ACC、B)

PC:程序地址寄存器,16位,執(zhí)行指令后自動(dòng)加一,常將PC值設(shè)置成程序第一條指令的內(nèi)存地址。訪問(wèn)范圍:0000~0FFFFHACC:累加器,8位,特殊用途的寄存器,專門存放操作數(shù)或運(yùn)算結(jié)果。MOVA,#03HADDA,#05HB:8位,專門為乘除法而設(shè)置的寄存器常用寄存器(PSW、SP、DPTR)PSW:程序狀態(tài)字,8位,存放指令執(zhí)行后的有關(guān)狀態(tài)。(見P79)SP:堆棧指針,8位,專門存放堆棧的棧頂位置。遵循“先進(jìn)后出”的原則。注意:禁止用傳送指令存放數(shù)據(jù)。DPTR:數(shù)據(jù)地址指針,16位,存放程序存儲(chǔ)器的地址和外部數(shù)據(jù)存儲(chǔ)器的地址??煞諨PH和DPL兩個(gè)獨(dú)立8位寄存器使用寄存器區(qū)的使用內(nèi)部RAM的00~1FH分為4個(gè)區(qū),每個(gè)區(qū)有8個(gè)單元,分別用R0~R7來(lái)表示。RS1:RS2=00時(shí):(R0)=20HRS1:RS2=01時(shí):(R0)=20HRS1:RS2=10時(shí):(R0)=20HRS1:RS2=11時(shí):(R0)=20H第二節(jié)存儲(chǔ)器配置5個(gè)存儲(chǔ)空間片內(nèi)/片外程序存儲(chǔ)器64K(0000~0FFFFH)P81128B的片內(nèi)數(shù)據(jù)存儲(chǔ)器(00~7FH)128B特殊功能寄存器SFR(80~0FFH離散分布)位尋址區(qū)(20H~2FH)片外數(shù)據(jù)存儲(chǔ)器64K(0000~0FFFFH)第三節(jié)輸入/輸出口(I/O口)四個(gè)雙向8位I/O口,共32根I/O口線,每個(gè)I/O線均由鎖存器,輸出電路和輸入緩沖器組成。每個(gè)I/O既可作輸入又可作輸出,每一條口線可獨(dú)立用作輸入又可用作輸出,作輸出時(shí)可鎖存數(shù)據(jù),作輸入時(shí)可緩沖數(shù)據(jù)。P0口輸出輸入讀--修改-寫操作P0作A/D總線P0口組成結(jié)構(gòu)P0口輸出時(shí)接上拉電阻可驅(qū)動(dòng)8個(gè)LSTTL負(fù)載作A/D總線時(shí),分時(shí)輸出A0~A7和D0~D7P1口組成結(jié)構(gòu)P2口組成結(jié)構(gòu)P3口組成結(jié)構(gòu)I/O口小結(jié):從應(yīng)用功能上P0:系統(tǒng)擴(kuò)展;一般I/O口(輸出時(shí),需接上拉電阻。)P1:專供用戶使用的I/O口P2:系統(tǒng)擴(kuò)展;通用I/O口P3:功能口,每位獨(dú)立定義;通用I/O口。I/O口小結(jié):負(fù)載能力P0驅(qū)動(dòng)8個(gè)LSTTL負(fù)載P1~P3驅(qū)動(dòng)3~4個(gè)LSTTL負(fù)載I/O口小結(jié):讀入方式每個(gè)I/O口均有兩種讀入方式(用命令區(qū)分)讀鎖存器讀引腳ANLA,#0FHMOVA,P1注意:讀引腳時(shí),需先向鎖存器寫“1”。系統(tǒng)復(fù)位時(shí),所有口鎖存器均置“1”。說(shuō)明雙向口:可使引腳懸浮作高阻輸入準(zhǔn)雙向口:其引腳具有內(nèi)部拉高電阻,其特點(diǎn):當(dāng)外部維持在低電平時(shí),準(zhǔn)雙向口輸入要能提供源電流,而外部低電平消失時(shí),又會(huì)自動(dòng)地使自己拉向高電平。第四節(jié)MCS51的引腳功能

各類單片機(jī)均兼容,只是功能略有差異。封裝:雙列直插(DIP)方形:PLCC扁平封裝:QFP第四節(jié)MCS51的引腳功能管腳功能P88邏輯符號(hào)圖片外三總線AB:P0口經(jīng)地址鎖存后提供低8位地址,P2口直接提供高8位地址DB:P0口提供8位數(shù)據(jù)CB:EA,ALE,PSEN,RD,WR,RST等時(shí)序電路及時(shí)序時(shí)鐘電路內(nèi)部方式P83外部方式時(shí)序:注意ALE的地址鎖存T機(jī)器=12T時(shí)鐘(6個(gè)狀態(tài)12拍)取指令執(zhí)行指令復(fù)位電路RST引腳保持兩個(gè)機(jī)器周期以上的高電平復(fù)位電路上電復(fù)位電路外部復(fù)位電路外部上電復(fù)位電路抗干擾復(fù)位電路單片機(jī)的工作方式復(fù)位工作方式正常工作方式單步工作方式編程工作方式省電工作方式思考題片內(nèi)RAM的容量?8051最大可配置的RAM/ROM容量?單片機(jī)主要有哪些組成部分?8051的PSEN、RD、WR的作用?ALE線的作用?當(dāng)8051不和RAM/ROM相連時(shí),ALE線的輸出頻率是多少?堆棧的作用?堆棧指示器SP有多少位?時(shí)鐘周期、機(jī)器周期和指令周期的含義?一個(gè)機(jī)器周期包含有多少個(gè)時(shí)鐘周期?第三章MCS-51單片機(jī)指令系統(tǒng)重點(diǎn)掌握尋址方式指令分類第一節(jié)概述機(jī)器語(yǔ)言匯編語(yǔ)言格式:標(biāo)號(hào)段:操作碼段,操作數(shù);注釋段指令系統(tǒng)常用符號(hào)含義:P95指令分類數(shù)據(jù)傳送類:28條算術(shù)運(yùn)算類:24條邏輯運(yùn)算類:25條控制轉(zhuǎn)移類:17條位操作類:17條第二節(jié)尋址方式七種尋址方式寄存器尋址直接尋址立即尋址寄存器間接尋址變址尋址相對(duì)尋址位尋址1立即尋址指令碼中直接含有所需地址的操作數(shù)MOVA,#30HMOVDPTR,#3000H注意:#是唯一區(qū)別與地址的標(biāo)志。2直接尋址指令碼中含有操作數(shù)的地址,機(jī)器根據(jù)地址找到操作數(shù)MOVA,30H注意:若直接尋址的地址是SFR中的某一個(gè)時(shí),可用名稱符號(hào)MOVA,TH0MOVA,8CH3寄存器尋址所需的操作數(shù)在某個(gè)工作寄存器中(R0~R7)INCR0注意:指令表中INCRn,n取0~74寄存器間接尋址指令碼中含有操作數(shù)地址的寄存器號(hào)。實(shí)際上是二次尋址間接尋址采用@Ri或@DPTR,@是區(qū)別寄存器尋址的標(biāo)記若(RO)=30H,(30H)=0FFHMOVA,R0MOVA,@R0寄存器尋址可使單片機(jī)尋址擴(kuò)大到64K5相對(duì)尋址指令碼中含有相對(duì)地址的偏移量MOVA,40HADDA,#30HSJMPSOUT;PC=PC+2+rel。;。。SOUT:MOV50H,A6變址尋址基地址寄存器和偏移量MOVCA,@A+PCMOVCA,@A+DPTR注意:變址尋址區(qū)是程序存儲(chǔ)器而不是數(shù)據(jù)存儲(chǔ)器。執(zhí)行前,應(yīng)預(yù)先在DPTR和A中存放地址,為指令執(zhí)行提供條件。7位尋址指令中含有位地址位地址和字節(jié)地址的區(qū)分通過(guò)指令區(qū)分:MOVA,20HMOVC,20H可供位尋址的區(qū)域片內(nèi)RAM的20H~2FH為位尋址空間(00~7FH)某些SFR:凡是地址能被8整除的SFR,共11個(gè)。位地址的表示方法MOVC,ACC.7MOV20H,CMOV24H.0,C第三節(jié)指令系統(tǒng)MCS-51匯編語(yǔ)言是用42種操作碼助記符描述33種操作功能,一種功能可能有幾種助記符,與尋址方式結(jié)合共產(chǎn)生111條指令。數(shù)據(jù)傳送類:28條算術(shù)運(yùn)算類:24條邏輯運(yùn)算類:25條控制轉(zhuǎn)移類:17條位操作類:17條1數(shù)據(jù)傳送類28條傳送數(shù)據(jù)可在ACC,R0~R7,內(nèi)部RAM,外部RAM間進(jìn)行,其中A,R0~R7的操作最多傳送類指令不影響PSW(除P位)已知(70H)=60H,(60H)=20HMOVR0,#70HMOVA,@R0MOVR1,AMOV40H,@R1MOV@R0,P1查表指令舉例1ORG8000HMOVA,#40HMOVCA,@A+PC;A=?…ORG8040HDB41H42H43H44H查表指令舉例2ORG8000H…MOVA,#03HMOVDPTR,#8040HMOVCA,@A+DPTR;A=?…ORG8040HDB41H42H43H44H數(shù)據(jù)傳送類指令小結(jié)內(nèi)部RAM的數(shù)據(jù)傳送方式ROM與ACC的數(shù)據(jù)傳送2算術(shù)操作類24條加、減、乘、除、增1、減1影響PSW中的CY、AC、OV、P不帶進(jìn)位加法4帶進(jìn)位加法4帶借位減法4加1指令5減1指令4十進(jìn)制調(diào)整指令1乘除法指令2加、減法指令(ADDADDCSUBBINCDEC)無(wú)符號(hào)數(shù)和有符號(hào)數(shù)由用戶自己決定均以ACC作為目的操作數(shù)帶符號(hào)數(shù)運(yùn)算時(shí),必須檢查溢出位OV若進(jìn)行不帶進(jìn)位的減法時(shí),用CLRC,將進(jìn)位位清零即可。DAA為十進(jìn)制調(diào)整指令,緊跟加法指令BCD碼減法

求BCD碼減數(shù)的補(bǔ)數(shù):9AH-減數(shù)被減數(shù)加補(bǔ)數(shù)結(jié)果用十進(jìn)制加法調(diào)整指令例:91-36=?CLRCMOVA,#9AHSUBBA,#36HADDA,91HDAA乘除法指令只能進(jìn)行無(wú)符號(hào)的乘除法雖影響0V,但意義不同MULAB;BA,OV=1表示B≠0DIVAB;A…B,0V=1,B=0,除法無(wú)意義舉例MOVA,#5AHADDA,#6BH0101101001101011(+---------------------11000101CY=AC=OV=3邏輯運(yùn)算類24條讀-修改-寫指令對(duì)數(shù)據(jù)進(jìn)行邏輯處理模擬各種硬件電路的邏輯功能邏輯與ANL邏輯或ORL邏輯異或XRL邏輯移位RRRRCRLRLC累加器清零與取反CLRCPL帶進(jìn)位移位和不帶進(jìn)位移位例M1和M1+1單元存有16位二進(jìn)制數(shù),試編程將其擴(kuò)大二倍程序CLRCMOVR1,#M1MOVA,@R1RLCAMOV@R1,AINCR1MOVA,@R1RLCAMOV@R1,A4控制轉(zhuǎn)移指令17條無(wú)條件轉(zhuǎn)移絕對(duì)轉(zhuǎn)移LJMP、AJMP短轉(zhuǎn)移SJMP間接轉(zhuǎn)移JMP@A+DPTR有條件轉(zhuǎn)移JZ、CJNE、DJNZ子程序調(diào)用與返回ACALL、LCALL、RET中斷返回RETI空操作NOP舉例

MOVR2,#0AHMOVR0,#40HCLRALOOP:ADDA,@R0INCR0DJNZR2,LOOPMOVSUM,A5位操作指令17條位傳送MOVBIT,BIT(錯(cuò)誤)位邏輯操作與ANL、或ORL、取反CPL位條件轉(zhuǎn)移JC、JNC、JB、JNB、JBC位置位,清零(SETB、CLR)舉例例1將內(nèi)部數(shù)據(jù)存儲(chǔ)器的60H、61H單元中的連續(xù)存放著4位BCD碼。試編寫一段程序?qū)⑦@4位BCD碼倒序排列程序MOVR0,#60HMOVR1,#61HMOVA,@R0SWAPAXCHA,@R1SWAPAMOV@R1,A例2已知外部RAM的3000H開始放一數(shù)據(jù)區(qū),緩沖區(qū)中以回車符0DH結(jié)束,編程將正數(shù)送入片內(nèi)RAM以30H開始的正數(shù)區(qū),將負(fù)數(shù)放入以40H開始的負(fù)數(shù)區(qū)程序法一MOVR0,#30HMOVR1,#40HMOVDPTR,#3000HNEXT:MOVXA,@DPTRMOV10H,ACJNEA,#0DH,END1SJMPOVEREND1:ANLA,#10000000BJZZHSJMPNEGZH:MOV@R0,10HINCR0INCDPTRSJMPNEXTNEG:MOV@R1,10HINCR1INCDPTRSJMPNEXTOVER:RET法二MOVR0,#30HMOVR1,#40HMOVDPTR,#3000HNEXT:MOVXA,@DPTRCJNEA,#0DH,COMPSJMPOVERCOMP:JBACC.7,LOOPMOVR0,#30HMOV@R0,AINCR0INCDPTRSJMPNEXTLOOP:MOV@R1,AINCR1INCDPTRSJMPNEXTOVER:RET第四章匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言的基本知識(shí)常用匯編程序設(shè)計(jì)方法匯編語(yǔ)言的基本知識(shí)

匯編語(yǔ)言的基本知識(shí)

匯編語(yǔ)言的格式LABLE:OPCODE,OPRAND;OMMENT匯編語(yǔ)言的構(gòu)成指令性語(yǔ)句指示性語(yǔ)句:偽指令程序設(shè)計(jì)流程偽指令ORG:ORG2000HENDEQU: AAAEQU20HMOVA,20H(MOVA,AAA)DATA(可前可后)DB、DWBIT:A1BIT00H(MOVC,A1)程序設(shè)計(jì)流程明確要求和要達(dá)到的目的確定解決問(wèn)題的計(jì)算方法和步驟畫出流程圖分配內(nèi)存地址按流程圖編寫程序上機(jī)匯編、調(diào)試、修改及最后確定源程序$2簡(jiǎn)單程序(順序結(jié)構(gòu))大量使用數(shù)據(jù)傳送類指令注意正確選擇指令以提高效率編程將20單元內(nèi)的兩個(gè)BCD熟變換成ACSII碼放在20H,21H單元內(nèi)(EX2.ASM)將20H單元內(nèi)兩個(gè)BCD碼變換成相應(yīng)的ASCII碼放在21H:22H中Org0hLjmp2000hORG2000HMOVR0,#22HMOV@R0,#00MOVA,20HXCHDA,@R0ORL22H,#30HSWAPAORLA,#30HMOV21H,ASJMP$END15BYTE,11TMOVA,20HMOVB,#10HDIVABORLB,#30HMOV22H,BORLA,#30HMOV21H,ASJMP$END;15BYTE14T求16位二進(jìn)制補(bǔ)碼的絕對(duì)值MOVA,20HCPLAADDA,#01H;INCAMOV20H,AMOVA,21HCPLAADDCA,#0ANLA,#7FHMOV21H,ASJMP$分支程序根據(jù)程序要求無(wú)條件或有條件改變程序執(zhí)行執(zhí)行的順序,選擇程序的流向.特點(diǎn):程序中含有轉(zhuǎn)移類指令關(guān)鍵:正確選用轉(zhuǎn)移指令正確運(yùn)用轉(zhuǎn)移指令無(wú)條件分支程序程序設(shè)計(jì)者事先設(shè)計(jì)好的LJMP、AJMP、SJMP有條件分支程序根據(jù)已經(jīng)執(zhí)行的程序?qū)?biāo)志位、ACC或內(nèi)部RAM的某些位的影響結(jié)果決定程序的流向JZ/JNZ、CJNE、DJNZ、位控制轉(zhuǎn)移類指令注意使用條件轉(zhuǎn)移指令形成分支前一定安排可供條件轉(zhuǎn)移指令進(jìn)行判別的條件。JCLOOP正確選定所用的轉(zhuǎn)移條件及轉(zhuǎn)移目標(biāo)地址$循環(huán)程序循環(huán)初始化循環(huán)次數(shù)計(jì)數(shù)器,工作寄存器設(shè)初值等循環(huán)體盡量簡(jiǎn)練;注意地址指針的修改循環(huán)控制檢查結(jié)束條件,及時(shí)退出循環(huán)注意循環(huán)嵌套允許外重循環(huán)嵌套內(nèi)重循環(huán)循環(huán)體不能交叉不能從循環(huán)程序外部跳入循環(huán)程序內(nèi)部例例:200名學(xué)生參加考試,成績(jī)放在8031的外部RAM的一個(gè)連續(xù)存儲(chǔ)單元,95~100分頒發(fā)A級(jí)證書,90~94分頒發(fā)B級(jí)證書,編一程序,統(tǒng)計(jì)獲A、B級(jí)證書的人數(shù)。將結(jié)果存入內(nèi)部RAM的兩個(gè)單元。注意地址指針的分配ORG0030HEG XDATA1000HGA DATA 20HGB DATA21HMOVGA,#00MOVGB,#00MOVDPTR,#EGMOVR2,#200LOOP:MOVXA,@DPTRCJNEA,#95,LOOP1

LOOP1:JNCNEXT1CJNEA,#90,LOOP2LOOP2:JCNEXTINCGBSJMPNEXTNEXT1:INCGANEXT:INCDPTRDJNZR2,LOOPSJMP$END數(shù)據(jù)排序

常用氣泡法(兩兩比較法)它先使E100和E99進(jìn)行比較,若E100>E99,則兩數(shù)交換,否則不動(dòng),然后E99和E98進(jìn)行比較,按同樣的原則,決定是否交換,一直比較下去,最后完成E2和E1的比較及交換。經(jīng)過(guò)N-1次比較后,E1位置必然得到數(shù)組中的最大值。猶如一個(gè)氣泡冒到水頂。如此下去,經(jīng)過(guò)N-1次便完成N個(gè)數(shù)據(jù)的排序。例:100個(gè)數(shù)據(jù),從小到大進(jìn)行排序

MOVR2,#100BUB:MOVR0,#20HCLRF0DECR2BL:CJNER2,#0,BBMOV7F,R2MOV20H,@R0MOVA,@R0INCR0MOV21H,@R0CJNEA,21H,LOPLOP:JCBMOV@R0,20HDECR0MOV@R0,21HINCR0SETBF0B:DJNZ7FH,BLJBF0,BUBBB:SJMP$$查表程序的設(shè)計(jì)

主要用于:復(fù)雜代碼轉(zhuǎn)換顯示數(shù)據(jù)補(bǔ)償:傳感器補(bǔ)償復(fù)雜函數(shù)計(jì)算:Y=SIN(X)查表指令在51中有兩條查表指令:MOVCA,@A+DPTR使用MOVCA,@A+PC須注意:1.

使用傳送指令將數(shù)據(jù)表格項(xiàng)數(shù)送入ACC2.

ADDA,#DATA指令對(duì)A進(jìn)行修改:PC+DATA=表格首地址3.

MOVCA,@A+PC完成查表.例1ADDA,#01H MOVCA,@A+PCRETDB00,01,04,09,10H,19H,24H,31H,30H,51H…例2設(shè)一巡回報(bào)警系統(tǒng),對(duì)16路輸入進(jìn)行控制,現(xiàn)根據(jù)測(cè)量路數(shù),找出每路的最大允許值.若大于允許值就報(bào)警.

TB3: MOVA,R2 ADDA,R2 MOVR3,A ADDA,#6 MOVCA,@A+PC XCHA,R3 ADDA,#3 MOVCA,@A+PC MOVR4,A RETTAB3:DW1520,3721,4256;表格最大長(zhǎng)度256 DW…散轉(zhuǎn)程序設(shè)計(jì)

JMP@A+DPTR

轉(zhuǎn)移指令表地址偏移量 采用”RET”指令進(jìn)行散轉(zhuǎn)

采用”RET”指令實(shí)行散轉(zhuǎn)

RET執(zhí)行后,堆棧的內(nèi)容彈出后并裝入PC中,利用這個(gè)特點(diǎn),將轉(zhuǎn)向地址表存入堆棧,然后執(zhí)行RET指令,即可轉(zhuǎn)向相應(yīng)的操作程序.例采用”RET”指令實(shí)行散轉(zhuǎn)

JP5:MOVDPTR,#TAB5 MOVA,R7 ADDA,R7 JNCNADD INCDPHNDD:MOVR3,AMOVCA,@A+DPTRXCHA,R3INCAMOVCA,@A+DPTRPUSHAMOVA,R3PUSHARETTAB3:DW:OPR0,OPR1,OPR2,…,OPRN

子程序的設(shè)計(jì)

子程序和運(yùn)算程序是程序設(shè)計(jì)的兩大支柱.1子程序的概念:完成確定任務(wù),并能為其他程序反復(fù)調(diào)用的程序段.要求子程序在結(jié)構(gòu)上具有通用性和獨(dú)立性.例如:代碼轉(zhuǎn)換,運(yùn)算程序等.子程序編寫注意的問(wèn)題

子程序調(diào)用:ACALLLCALL子程序返回:RET子程序嵌套注意的問(wèn)題:嵌套深度與堆棧區(qū)大小的問(wèn)題.子程序第一條必須有標(biāo)號(hào).

正確傳遞參數(shù):入口參數(shù)和出口參數(shù).

注意現(xiàn)場(chǎng)的保護(hù)和恢復(fù)子程序的參數(shù)傳遞

通過(guò)寄存器傳遞MAIN:MOVR0,#30H MOVR7,#0AH ACALLSUBR …SUBR:…通過(guò)堆棧傳遞參數(shù)主程序用PUSH將參數(shù)壓入堆棧,子程序按棧指針來(lái)間接訪問(wèn).例

HASC:MOVR0,SPDECR0DECR0XCHA,@R0ANLA,#0FHADDA,#2MOVCA,@A+PCXCHA,@R0RETDB‘01234565789’ DB‘ABCDEF’第五章中斷系統(tǒng)及定時(shí)器

中斷的概念在執(zhí)行程序的過(guò)程中,由于某種外界的原因,必須盡快終止當(dāng)前的程序執(zhí)行,而去執(zhí)行相應(yīng)的處理程序,待處理結(jié)束后,在回來(lái)繼續(xù)執(zhí)行被終止的程序。這個(gè)過(guò)程叫中斷。微機(jī)和外設(shè)數(shù)據(jù)傳送(通過(guò)不同的接口電路):同步傳送異步傳送中斷傳送DMA傳送中斷技術(shù)的優(yōu)點(diǎn):提高CPU的效率。提高實(shí)時(shí)數(shù)據(jù)的處理時(shí)效。故障處理中斷系統(tǒng)的功能:中斷優(yōu)先權(quán)排隊(duì)實(shí)現(xiàn)中斷嵌套自動(dòng)響應(yīng)中斷實(shí)現(xiàn)中斷返回。8051的中斷系統(tǒng)

5個(gè)中斷源,具有二個(gè)中斷優(yōu)先級(jí),可實(shí)現(xiàn)二級(jí)中斷服務(wù)程序的嵌套。每個(gè)中斷源均可軟件編程為高優(yōu)先級(jí)或低優(yōu)先級(jí)中斷,允許或禁止向CPU請(qǐng)求中斷。有關(guān)的特殊功能寄存器(SFR)有:中斷允許寄存器IE中斷優(yōu)先級(jí)控制寄存器IP中斷源寄存器(TCON、SCON中的有關(guān)位)注:均可位尋址。中斷系統(tǒng)結(jié)構(gòu)圖

中斷源

外部中斷源INT0、INT1:中斷標(biāo)志和觸發(fā)方式控制位鎖存在TCON的低四位。

IE0(IE1)=1表示正在向CPU申請(qǐng)中斷,響應(yīng)后自動(dòng)清零。

IT0(IT1)=0:低電平觸發(fā);IT0(IT1)=1:邊沿觸發(fā)注意:電平觸發(fā)時(shí),在中斷返回前應(yīng)撤除中斷源。中斷源內(nèi)部中斷源T0:TF0定時(shí)器T0的溢出中斷請(qǐng)求T1:TF1定時(shí)器T1的溢出中斷請(qǐng)求串行口中斷:發(fā)送中斷TI和接收中斷RI邏輯或后做為內(nèi)部的一個(gè)中斷源。注意:響應(yīng)中斷后,CPU并不清零中斷標(biāo)志位,必須軟件清零。(SCON的低兩位。

中斷控制

中斷使能控制IE(A8H)EA——ESET1EX1ET0EX0實(shí)現(xiàn)兩級(jí)控制注意:復(fù)位時(shí),禁止所有中斷中斷優(yōu)先級(jí)控制IP(B8H)———PSPT1PX1PT0PX0每一中斷源可編程為高優(yōu)先級(jí)或低優(yōu)先級(jí)中斷,以實(shí)現(xiàn)二級(jí)嵌套。默認(rèn)的優(yōu)先次序?yàn)椋篒NT0、C/T0、INT1、C/T1、串行口中斷(依次從高到低)中斷的響應(yīng)過(guò)程

每個(gè)機(jī)器周期都順序檢查每一個(gè)中斷源,若查詢到某個(gè)中斷標(biāo)志位為1如果不被下述條件所阻止,則將在下一個(gè)機(jī)器周期的狀態(tài)1響應(yīng)激活最高中斷請(qǐng)求。阻止條件:1)CPU正在處理相同或更高級(jí)的中斷請(qǐng)求;2)現(xiàn)在的機(jī)器周期不是執(zhí)行指令的最后一個(gè)機(jī)器周期(MOVR1,20H)3)正在執(zhí)行的指令是RETI或?qū)E、IP的寫操作指令。(執(zhí)行這些指令后,至少再執(zhí)行一條指令后才會(huì)響應(yīng)中斷)CPU響應(yīng)中斷時(shí)完成工作置位相應(yīng)的優(yōu)先級(jí)狀態(tài)觸發(fā)器執(zhí)行一條硬件子程序調(diào)用(內(nèi)部),使控制轉(zhuǎn)移到相應(yīng)的中斷入口地址;PC的內(nèi)容進(jìn)棧;(斷點(diǎn)地址)被響應(yīng)的中斷服務(wù)程序的入口地址送PC注意

各個(gè)中斷源的中斷入口地址均已由系統(tǒng)規(guī)定,不能改動(dòng)。

中斷源:INT0、C/T0、INT1、C/T1、串行口

入口地址:0003H、000BH、0013H、001BH、0023H

中斷系統(tǒng)初始化開相應(yīng)中斷源的中斷;(IE)設(shè)定中斷優(yōu)先級(jí);(IP)若為外部中斷,設(shè)定外部中斷的觸發(fā)方式。例中斷初始化例CLRIT1 SETBPX1 SETBEX1 SETBEA

ORLIP,#04HANLTCON,#0FBHMOVIE,#84H

中斷服務(wù)程序的一般格式

CLREA ;注意:子程序與中斷服務(wù)PUSHPSW ;程序的區(qū)別(參數(shù)傳遞)PUSHACC…SETBEA中斷服務(wù)程序CLREA…POPACCPOPPSWSETBEARETI例1外部中斷的應(yīng)用:8051單片機(jī)的P1口控制8個(gè)LED燈,要求8個(gè)燈加1移位點(diǎn)亮,當(dāng)中斷來(lái)時(shí),燈全滅或全亮,然后繼續(xù)加1移位點(diǎn)亮。

ORG0HAJMPSTORG0003HAJMPEXT0ORG0030HST:MOVSP,#70HMOVIE,#81HMOVIP,#01HMOVTCON,#00HRES:MOVR1,#08H MOVA,#0FFHLOOP:MOVP1,ADECAACALLDELAYACALLDELAYDJNZR1,LOOPSJMPRES 中斷服務(wù)程序EXT0:PUSHACCMOVA,#00 MOVP1,AACALLDELAYACALLDELAYCPLAMOVP1,AACALLDELAYACALLDELAYPOPARETI

例:實(shí)驗(yàn)三定時(shí)器實(shí)驗(yàn)org0sjmpstartorg000bhajmpct0org0030hstart: movsp,#70h movtmod,#01h movth0,#3ch movtl0,#0b0h movr1,#14h movr2,#0h movdptr,#tab setbet0 setbea setbtr0loop:cjner1,#0,loop1 movr1,#14h mova,r2 movca,@a+dptr movp1,a incr2loop1:cjneR2,#08h,loop

movr2,#0h sjmploopct0: decr1 movth0,#3ch movtl0,#0b0h retitab: db0feh,0fdh,0fbh,0f7h,0efh,0dfh,0bfh,7fh

定時(shí)器/計(jì)數(shù)器

兩個(gè)16位定時(shí)計(jì)數(shù)器相關(guān)的SFR:TMOD(工作方式)TCON(狀態(tài))。定時(shí)功能時(shí),每個(gè)機(jī)器周期定時(shí)器加1計(jì)數(shù)功能時(shí),在外部事件相應(yīng)輸入腳(T0和T1)產(chǎn)生負(fù)跳變,計(jì)數(shù)器加1。

定時(shí)器的控制字

定時(shí)器控制寄存器TCON(88H)TF1TR1TF0TR0IE1IT1IE0IT0C/T方式寄存器TMOD(89H)GATAC/TM1M0|GATAC/TM1M0注意:不能位尋址定時(shí)工作過(guò)程

定時(shí)器的工作方式:方式0:13位定時(shí)計(jì)數(shù)器注意:TL0的低5位和TH0共同組成方式1:16位定時(shí)計(jì)數(shù)器方式2:自動(dòng)重裝入的8位定時(shí)計(jì)數(shù)器溢出后(TF0=0)由TH0→TL0方式3:T0成為兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0作為定時(shí)計(jì)數(shù)器;TH0僅作定時(shí)器用TL0的控制用原T0的,TH0用原T1的控制位T1工作在方式0~2,溢出時(shí)送串行口,經(jīng)常作為串行口波特率發(fā)生器

定時(shí)器/計(jì)數(shù)器的初始化

1根據(jù)要求給方式寄存器TMOD送一個(gè)方式控制字,以設(shè)定定時(shí)器響應(yīng)的工作方式;2根據(jù)需要給C/T選送初值以確定需要的定時(shí)時(shí)間或計(jì)數(shù)的初值;3根據(jù)需要給中斷允許寄存器IE送中斷控制字,以開放相應(yīng)的中斷和設(shè)定中斷優(yōu)先級(jí);4給TCON送命令字以啟動(dòng)或禁止C/T的運(yùn)行。初值的計(jì)算

計(jì)數(shù)器初值:設(shè)計(jì)數(shù)模值為M,計(jì)數(shù)初值設(shè)定為TC,計(jì)數(shù)器計(jì)滿為零所需的計(jì)數(shù)值為C,則:TC=M-C(M=213,216,28)定時(shí)器初值:

T=(M-TC)T機(jī)器

幾種工作方式的最大定時(shí)時(shí)間若TC=0,定時(shí)時(shí)間為最大,設(shè)FOSC=12MHZ,幾種工作方式下的最大定時(shí)時(shí)間為:方式0:TMAX=8.192MS;方式1:TMAX=65.536MS;方式2、3:TMAX=0.256MS;

例:FOSC=12MHZ,試計(jì)算定時(shí)時(shí)間2MS所需的定時(shí)器的初值.

方式2、方式3TMAX=0.256MS,所以必須將工作方式設(shè)在方式0或方式1:方式0:TC=213-2MS/1US=6192=1830HTL0=10H,TH0=0C1H方式1:TC=216-2MS/1US=63536=0F830HTL0=30H,TH0=0F8H編程方式采用查詢方式:程序一直檢測(cè)TF0(TF1),若TF0=1(TF1=1),說(shuō)明定時(shí)時(shí)間到或計(jì)滿數(shù)采用中斷方式:程序初始化時(shí),設(shè)置定時(shí)器溢出中斷允許后,內(nèi)部硬件自動(dòng)檢測(cè)到TF0=1(TF1=1)時(shí),自動(dòng)響應(yīng)中斷,進(jìn)入中斷服務(wù)程序。應(yīng)用舉例例1選用T1方式0產(chǎn)生500US的定時(shí),在P1.1輸出周期為1MS的方波;FOSC=6MHZ

注意:T0不用時(shí)的處理,一般置0方式,禁止進(jìn)入方式3.初值計(jì)算:T=500US=(213-TC)*2US,TC=7942TC=7942D=8F06H主程序BEGIN:MOVTMOD,#0 MOVTL1,#06H MOVTH1,#0F8H SETBTR1LOOP:JBCTF1,PF0 SJMPLOOPPF0:MOVTL1,#06H MOVTH1,#0F8H CPLP1.1AJMPLOOP例2

從P3.4T0輸入低頻脈沖,要求該脈沖每發(fā)生一次跳變時(shí)由P1.0輸出一個(gè)500US的負(fù)脈沖,與此同時(shí)由P1.1輸出一個(gè)寬為1MS的正脈沖.

先設(shè)T0為計(jì)數(shù)方式,當(dāng)外部脈沖來(lái)一個(gè)負(fù)跳變時(shí),計(jì)數(shù)加1,并產(chǎn)生溢出,TF0=1;檢測(cè)到TF0=1時(shí),即可設(shè)定T1為定時(shí)方式;T0設(shè)為方式2;初值設(shè)為0FFH即加1即刻產(chǎn)生溢出.ORG0HSJMPBEGINORG000BHAJMPTT1ORG0030HBEGIN:MOVTMOD,#06H MOVTH0,#0FFH MOVTL0,#0FFHCLRP1.1Setbet0SetbeaSETBP1.0SETBTR0S1:SJMP$中斷服務(wù)程序ORG300HTT1:MOVTMOD,#20HMOVTH1,#0AH;06HMOVTL1,#0AH ;06HSETBP1.1CLRP1.0SETBTR1DEL2:JBCTF1,RP1SJMPDEL2RP1:SETBP1.0DEL3:JBCTF1,RP2SJMPDEL3RP2:CLRP1.1CLRTR1RETI例3:門控位的應(yīng)用

GATE位是控制外部輸入脈沖對(duì)定時(shí)計(jì)數(shù)器的控制,利用這個(gè)特性??蓽y(cè)量輸入脈沖的寬度。如:利用T0門控位測(cè)試INT0引腳上出現(xiàn)的正脈沖的寬度,并以周期數(shù)顯示。

ST:MOVTMOD,#09HMOVTL0,#00HMOVTH0,#00HWAIT1:JBP3.2,WAIT1SETBTR0WAIT2:JNBP3.2,WAIT2WAIT3:JBP3.2,WAIT3CLRTR0MOVA,TL0MOVR0,#DISBUFXCHDA,@R0INCR0SWAPAXCHDA,@R0INCR0MOVA,TH0XCHDA,@R0INCR0SWAPAXCHDA,@R0DIS:LCALLDISPAJMPDIS第十章

MCS—51串行通信接口技術(shù)微機(jī)聯(lián)網(wǎng):?jiǎn)纹瑱C(jī)與單片機(jī);單片機(jī)與其他微機(jī)之間實(shí)現(xiàn)信息共享;典型的計(jì)算機(jī)測(cè)量與控制系統(tǒng)構(gòu)成:一個(gè)典型集散式(DCS)控制系統(tǒng)的構(gòu)成

§10.1串行通信基礎(chǔ)

數(shù)據(jù)通信方式:并行通信與串行通信并行通信:一次傳輸8(16、32Bit)

8根數(shù)據(jù)線,1根控制線,

1根狀態(tài)線,地線,共11根;特點(diǎn):速度快,適合近距離傳輸計(jì)算機(jī)并口,打印機(jī),8255串行通信:數(shù)據(jù)一位一位地發(fā)送,一根發(fā)送線,一根接受線,地線,共3根 特點(diǎn):硬件方便,適合距離遠(yuǎn),速度要求不高的場(chǎng)合分類:同步串行通信和異步串行通信一、異步通信:

串行通信就是將并行的數(shù)據(jù)分開后,一位一位地發(fā)送出去,接收方也是一位一位地接收數(shù)據(jù),這就需要通信的雙方有一個(gè)協(xié)議,什么時(shí)候開始發(fā)送,什么時(shí)候發(fā)送完畢;接收方收到的信息是否正確等,而這些信息只能以電平的高低來(lái)表示,構(gòu)成這些位的數(shù)據(jù)稱為一幀。異步串行通信規(guī)定了傳輸數(shù)據(jù)的結(jié)構(gòu)即幀格式:起始位數(shù)據(jù)位奇偶校驗(yàn)位停止位1.起始位:在數(shù)據(jù)發(fā)送線上規(guī)定無(wú)數(shù)據(jù)時(shí)電平為1,當(dāng)要發(fā)送數(shù)據(jù)時(shí),首先發(fā)送一個(gè)低電平0,表示數(shù)據(jù)傳送的開始,這就是起始位。2.?dāng)?shù)據(jù)位:真正要傳送的數(shù)據(jù),可以是8位、10位等多位,數(shù)據(jù)位是由低位開始,高位結(jié)束;3.奇偶校驗(yàn):數(shù)據(jù)發(fā)送完后,發(fā)送奇偶校驗(yàn)位,以檢驗(yàn)數(shù)據(jù)傳送的正確性,這種校驗(yàn)方法是有限的,但是容易實(shí)現(xiàn)。

4.停止位:表示數(shù)據(jù)傳送的結(jié)束,可以是一位或兩位。

幀格式:

二、同步通信

同步通信先發(fā)送一個(gè)字符,作為同步字符,之后便連續(xù)發(fā)送數(shù)據(jù),數(shù)據(jù)之間不能有間隔,直到數(shù)據(jù)發(fā)送完畢。速度要比異步通信快通用異步接受/發(fā)送器(UNIVERSALASYNCHRONOUSRECEIVER/TRANSMITTER):UART:82506850

三、單工、半雙工、全雙工通信方式

1.

單工方式:一端是發(fā)送端,另外一端是接收端:

半雙工發(fā)式

每端口由一個(gè)發(fā)送器和接收器,通過(guò)開關(guān)連接在線路上,數(shù)據(jù)可以雙方交換,但不能同時(shí)發(fā)送和接收.

3.全雙工方式

通信雙方用兩個(gè)獨(dú)立的收發(fā)器單獨(dú)連接,可以同時(shí)發(fā)送和接收數(shù)據(jù),因而提高了速度。

4.波特率

單位時(shí)間內(nèi)傳送的信息量。以每秒傳送的位為單位:電傳機(jī):10字符/秒,1個(gè)字符11位,波特率為:10×11=110(波特)位寬:傳送過(guò)程中平均每位占用時(shí)間

Td=9.1ms(1/110)串行通信總線標(biāo)準(zhǔn)及接口

測(cè)控系統(tǒng)中,計(jì)算機(jī)通信主要采用異步串行通信方式,常用的異步串行通信接口標(biāo)準(zhǔn)有三種:●RS-232(RS-232ARS-232BRS-232C)●RS-449(RS422RS423RS485)●20mA電流環(huán)一、通信方式的選取

1.

1.

通信速率和通信距離這兩個(gè)方面是相互制約的,降低通信速率,可以提高通信距離

RS-232C:速率:20Kbit/S,最大通信距離:15mRS422:10Mbit/s,:300m90Kbit/s,:1200m1.

2.抗干擾能力采用標(biāo)準(zhǔn)的通信接口,本身具有一定的抗干擾能力,但是工業(yè)現(xiàn)場(chǎng)的情況往往很惡劣,因而要根據(jù)具體情況進(jìn)行選擇。

RS232C:一般場(chǎng)合

RS422:共模信號(hào)比較強(qiáng)光纖:電磁干擾較強(qiáng)二、RS232C簡(jiǎn)介

美國(guó)電子工業(yè)協(xié)會(huì)(EIA)公布的一種異步通信標(biāo)準(zhǔn):RS232C標(biāo)準(zhǔn):●設(shè)備之間通信的距離不大于15米●最大傳輸速率20KB/S●采用負(fù)邏輯:“1”——―5V∽―15V“0”——+5V∽+15V●不帶負(fù)載時(shí)輸出電平:―25V∽+25V●輸出短路電流:<0.5A●最大負(fù)載電容:2500pF

TTL電平可以由專用集成電路轉(zhuǎn)換成RS232C標(biāo)準(zhǔn);

如:MC1488或75188TTLRS232CMC1489或75189RS232CTTL由于MC1488需要采用±12V電源,一般在單片機(jī)通信中大量使用的是只需要+5V電源、具有發(fā)送和接收的一體化芯片,如:MAX232、ICL232、ADM202等。

MAX232芯片內(nèi)部有兩路接收器和發(fā)送器具有電源變換電路

MCS—51雙機(jī)通信(利用MAX232)

三、調(diào)制與解調(diào)

RS232C通信距離很短,RS422通信距離不過(guò)1200米;更長(zhǎng)距離需采用調(diào)制與解調(diào)。

MCS-51的串行口的結(jié)構(gòu)

8051有一個(gè)可編程的全雙工串行通信接口,它可作UART用,也可作同步移位寄存器,其幀格式可有8位、10位或ll位,并能設(shè)置各種波特率,給使用者帶來(lái)很大的靈活性。

一、結(jié)構(gòu)

805l通過(guò)引腳RXD(P3.0,串行數(shù)據(jù)接收端)和引腳TXD(P3.l,串行數(shù)據(jù)發(fā)送端)與外界進(jìn)行通信。圖中有兩個(gè)物理上獨(dú)立的接收、發(fā)送緩沖器SBUF,它們占用同一地址99H,可同時(shí)發(fā)送、接收數(shù)據(jù)。發(fā)送緩沖器只能寫入,不能讀出,接收緩沖器只能讀出、不能寫入。

串行發(fā)送與接收的速率與移位時(shí)鐘同步。8051用定時(shí)器T1作為串行通信的波特率發(fā)生器,T1溢出率經(jīng)2分頻(或不分頻)又經(jīng)16分頻作為串行發(fā)送或接收的移位脈沖。移位脈沖的速率即是波特率。接收器是雙緩沖結(jié)構(gòu),在前—個(gè)字節(jié)被從接收緩沖器SBUF讀出之前,第二個(gè)字節(jié)即開始被接收(串行輸入至移位寄存器),但是,在第二個(gè)字節(jié)接收完畢而前—個(gè)字節(jié)CPU未讀取時(shí)會(huì)丟失前一個(gè)字節(jié)。

串行口的發(fā)送和接收都是以特殊功能寄存器SBUF的名義進(jìn)行讀或?qū)懙?,?dāng)向SBUF發(fā)“寫”命令時(shí)(執(zhí)行MOVSBUF,A指令),即是向發(fā)送緩沖器SBUF裝載并開始由TXD引腳向外發(fā)送一幀數(shù)據(jù),發(fā)送完便使發(fā)送中斷標(biāo)志位TI=1。

在滿足串行口接收中斷標(biāo)志位RI〔SCON.0〕=0的條件下,置允許接收位REN(SCON.4)=1就會(huì)啟動(dòng)接收一幀數(shù)據(jù)進(jìn)入輸入移位寄存器,并裝載到接收SBUF中,同時(shí)使RI=l。當(dāng)發(fā)讀SBUF命令時(shí)(執(zhí)行MOVA,SBUF指令),即是由接收緩沖器(SBUF)取出信息通過(guò)8051內(nèi)部總線送CPU。

對(duì)于發(fā)送緩沖器,因?yàn)榘l(fā)送時(shí)CPU是主動(dòng)的,不會(huì)發(fā)生重迭錯(cuò)誤,所以不需要用雙緩沖結(jié)構(gòu)來(lái)保持最大傳送速率。

二、串行口控制字及控制寄存器

8051串行口是一個(gè)可編程接口,對(duì)它的編程只用兩個(gè)控制字分別寫入特殊功能寄存器:串行口控制寄存器SCON(98H)電源控制寄存器PCON(97H)

第七章微機(jī)控制系統(tǒng)應(yīng)用舉例

模/數(shù)(A/D)轉(zhuǎn)換電路的種類很多,例如,計(jì)數(shù)比較型、逐次逼近型、雙積分型等等。選擇A/D轉(zhuǎn)換器件主要是從速度、精度和價(jià)格上考慮。我們主要學(xué)習(xí)后二種典型A/D電路芯片與8051單片機(jī)的接口以及程序設(shè)計(jì)方法。逐次逼近法A/D轉(zhuǎn)換器,在精度、速度和價(jià)格上都適中,是最常用的A/D轉(zhuǎn)換器件。雙積分A/D變換器,具有精度高、抗干擾性好、價(jià)格低廉等優(yōu)點(diǎn),但轉(zhuǎn)換速度慢。近年來(lái)在微機(jī)應(yīng)用領(lǐng)域中也得到廣泛應(yīng)用。

一、逐次逼近型A/D轉(zhuǎn)換器原理

逐次逼近法A/D轉(zhuǎn)換器是一種速度較快、精度較高的A/D轉(zhuǎn)換器,它是通過(guò)最高位DN—1至最低位D0的逐次檢測(cè)來(lái)逼近被轉(zhuǎn)換的輸入電壓。

一個(gè)N位的逐次逼近法A/D轉(zhuǎn)換器的原理圖如下所示:

其轉(zhuǎn)換原理如下:

在啟動(dòng)信號(hào)控制下.置數(shù)控制邏輯電路置N位寄存器最高位DN-1為l,其余位清0,N位寄存器的內(nèi)容經(jīng)D/A轉(zhuǎn)換后得到整個(gè)量程—半的模擬電壓Vn,與輸入電壓Vx比較。若Vx>Vn時(shí),則保留DN-1=1,若Vx<Vn時(shí),則DN-1清0。然后,控制邏輯使寄存器下一位DN-2置1,與上次的結(jié)果一起經(jīng)D/A轉(zhuǎn)換后與Vx比較,重復(fù)上述過(guò)程,直至判別出D0取1還是0為止,此時(shí)DONE發(fā)出信號(hào)表示轉(zhuǎn)換結(jié)束。這樣,經(jīng)過(guò)N次比較后,N位寄存器的狀態(tài)就是轉(zhuǎn)換后的數(shù)字量,經(jīng)輸出緩沖器讀出。整個(gè)轉(zhuǎn)換過(guò)程就是這樣對(duì)分搜索比較逼近實(shí)現(xiàn)的,其轉(zhuǎn)換速度由時(shí)鐘頻率決定,一般在幾微秒到上百微秒之間。例如ADC0809,當(dāng)時(shí)鐘頻率為640kHz時(shí),轉(zhuǎn)換時(shí)間為64μs。

二、雙積分A/D轉(zhuǎn)換器原理

雙積分A/D轉(zhuǎn)換器是基于間接測(cè)量原理,將被測(cè)電壓值Vx轉(zhuǎn)換成時(shí)間常數(shù),由測(cè)量時(shí)間常數(shù)得到未知電壓值的,

其原理見下圖所示:所謂雙積分,就是進(jìn)行一次A/D轉(zhuǎn)換需要二次積分。①定時(shí)積分:控制門通過(guò)電子開關(guān)把被測(cè)電壓Vx加到積分器的輸入端,在固定時(shí)間T0內(nèi)對(duì)Vx積分,積分輸出終值與Vx成正比;②控制門將電子開關(guān)切換到極性與Vx相反的基準(zhǔn)電壓Vr上,進(jìn)行反相積分,由于基準(zhǔn)電壓Vr恒定,所以積分輸出將按T0期間積分的值以恒定的斜率下降(稱定值積分),由比較器檢測(cè)積分輸出過(guò)零時(shí),停止積分器工作。反相積分的時(shí)間Tx與定值積分的初值(即定時(shí)積分的終值)成比例關(guān)系,故可以通過(guò)測(cè)量反相積分時(shí)間Tx計(jì)算出Vx,即:

Vx=(Tx/T0)×Vr反相積分時(shí)間T1由計(jì)數(shù)器對(duì)時(shí)鐘脈沖計(jì)數(shù)得到。

下圖表示出了兩種不同輸入電壓(Vx>Vˊ)的積分情況:顯然Vˊ值小,在T0定時(shí)積分期間積分器輸出終值也就小,而下降斜率相同,故反相積分時(shí)間Tˊ也就小。

由于雙積分方法二次積分時(shí)間比較長(zhǎng)。所以A/D轉(zhuǎn)換速度慢,但精度可以做得比較高;對(duì)周期變化的干擾信號(hào)積分為零,抗干擾性能也比較好。

目前國(guó)內(nèi)外雙積分A/D轉(zhuǎn)換器集成電路芯片很多,大部分是應(yīng)用于數(shù)字測(cè)量?jī)x器上。適用單片機(jī)接口的有3位半雙積分A/D轉(zhuǎn)換器MC14433(精度相當(dāng)于1l位二進(jìn)制數(shù))和4位半雙積分A/D轉(zhuǎn)換器ICL7135(精度相當(dāng)于14位二進(jìn)制數(shù))。

三、A/D轉(zhuǎn)換器的主要技術(shù)指標(biāo)

1.分辨率(Resolution)

對(duì)于ADC來(lái)說(shuō),分辨率表示輸出數(shù)字量變化一個(gè)相鄰數(shù)碼所需輸入模擬電壓的變化量。

轉(zhuǎn)換器的分辨率定義為滿刻度電壓與2n之比值,其中n為ADC的位數(shù)。例如:具有12位分辨率的ADC能夠分辨出滿刻度的1/212或滿刻度的0.0245%一個(gè)10v滿刻度的12位ADC能夠分辨輸入電壓變化的最小值為2.4mv。

2.轉(zhuǎn)換速率(Conversion

Rate)

ADC的轉(zhuǎn)換速率就是能夠重復(fù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換的速度,即每秒轉(zhuǎn)換的次數(shù)。而完成一次A/D轉(zhuǎn)換所需的時(shí)間(包括穩(wěn)定時(shí)間)是轉(zhuǎn)換速率的倒數(shù)。

3.線性度(Linearity)

線性度有時(shí)又稱為非線性度(Non-Linearity),它是指轉(zhuǎn)換器實(shí)際的轉(zhuǎn)移函數(shù)與理想直線的最大偏移。理想直線可以通過(guò)理想的轉(zhuǎn)移函數(shù)的所有點(diǎn)來(lái)描述。ADC的線性度如圖所示,其典型值是土1/2LSB。

MCS-51單片機(jī)與A/D轉(zhuǎn)換器接口

一、ADC0809A/D轉(zhuǎn)換芯片ADC0809是CMOS工藝、采用逼近法的8位A/D轉(zhuǎn)換芯片,28引腳雙列直插式封裝,片內(nèi)除A/D轉(zhuǎn)換部分外還有多路模擬開關(guān)部分。

有8路模擬量輸入端,最多允許8路模擬量分時(shí)輸入,共用一個(gè)A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。

ADC0809的內(nèi)部結(jié)構(gòu)邏輯圖

引腳功能說(shuō)明

IN0—IN7:8路輸入通道的模擬輸入端。DB0一DB7:8位數(shù)字量輸出端。START:?jiǎn)?dòng)信號(hào)。加上正脈沖后,A/D轉(zhuǎn)換開始進(jìn)行。ALE:地址鎖存信號(hào),高電平時(shí)把三個(gè)地址信號(hào)送入地址鎖存器,并經(jīng)譯碼器得到地址輸出,以選擇相應(yīng)的模擬輸入通道。ADDA、ADDB、ADDC:地址線

EOC:轉(zhuǎn)換結(jié)束信號(hào),是芯片的輸出信號(hào)。轉(zhuǎn)換開始后,EOC信號(hào)變低;轉(zhuǎn)換結(jié)束時(shí)。EOC返回高電平。這個(gè)信號(hào)可以作為A/D轉(zhuǎn)換器的狀態(tài)信號(hào)來(lái)查詢。也可以直接用作中斷請(qǐng)求信號(hào)。OE:輸出允許控制端。CLK:時(shí)鐘信號(hào),最高允許值為640kHz。Vref(+)、Vref(-),:A/D轉(zhuǎn)換器的參考電壓。Vcc:電源電壓。由于是CMOS芯片,允許的電源范圍較寬,可從十5——

十15V。

8位模擬開關(guān)的地址輸入通道的關(guān)系

溫馨提示

  • 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)論