单片机系统设计知识_第1页
单片机系统设计知识_第2页
单片机系统设计知识_第3页
单片机系统设计知识_第4页
单片机系统设计知识_第5页
已阅读5页,还剩173页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《單片機系統設計》

課程大綱(本講重點):單片機微型電腦概述MCS-51單片機的結構和原理MCS-51单片机的时钟和复位电路MSC-51单片机的指令系统MCS-51單片機的應用程式設計MCS-51單片機的系統擴展MCS-51單片機串列口的應用MCS-51單片機的中斷系統MCS-51單片機應用系統設計舉例單片機的開發及開發工具AT89系列FLASH單片機簡介MCS-96系列單片機簡介課程目標:掌握单片机控制系统的基本组成学习利用软件编写单片机程序第一章單片機微型電腦概述本章主要介紹單片機的發展,基本的結構和特點,單片機的應用模式和領域,單片機的供應狀態等。單片微型電腦就是將CPU、RAM、ROM、定時/計數器和多種介面都集成到一塊積體電路晶片上的微型電腦。因此,一塊晶片就構成了一台電腦。它已成為工業控制領域、智慧型儀器器儀錶、尖端武器、日常生活中最廣泛使用的電腦。

1.1單片機的發展概況綜上所述,我們可以把單片機的發展歷史劃分為四階段:第一階段(1976~1978年):低性能單片機的探索階段。以Intel公司的MCS-48為代表,採用了單片結構,即在一塊晶片內含有8位元CPU、定時/計數器、並行I/O口、RAM和ROM等。主要用於工業領域。第二階段(1978~1982年):高性能單片機階段,這一類單片機帶有串列I/O口,8位元資料線、16位元位址線可以定址的範圍達到64K位元組、控制匯流排、較豐富的指令系統等。這類單片機的應用範圍較廣,並在不斷的改進和發展。第三階段(1982~1990年):16位單片機階段。16位單片機除CPU為16位外,片內RAM和ROM容量進一步增大,即時處理能力更強,體現了微控制器的特徵。例如Intel公司的MCS-96主振頻率為12M,片內RAM為232位元組,ROM為8K位元組,中斷處理能力為8級,片內帶有10位A/D轉換器和高速輸入/輸出部件等。第四階段(1990年~):微控制器的全面發展階段,各公司的產品在儘量相容的同時,向高速、強運算能力、定址範圍大以及小型廉價方面發展。1.2單片機的結構特點

(1)片內的RAM採用寄存器結構形式,這樣可以提高存取的速度;(2)在記憶體結構上,嚴格的將程式記憶體ROM和資料記憶體RAM在空間上分開;(3)它的引出管腳一般都設計成多功能的;(4)增加了一個全雙工的串列介面,以擴充I/O口和外接同步輸入和輸出設備;(5)有21個特殊功能寄存器;(6)有豐富的指令系統,內部設置了可以位定址的位位址空間。1.3單片機的主要品種及系列

一、4位單片機二、8位單片機表格1.1MCS-51系列型號型号制造技术片内程序存储器片内数据存储器8051AHHMOSROM(4k)128字节8031AHAHMOS无128字节8751HHMOSEPROM(4K)128字节80C51CHMOSROM(4K)128字节80C31CHMOS无128字节8051HMOSROM(8K)256字节8031HMOS无256字节1.4單片機的應用

一、單片機在儀器儀錶中的應用二、單片機在機電一體化中的應用三、單片機在智慧介面和多機系統中的應用四、單片機在生活中的應用

第二章MCS-51單片機的結構和原理本章主要介紹MCS-51系列的8051的基本結構、工作原理、記憶體結構、P0、P1、P2、P3四個I/O口的基本工作原理和操作特點。單片機的各種工作方式、單片機的時序等。2.1MCS-51單片機的結構原理一、8051單片機的結構圖2.1MCS-51單片機的基本結構二、8051單片機的內部結構和工作原理

8051單片機的內部結構框圖如圖2?2所示,下面分別進行介紹:圖2.28051的內部結構框圖圖2.38051記憶體組織結構字节地址位地址

2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20HD7D6D5D4D3D2D1D07FH7EH7DH7CH7BH7AH79H78H77H76H75H74H73H72H71H70H6FH6EH6DH6CH6BH6AH69H68H67H66H65H64H63H62H61H60H5FH5EH5DH5CH5BH5AH59H58H57H56H55H54H53H52H51H50H4FH4EH4DH4CH4BH4AH49H48H47H46H45H44H43H42H41H40H3FH3EH3DH3CH3BH3AH39H38H37H36H35H34H33H32H31H30H2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H1FH1EH1DH1CH1BH1AH19H18H17H16H15H14H13H12H11H10H0FH0EH0DH0CH0BH0AH09H08H07H06H05H04H03H02H01H00H圖2.48051內部RAM位位址區符号单元地址名称位地址符号地址*ACCE0H累加器ACC.7~ACC.0E7H~E0H*BF0H乘法寄存器B.7~B.0F7H~F0H*PSWD0H程序状态字PSW.7~PSW.0D7H~D0H

SP81H堆栈指针

DPL82H数据存储器指针(低8位)

DPH83H数据存储器指针(高8位)

*IEA8H中断允许控制器IE.7~IE.0AFH~A8H*IPB8H中断优先控制器IP.7~IP.0BFH~B8H*P080H通道0P0.7~P0.087H~80H*P190H通道1P1.7~P1.097H~90H*P2A0H通道2P2.7~P2.0A7H~A0H*P3B0H通道3P3.7~P3.0B7H~B0H

PCON87H电源控制及波特率选择

*SCON98H串行口控制SCON.7~SCON.09FH~98H

SBUF99H串行数据缓冲器

*TCON88H定时控制TCON.7~TCON.08FH~88H

TMOD89H定时器方式选择

TL08AH定时器0低8位

TL18BH定时器1低8位

TH08CH定时器0高8位

TH18DH定时器1高8位

圖2.5P0口的位元結構(1)P0口位元的結構(2)P1口位元的結構圖2?6P1口的位元結構圖2?6P1口的位元結構圖2?6P1口的位元結構圖2?6P1口的位元結構圖2.6P1口的位元結構(3)P2口的位元結構圖2.7P2口的結構圖(4)P3口的位结构圖2.8P3口的結構圖(4)P3口的位元結構圖2.8P3口的結構圖表格2.3P3口的第二功能表I/O口第二功能注释P3.0RXD串行口数据接收端P3.1TXD串行口数据发送端P3.2INT(————)0外部中断请求0P3.3INT(————)1外部中断请求1P3.4T0定时/计数器0P3.5T1定时/计数器1P3.6WR(———)外部RAM写信号P3.7RD(———)外部RAM读信号?一、時鐘週期、機器週期和指令週期圖2.9基本定時時序關係2.2MCS-51單片機的時序1.時鐘週期圖2.10MCS-51的取指/執行時序2.機器週期3.指令週期二、MCS-51單片機指令的取指和執行的時序三、訪問外部ROM和RAM的時序圖2.11訪問外部ROM的時序1.访问外部ROM的时序

2.访问外部RAM的时序

图2.12访问外部RAM的时序2.3MCS-51单片机的时钟和复位电路

一、时钟电路

图2‑13MCS-51时钟接法1.内部振荡器方式

2.外部时钟方式

二、复位电路及复位状态

1.内部复位电路

图2‑148051复位电路结构

2.外部复位电路

图2‑15复位电路3.复位状态专用寄存器复位值PC0000HACC00HB00HPSW00HSP07HDPTR0000HP0~P3FFHIPXXX00000BIE0XX00000BTMOD00HTCON00HTH000HTL000HTH100HTL100HSCON00HSBUF不定PCON(CHMOS)0XXX0000B2.4MCS-51单片机的低功耗工作方式

一、电源控制寄存器PCON

PCOND7D6D5D4D3D2D1D0SMOD———GF1GF0FDIDL三、掉电方式

二、等待工作方式

第三章MSC-51单片机的指令系统3.1指令系统概述一、机器码指令与汇编语言指令机器码指令:

汇编语言指令:

二、指令格式汇编语言格式为:[标号:]操作码助记符[目的操作数,][源操作数][;注释]

单字节指令

双字节指令

三字节指令操作码24H操作数22HINCAADDA,#22HMOV5EH,4FH操作码04H操作码85H源操作数4FH目的操作数5EH

图3-1机器码指令格式

3.2寻址方式

一、寄存器寻址二、直接寻址三、立即寻址四、寄存器间接寻址五、变址寻址

六、相对寻址

七、位寻址

3.3MSC-51單片機的指令系統按照指令的功能,可以把MSC-51的111條指令分成五類:數據傳送指令29条

算數運算指令24条

邏輯操作指令24条

控制轉移指令17条

位操作指令17条l圖3-2相對定址過程第四章MCS-51單片機的應用程式設計圖4-1基本程式結構4.1運算程式一、多位元組數加法1.多位元組無符號數加法CLRCMOVR0,#40H;指向加數最低位MOVR1,#5OH;指向另一加數最低位MOVR2,#04H;位元組數作計數初值LOOP1:MOVA,@R0;取被加數ADDCA,@R1;兩數相加,帶進位MOV@R0,AINCR0;修改地址INCR1DJNZR2,LOOPl;未加完轉LOOP1JNCLOOP2;無進位轉LOOP2MOV@R0,#01HLOOP2:DECR0RET2.多位元組有符號數加法MOVA,R0;複製保存位址指針MOVR2,AMOVA,R3MOVR7,ACLRCLOOP1:MOVA,@R0ADDCA,@R1;相加MOV@R0,AINCR0INCR1;地址指針加1DJNZR7,LOOP1JBOV,ERR;若溢出,轉溢出處理DECR0MOVA,@R0JNBE7H,LOOP2SETB07H;和值為負,置位元標誌LOOP2:MOVA,R2;恢復地址指針MOVR0,ARET┇ERR:┇;溢出處理RETSDADD:CLR07H;標誌位元清零圖4-3多位元組有符號數加法程式流程圖二、多位元組數減法MOVR0,#40H;指向被減數最低位MOVR1,#5OH;指向減數最低位MOVR2,#04H;位元組數CLRCLOOP1:MOVA,@R0SUBBA,@R1;完成一個位元組的減法運算MOV@R0,AINCR0INCR1DJNZR2,LOOP1RET三、多位元組十進位數字(BCD碼)加法圖4-4BCD碼多位元組加法程式流程圖BCDADD:MOV20H,R0MOV23H,R3CLRCLOOP0:MOVA,@R0;取被加數ADDCA,@R1;兩數相加DAA;十進位調整MOV@R0,AINCR0;指針加1INCR1DJNZR3,LOOP0;作完加法否MOVR2.#23HJNCRETURN;有無進位MOV@R0,#01HINCR3RETURN:MOVR0,#20HRET四、多位元組數乘法ZHENFA:MOVA,R0MOVB,R1MULAB;(R1)*(R0)MOVR3,A;積的低位送到R3MOVR4,B;積的高位送到R4MOVA,R0MOVB,R2MULAB;(R2)*(R0)ADDA,R4;(R1)*(R0)的高位加(R2)*(R0)的低位MOVR4,A;結果送R4,進位在CY中MOVA,BADDCA,#OOH;(R2)*(R0)的高位加低位元來的進位MOVR5,A;結果送R5RET五、多位元組數除法DV:MOVR7,#08H;設計數初值DVl:CLRCMOVA,R5RLCAMOVR5,AMOVA,R6RLCA;將(R6)、(R5)左移一位MOV07H,C;將移出的一位送07H位保存CLRC圖4-5除法程式流程圖SUBBA,R2;餘數(高位)減除數JBO7H,GOU;若標誌位元為1,說明夠減JNCGOU;無借位也說明夠減ADDA,R2;否則,恢復餘數AJMPDV2GOU:INCR5;商上1DV2:MOVR6,A;保存餘數(高位)DJNZR7,DVlRET一、數據的拼拆4.2資料的拼拆和轉換例4-7設在30H和31H單元中各有一個8位元資料:(30H)=x7x6x5x4x3x2x1x0(3lH)=y7y6y5y4y3y2y1y0現在要從30H單元中取出低5位元,並從31H單元中取出低3位元完成拼裝,拼裝結果送40H單元保存,並且規定:(40H)=y2y1y0x4x3x2x1x0解:利用邏輯指令ANL、ORL來完成資料的拼拆,程式清單如下:MOV4OH,3OH;將x7~x0傳送到40H單元ANL4OH,#000111llB;將高3位遮罩掉MOVA,31H;將y7~y0傳送到累加器中SWAPA;將A的內容左移4次RLA;y2~y0移到高3位ANLA,#111000OOB;將低5位遮罩掉ORL4OH,A;完成拼裝任務二、資料的轉換1.ASCII碼與二進位數字的互相轉換例4-10編程實現十六進位數表示的ASC1I代碼轉換成4位二進位數字(1位十六進位數)。解:對於這種轉換,只要注意到下述關係便不難編寫出轉換程式:“字元0”~“字元9”的ASCII碼值為“30H”~“39H”,它們與30H之差恰好為“00H”~“09H”,結果均<0AH。“字元A”~“字元F”的ASCII碼值為“41H”~“46H”,它們各自減去37H後恰好為“0AH”~“0FH”,結果>0AH。根據這個關係可以編出轉換程式如下,程式以R1作為入口和出口。ASCHIN:MOVA,R1;取運算元CLRC;清進位元標誌位元CSUBBA,#30H;ASCII碼減去30H,實現0-9的轉換MOVR1,A;暫存結果SUBBA,#0AH;結果是否>9?JCLOOP;若≤9則轉換正確XCHA,R1SUBBA,#07H;若>9則減37HMOVR1,ALOOP:RET2.BCD碼與二進位數字的轉換圖4-6BCD碼(十進位)轉換成二進位數字程式流程圖程式清單如下:MAIN:MOVA,R5MOVR2,A;給副程式入口參數ACALLBCDBIN;調用副程式MOVB,#64HMULABMOVR6,AXCHA,BMOVR5,AMOVA,R4MOVR2,AACALLBCDBIN;調用副程式ADDA,R6MOVR4,AMOVA,R5ADDCA,#00HMOVR5,ARET副程式如下:BCDBIN:MOVA,R2ANLA,#0F0H;取高位BCD碼,遮罩低4位SWAPAMOVB,#0AHMULABMOVR3,AMOVA,R2ANLA,#0FHADDA,R3;加低位BCD碼MOVR2,ARET4.3查表程式使用MOVCA,@A+DPTR指令來查表,程式清單如下:MOVDPTR,#BS;副程式入口位址表首址RLA;鍵碼值乘以2MOVR2,A;暫存AMOVCA,@A+DPTR;取得入口地址低位PUSHA;進棧暫存INCAMOVCA,@A+DPTR;取得入口位址高位MOVDPH,APOPDPLCLRAJMP@A+DPTR;轉向鍵處理副程式BS:DBRK0L;處理副程式入口位址表DBRK0HDBRK1LDBRK1HDBRK2LDBRK2H┇┇4.4散轉程式一、採用轉移指令表的散轉程式例4-17編出要求根據R3的內容轉向各個操作程式的程式。即當(R3)=0,轉向OPRO(R3)=1,轉向OPRl…(R3)=n,轉向OPRn解:程式清單如下:MOVA,R3RLA;分支序號值乘2MOVDPTR,#BRTABL;轉移指令表首址JMP@A+DPTR;轉向形成的散轉位址BRTABL:AJMPOPR0;轉移指令表AJMPOPR1…AJMPOPRn二、採用位址偏移量表的散轉程式例4-19編出能按R6的內容轉向5個操作程式的程式。其對應關係如下:OPRD0:操作程式0OPRD1:操作程式1OPRD2:操作程式2OPRD3:操作程式3OPRD4:操作程式4解:程式清單如下:MOVA,R6MOVDPTR,#TAB3;指向位址偏移量表首址MOVCA,@A+DPTR;散轉點入口地址在A中JMP@A+DPTR;轉向相應的操作程式入口TAB3:DBOPRDO-TAB3;位址偏移量表DBOPRDl-TAB3DBOPRD2-TAB3DBOPRD3-TAB3DBOPRD4-TAB3三、採用轉向位址表的散轉程式例4-20編程:要求根據R6的內容轉向相應的操作程式中去。設備操作程式的轉向位址分別為OPRD0,OPRDl,…OPRDn。解:程式清單如下:MOVDPTR,#BRTABL;指向轉向地址表MOVA,R6ADDA,R6;(A)←(R6)*2JNCNAND;INCDPH;(R6)*2的進位加到DPHNAND:MOVR3,A;暫存變址值MOVCA,@A+DPTR;取轉向地址高8位XCHA,R3INCAMOVCA,@A+DPTR;取轉向地址低8位MOVDPL,A;轉向地址在DPTR中MOVDPH,R3CLRAJMP@A+DPTR;轉向相應的操作程式BRTABL:DWOPRDO;轉向地址表DWOPRD1┆DWOPRDn四、採用“RET”指令的散轉程式例4-21編出能根據R6的內容轉向各個操作程式的程式。設該操作程式的轉向位址分別為OPRD0,OPRDl,…OPRDn。解:程式清單如下:MOVDPTR,#TAB3;指向轉移地址表MOVA,R6ADDA,R6JNCNANDINCDPHNAND:MOVR7,AMOVCA,@A+DPTR;取轉向地址高8位XCHA,R7INCAMOVCA,@A+DPTR;取轉向地址低8位PUSHA;轉向地址入棧MOVA,R7PUSHARET;轉向操作程式TAB3:DWOPRD0;轉向地址表DWOPRDl┇DWOPRDn4.5I/O埠控制程式例4-22試編出能模擬圖4-9中電路的程式。ORG0200HDBIT00HEBIT01HGBIT02HLOOP1:ORLP1,#08H;準備P1.3輸入LOOP2:MOVC,P1.3;檢測K3狀態JCLOOP2;若未準備好(K3斷),則LOOP2ORLP1,#03H;若準備好,則準備輸入P1.0和P1.1狀態MOVC,P1.0;輸入K0狀態MOVD,C;送入DMOVC,P1.1;輸入K1狀態MOVE,C;送入EANLC,D;D∧E送CMOVG,C;送入GMOVC,EORLC,D;D∨E送CANLC,/G;(D∨E)∧(D∧E)MOVP1.2,C;輸出結果SJMPLOOP1;準備下次模擬END4.6副程式調用時的參數傳遞方法一、通過寄存器或片內RAM傳遞參數例4-23利用通過寄存器或片內RAM傳遞參數這種方法編出調用SUBRT副程式的主程序。解:應該是:MAIN:MOVR0,#30H;傳送RAM資料區的起始位址MOVR7,#0AH;傳送RAM資料區的長度ACALLSUBRT;調用清零副程式SJMP$;結束SUBRT:MOVA,#00H;清零副程式LOOP:MOV@R0,AINCR0DJNZR7,LOOPRET二、通過堆疊傳遞參數例4-25在HEX單元存有兩個十六進位數,試編程分別把它們轉換成ASCII碼存入ASC和ASC+1單元。解:本題副程式採用查表方法完成一個十六進位數的ASCII碼轉換,主程序完成入口參數的傳遞和副程式的兩次調用,以滿足題目要求。程式清單為:ORG1200HPUSHHEX;入口參數壓棧ACALLHASC;求低位十六進位數的ASCII碼POPASC;出口參數存入ASCMOVA,HEX;十六進位數送ASWAPA;高位十六進位數送低4位PUSHACC;入口參數壓棧ACALLHASC;求高位十六進位數的ASCII碼POPASC+1;出口參數送ASC+1SJMP$;原地踏步,結束HASC:DECSPDECSP;入口參數地址送SPPOPACC;入口參數送AANLA,#0FH;取出入口參數低4位ADDA,#07H;地址調整MOVCA,@A+PC;查相應ASCII碼PUSHACC;出口參數壓棧INCSPINCSP;SP指向中斷點地址高8位RET;返回主程序ASCTABL:DB‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’DB‘8’,‘9’,‘A’,‘B’,‘C’,‘D’,‘E’,‘F’END三、利用指針寄存器傳遞參數例4-26編出能實現列印THISISANEXAMPLE的程式。解:將要列印的字元及代碼不是放在調用指令之前,而是緊跟在調用指令之後。主程序:MAIN:…ACALLPRINT;調用打印子程式DB‘THISISANEXAMPLE';要列印的字元及代碼DBOAH,ODH,OOHNEXT:…副程式:PRINT:POPDPH;把調用指令下面位元組的位址彈出,作為資料指標POPDPLPPPl:MOVA,#OOHMOVCA,@A+DPTR;取出欲列印的字元INCDPTRJZPPPEND;判斷是否為結束字元PPP2:;列印程式SJMPPPPl;未完,繼續列印PPPEND:JMP@A+DPTR;指向主程序NEXT處,取代返回指令第五章定時/計數器5.1定時/計數的結構及工作原理一、定時/計數器的結構和原理1.定時/計數器的結構圖5-1TMOD、TCON與T0、T1的結構框圖2.定時/計數器的原理圖5-2定時/計數器的結構框圖二、定時/計數器方式寄存器TMOD表格5-1方式選擇位元意義M1M0工作方式功能说明00方式013位计数器01方式116位计数器10方式2自动再装入8位计数器11方式3定时器0:分成两个8位计数器定时器1:停止计数TMOD格式如下:計時器1計時器0

TMOD

D7D6D5D4D3D2D1D0GATEC/T(—)M1M0GATEC/T(—)M1M0三、定時控制寄存器TCON計時器控制字TCON的格式如下:

TCON8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1IT1IE0IT0?5.2定時/計數器的工作方式一、方式0當M1M0兩位為00時,定時/計數器被選為工作方式0,其邏輯結構如圖5?3所示。圖5-3T0(或T1)方式0結構二、方式1圖5-4T0(或T1)方式1結構三、方式2圖5-5T0(或T1)方式1結構三、方式2圖5-6T0(或T1)方式2結構四、方式3圖5-7T0方式3下和T1結構一、方式0、方式1的應用例5-1選擇T1方式0用於定時,在P1。1輸出週期為1ms的方波,晶振fosc=6MHZ。根據題意,只要使P1。1每隔500μs取反一次即可得到1ms方波,因而T1的定時時間為500μs。將T1設為定時方式0:GATE=0,C/T(—)=0,M1M0=00;T0不用可為任意,只要不使其進入方式3,一般取0即可。故TMOD=00H。系統重定後TMOD為0,所以不必對TMOD置初值。下面計算500μs定時T1的初值:機器週期T=12/fosc=12/6×106=2μs設初值為X則:(213-X)×2×10-6s=500×10-6sX=7942D=1111100000110B=1F06H因為在作13位計數器用時,TL1高3位未用,應寫0,X的低5位裝入TL1的低5位,所以TL1=06H;X的高8位應裝入TH1,所以TH1=F8H。根源程式如下:

MOVTL1,#06H;给TL1置初值

MOVTH1,#F8H;给TH1置初值

SETBTR1;启动T1LP1:JBCTF1,LP2;查询计数溢出否

AJMPLP1

LP2:MOVTL1,06H;重装初值

MOVTH1,F8H

CPLP1。1;输出取反

AJMPLP1;重复循环二、方式2的應用例5-2用計時器1方式2計數,要求每計滿100次,將P1。0取反。根據題意,外部計數信號由T1(P3.5)引腳輸入,每跳變一次計數器加1,由程式查詢TF1。方式2有自動重裝初值的功能,初始化後不必再置初值。初值X=28-100=156D=9CHTH1=TL1=9CHTMOD=60H根源程式如下:

MOVTMOD,#60H;设置T1为方式2

MOVTL1,#9CH;置初值

MOVTH1,#9CH

SETBTR1;启动T1DEL:JBCTF1,REP;查询计数溢出

AJMPDEL

REP:CPLP1。0;输出取反

AJMPDEL

三、門控位元的應用圖5-8外部正脈衝寬度測量例5-3利用T0門控位測試INT0引腳上出現的正脈衝的寬度,並以機器週期數的形式顯示在顯示器上。根據要求可這樣設計程式:將T0設定為方式1,GATE設為1,置TR0為1。一旦INT0(P3。2)引腳上出現高電平即開始計數,直至出現低電平,停止計數,然後讀取T0的計數值並顯示。測試過程如下:BEGIN:MOVTMOD,#O9H;T0工作于方式1,GATE置1

MOVTL0,#00H

MOVTH0;#00H

WAIT1:JBP3。2,WAIT1;等待INT0变低

SETBTR0;启动T0WAIT2:JNBP3。2,WAIT2;等待正脉冲到WAIT3:JBP3。2,WAIT3;等待INT0变低

CLRTR0;停止T0计数

MOVR0,#DISBUF;显示缓冲区首地址送R0

MOVA,TL0;机器周期的存放格式为低位占低地址,高位占高地址,连续4个显示缓冲单元

XCHDA,@R0

INCR0

SWAPA

XCHDA,@R0

INCR0

MOVA,TH0

XCHDA,@R0

INCR0

SWAPA

XCHDA,@R0

DIS:LCALLDISUP;长调用显示子程序

AJMPDIS;重复显示机器周期数由於定時方式1的16位元計數長度有限,被測脈衝高電平寬度只能小於65536個機器週期。根源程式如下:第六章MCS-51單片機的系統擴展6.1MCS-51單片機的引腳定義及最小應用系統一、8051的引腳定義及功能圖6-1MCS-51的引腳圖及功能分類圖二、MCS-51單片機最小應用系統圖6-28051/8751最小應用系統6.2MCS-51單片機外部記憶體的擴展一、外部程式記憶體的擴展及取指過程圖6-3外部程式記憶體一般連接方法1.程式記憶體的一般連接方式圖6-4擴展8K位元組程式記憶體的連線圖2.典型EPROM擴展電路3.程式記憶體E2PROM的擴展圖6-5E2PROM作為程式記憶體的擴展圖二、資料記憶體的擴展圖6--6擴展2KB資料記憶體的線路圖1.資料記憶體一般的擴展方法

綜合擴展實例圖6-7擴展16KBRAM和16KBEPROM6.3並行I/O口的擴展一、簡單I/O口的擴展圖6-8簡單I/O介面擴展電路二、可編程I/O口的擴展圖6-98155的結構和引腳表格6?18155口地址分佈AD0~AD7选中寄存器A7A6A5A4A3A2A1A0×××××000内部命令寄存器×××××001通用I/O口A寄存器×××××010通用I/O口B寄存器×××××011口C:通用I/O口或控制口×××××100定时/计数器的低8位寄存器×××××101定时/计数器的高8位寄存器3.8155與單片機的連接表格6?28155的RAM和I/O口地址分配P2.4P2.3选择地址00RAME700H~E7FFH(256B)01I/O口EF00H命令口/状态口EF01H通用I/O口AEF02H通用I/O口BEF03H口CEF04H计数值低8位EF05H计数值高8位和计数方式圖6-10擴展一片8155的基本方案4.8155片內RAM的使用(1)命令寄存器的用法表格6?3C口工作方式方式位ALTIALT2ALT3ALT4PC0输入方式输出方式AINTR(A口中断)AINTR(A口中断)PC1ABF(A口缓冲器满)ABF(A口缓冲器满)PC2ASTB(A口选通)ASTB(A口选通)PC3输出方式BINTR(B口中断)PC4BBF(B口缓冲器满)PC5BSTB(B口选通)备注A口B口为基本I/O口A口B口为基本I/O口A口为选通输入方式B口为基本I/O口A口、B口为选通输入/输出方式圖6-128155方式4的邏輯結構圖6.作定時/計數器用表6-48155計時器輸出方式M2M1方式定时器输出方波00单个方波01连续方波10在终止计数时输出单个脉冲11连续脉冲第七章MCS-51系統的串列介面7.1串列通訊概述一、串列通訊的兩種基本方式1.非同步傳送方式?

第n个字符(一串行帧)n+1n-1?…P10D0D1D2D3D4D5D6D7P10D0…

起始位数据位校验位停止位

圖7-2非同步通訊的幀格式开始

结束同步字符同步字符数据段CRC字符#1CRC字符#2圖7-3同步傳送方式二、串列傳輸速率圖7-4串列通訊的制式三、資料傳送的方向1.單工制式(Simplex)2.半雙工制式(HalfDuplex)3.全雙工(Full-duplex)制式7.2MCS-51單片機的串列介面一、MCS-51串列口結構圖7-5MCS-51串列口組成示意见表格7-1SM0位地址9F9E9D9C9B9A9998SCONSM1SM2RENTB8RB8TIRI接收中断标志发送中断标志接收数据第9位发送数据第9位接收控制0:禁止接收1:允许接收多机通信0:单机对单机1:多机通信圖7-6串列口控制寄存器SCON3.特殊功能寄存器PCONPCON主要是為CHMOS型單片機的電源控制設置的專用寄存器,單元位址為87H,不能位定址。其格式如圖7-7所示。SMOD———GF1GF0PDIDL通用标志位空闲控制位0:正常方式1:空闲方式掉电控制位0:正常方式1:掉电方式波特率选择位SMOD=1时,方式1、2和3的波特率加倍圖7-7PCON各位定義二、MCS-51串列的工作方式MCS-51的串列口有四種工作方式,它是由SCON中的SM1和SM0來決定的,如表格7-1表格7-1串列口的工作方式SM0SMl工作方式方式简单描述波特率000移位寄存器I/O主振频率/120118位UART可变1029位UART主振频率/32或主振频率/641139位UART可变1.方式0圖7-8串列口方式0的時序2.方式1在方式1時,串列口被設置為串列傳輸速率可變的8位元非同步通信介面。其時序如圖7-9所示。圖7-9串列口方式1的時序3.方式2串列口工作為方式2時,被定義為9位元非同步通信介面。其時序如圖7-10所示。4.方式3圖7-10串列口方式2、3的時序三、MCS-51串列通信的串列傳輸速率1.方式0的串列傳輸速率2.方式2的串列傳輸速率3.方式1或方式3的串列傳輸速率波特率(方式1、3)fosc=6Mfosc=12Mfosc=11.059MSMODT1方式初值SMODT1方式初值SMODT1方式初值62.5k

12FFH

19.2k

12FDH9.6k

02FDH4.8k

12F3H02FAH2.4k12F3H12F3H02F4H1.2k12E6H02E6H02E8H60012CCH02CCH02D0H30002CCH0298H02A0H137.5121DH021DH022EH1100272H01FEEBH01FEFFH表格7-2常用串列傳輸速率和計時器T1初值關係表7.3MCS-51單片機串列口的應用一、串列口方式0用作擴展並行I/O口圖7-11串列口方式0擴展並行輸出口

MOVSCON,#00H;串行口方式0初始化

MOVA,#80H;最左一位发光二极管先亮

CLRP1.0;关闭并行输出START1:MOVSBUF,A;开始串行输出LOOP:JNBTI,LOOP;查询TI

SETBP1.0;启动并行输出

ACALLDELAY;显示延时

CLRTI;清发送中断标志

RRA;准备右边一位显示

CLRP1.0;关闭并行输出

SJMPSTART1;再一次串行输出二、方式1與點對點的非同步通訊在下面給出的實現指定功能的通訊程式中,發送和接收都通過調用副程式來完成,並設發送資料區的首位址為20H,接收資料區的首位址為40H。主程序:

MOVTMOD,#20H;定时器1设为方式2

MOVTL,#0F3H;定时器初值

MOVTH1,#0F3H;8位重装值

SETBTR1;启动定时器1

MOVSCON,#50H;串行口设为方式1,REN=1

MOVR0,#20H;发送数据区首址

MOVR1,#40H;接收数据区首址

ACALLSOUT;输出一个字符$:SJMP$;等待中断中斷服務程式:

ORG0023H;串行口中断入口

AJMPSBRl;转至中断服务程序SBRl:JNBRI,SEND;TI=1,为发送中断

ACALLSIN;RI=1,为接收中断

SJMPNEXT;转至统一的出口SEND:ACALLSOUT;调用发送子程序NEXT:RETI;中断返回發送副程式:SOUT:MOVA,@Ro;取发送数据到A

MOVC,P;加上奇校验位

CPLC

MOVACC.7,C

INCR0;修改发送数据指针

MOVSBUF,A;发送ASCII码

CLRTI;清发送中断标志

RET

接收副程式:SIN:MOVA,SBUF;读出接收缓冲区内容

MOVC,P;取出校验位

CPLC;奇校验

ANLA,#7FH;删除校验位

MOV@R1,A;读入接收缓冲区

INCR1;修改接收数据指针

CLRRI;清接收中断标志

RET

三、方式2、方式3與多機通訊圖7-12多機通訊連接示意圖1.多機通信原理2.多機通信實現四、微機與單片機之間的通訊圖7-13微機與單片機串列通信介面7.4相互通道介面標準及其選擇一、相互通道的典型結構二、關於RS-232C、RS-449、RS-422、RS-423和RS-485介面圖7-14多機系統的相互通道2.抗干擾能力1.RS-232C介面圖7-15通過電話網實現遠端連接引脚号符号名称说明1PGND保护地为了安全和大地相连,有时可不接2TXD发送数据从DTE到DCE的数据线3RXD接收数据从DCE到DTE的数据线4RTS请求发送当DTE希望在数据线上传递数据时由DTE发出,DCE通过所得到的控制信号决定是否响应5CTS允许发送允许计算机发送数据时,则由DCE发出6DSR数字置位就绪当数据线已被接好后由DCE发出7SGND信号地作为信号地的公共回路8DCD数据载波检测当DCE已经从数据线上接收到信号时发出此信号20DTR数字终端就绪当DTE已准备好和调制解调器交换数据时,由DTE发出,使用公共通信网时才需要22RI振铃指示当正在进行通信时,由DCE发出,使用公共通信网时才需要表格7-3微機中常用的RS-232C介面信號圖7-16簡單的RS-232C資料通訊2.RS-449、RS-422、RS-423和RS-485介面特性参数RS-232CRS-423RS-422RS-485工作模式单端发单端收单端发双端收双端发双端收双端发双端收在传输线上允许的驱动器和接收器数目1个驱动器1个接收器1个驱动器10个接收器1个驱动器10个接收器32个驱动器32个接收器最大电缆长度15m1200m(1kb/s)1200m(90kb/s)1200m(100kb/s)最大速率20kb/s100kb/s(12m)10Mb/s(12m)10Mb/s(15m)驱动器输出(最大电压)±25V±6V±6V-7V~+12V驱动器输出(信号电平)±5V(带负载)±15V(未带负载)±3.6V(带负载)±6V(未带负载)±2V(带负载)±6V(未带负载)±1.5V(带负载)±5V(末带负载)驱动器负载阻抗3kΩ~7kΩ450Ω100Ω54Ω驱动器电源开路电流(高阻抗态)Vmax/300Ω(开路)±100μA(开路)±100μA(开路)±100μA(开路)接收器输入电压范围±15V±10V±12V-7V~+12V接收器输入灵敏度±3V±200mV±200mV±200mV接收器输入阻抗2kΩ~7kΩ4kΩmin4kΩmin12kΩmin?第八章MCS-51單片機的中斷系統圖8-18051的中斷系統8.1中斷系統及其管理一、中斷源及中斷入口?中断源入口地址外部中断00003H定时器T0中断000BH外部中断10013H定时器T1中断001BH串行口中断0023H二、外部中斷請求標誌2.SCON的中斷標誌1.TCON中的中斷標誌三、中斷允許控制四、中斷源優先順序的設定五、中斷回應處理過程2.中斷處理1.中斷回應的過程3.中斷返回4.外部中斷回應時間8.2擴充外部中斷源一、利用計時器進行擴充圖8-2多外部中斷源連接方法二、採用中斷和查詢相結合的方法擴充外部中斷源EXINT:PUSHPSWPUSHACCJBP10,SAV1JBP11,SAV2JBP12,SAV3JBP13,SAV4DISUB:POPACCPOPPSWRETISAV1:…;XI1中斷服務程式AJMPDISUBSAV2:…;XI2中斷服務程式AJMPDISUBSAV3:…;XI3中斷服務程式AJMPDISUBSAV4:…;XI1中斷服務程式AJMPDISUB8.3中斷系統的應用圖8-3外部中斷實驗第九章

單片機應用系統的設計方法及實例9.1顯示器、鍵盤與單片機的連接一、LED數碼管與單片機的連接圖9-1共陰極和共陽極數碼管1.靜態顯示圖9-2靜態顯示原理DISP: MOV R0,#50H ;R0指向第一個顯示單元MOV R2,#4 ;迴圈計數器賦初值MOV R3,#0 ;顯示位元指標賦初值LOOP: MOV A,@R0ANL A,#0FH ;取第i個顯示單元的低4位元SWAP AORL A,R3 ;第i個顯示單元的低4位元送R3的高4位MOV P1,A ;第i個顯示單元的低4位元送R3指出的數碼管去顯示MOV A,@R0ANL A,#0F0H ;取第i個顯示單元的高4位元INC R3 ;指向下一個數碼管ORL A,R3 ;第i個顯示單元的高4位元送R3指出的數碼管去顯示MOV P1,A ;將第i個顯示單元的高4位元送到相應的數碼管去顯示INC R0 ;指向下一個顯示單元INC R3 ;指向下一個LED數碼管DJNE R2,LOOP ;未顯示完4單元的8個BCD碼,返回繼續顯示RET圖9-3採用解碼器的靜態顯示介面電路圖9-5串列顯示介面DISP: SETB P1.0

;選通顯示器

MOV SCON,#00H ;置串口方式0MOV R0,#50H ;R0指向第一個顯示單元MOV R2,#4 ;迴圈計數器置初值MOV DPTR,#TAB ;DPTR指向第一個顯示單元LOOP: MOV A,@R0ANL A,#0FH ;取第i個顯示單元的低4位元MOVC A,@A+DPTR ;查解碼表MOC SBUF,A ;第i個顯示單元的低4位元的顯示碼送串口緩衝器WAIT1: JNB TI,$ ;未發送完,等待CLR TI ;清發送中斷標誌MOV A,@R0ANL A,#0F0H ;取第i個顯示單元的高4位元SWAP AMOVC A,@A+DPTR ;查解碼表MOC SBUF,A ;第i個顯示單元的高4位元的顯示碼送串口緩衝器WAIT2: JNB TI,$ ;未發送完,等待CLR TI ;清發送中斷標誌INC R0DJNZ R2,LOOP ;未發送完4個單元的8個字元,返回繼續RETTAB:DB

03H,9FH,25H,0DH,99H,DB 49H,41H,1FH,01H,19H3.動態掃描顯示介面圖9-6動態掃描顯示介面電路;-----------------主程序------------------STAR:

∶LOOP: ∶ACALL S00EF ;將顯示緩衝區內容送去顯示

SJMP LOOP;--------------送顯示副程式--------------DISP: CLR AORL A,P3 ;取P3口內容

ANL A,#0F0H MOV R3,A ;保護P3口高4位

MOV A,43H ;取位元選信號

ANL A,#0FH ;位元選信號送A的低4位

ORL A,R3 ;P3口高4位送A的高4位

MOV R0,34H ;取段選指針

MOV P1,#0FFH ;關顯

MOV P3,A ;輸出位元選信號

MOV A,@R0 ;顯示內容送A MOV DPTR,#TAB ;解碼表首址送DPTR MOVC A,@A+DPTR ;查表譯顯示碼

MOV P1,A ;輸出段選信號1 MOV A,43H ; RL A ; MOV 43H,A ;位選指標指向下一位

INC 34H ;段選指標指向下一位

JB ACC.0,DONE ;不到最後一位,轉

MOV 34H,#50H ;段選指針復位

MOV 43H,#0EEH ;位選指針復位DONE: RET;-----------------顯示解碼表---------------TAB: DB0C0H ;顯示字元0,相對位址00HDB0F9H ;1DB0A4H ;2DB0B0H ;3DB99H ;4DB92H ;5DB82H ;6DB0F8H ;7DB80H ;8DB90H ;9圖9-7按鍵與單片機直接連接圖9-8帶鎖存器的按鍵與單片機的介面電路圖9-9按鍵介面程式流程圖程式如下:KSCAN:

MOV DPTR,#7FFFH ;指向244 MOVX A,@DPTR ;讀244 ANL A,#0FH ;取4個按鍵的值 CJNE A,#0FH,LOOS ;無鍵按下,轉去判斷是否鍵放開 JB 11H,L0475 ;鍵有效標誌等於1,等待鍵放開,返回 JC 10H,SETSYN ;第一次發現鍵按下,轉去置標誌,存鍵值 CJNE A,R4,CLRSYN ;兩次讀得的按鍵值不同,鍵無效,清第一次發現鍵按下標誌 SETB 11H ;置鍵有效標誌

RETLOOS : JNB 11H,RETUR ;鍵有效標誌等於0,未按過鍵,返回

SJMP KEYDO ;鍵放開,轉鍵處理SETSYN: SETB 10H ;置第一次發現鍵按下標誌 MOV R4,A ;保存鍵值

SJMP RETUR ;返回CLRK: CLR 11H ;清鍵有效標誌CLRSYN:CLR 10H ;清第一次發現鍵按下標誌 MOV R4,#00H ;清鍵值暫存單元RETKEYDO: RRC A JC JUS2 ;沒按S1,再判斷S2 ALMP DOS1 ;轉鍵S1處理程式JUS2: JC JUS3 ;沒按S2,再判斷S3 ALMP DOS2 ;轉鍵S2處理程式JUS3: JC JUS4 ;沒按S3,再判斷S4 ALMP DOS3 ;轉鍵S3處理程式JUS4: JC RETUR ;沒按S4,誤判斷,退出

ALMP DOS4 ;轉鍵S4處理程式DOS1: …… ;鍵S1處理程式

……

SJMP RETURDOS2: …… ;鍵S2處理程式

……

SJMP RETURDOS3: …… ;鍵S3處理程式

……

SJMP RETURDOS4: …… ;鍵S4處理程式

……

SJMP RETUR三、鍵盤與單片機的介面圖9-10鍵盤與單片機的介面電路圖9-11鍵盤介面程式流程圖二、A/D轉換器與單片機的介面圖9-12ADC0801~ADC0805圖9-13ADC0801~0805與單片機的介面9.3D/A轉換器與單片機的連接一、D/A轉換器的基本原理圖9-14T型網路D/A轉換器二、D/A轉換器與單片機的介面1.內部結構圖9-15DAC0832的引腳排列圖9-16DAC0832結構圖3.介面電路(1)單緩衝器方式圖9-17DAC0832與單片機的介面(2)雙緩衝器方式圖9-18多路DAC0832同步轉換的介面電路程式如下:MOVDPTR,#0DFFFH;指向0832(1)MOVA,#data1MOVX@DPTR,A;data1送0832(1)鎖存器MOVX@DPTR,#0BFFFH;指向0832(2)MOVA,#data2MOVX@DPTR,A;data2送0832(2)鎖存器MOVDPTR,#7FFFH;指向0832(1)和0832(2)的資料傳送端MOVX@DPTR,A;data1和data2同時送D/A轉換器進行轉換9.4MCS-51單片機應用系統設計舉例一、系統構成及控制原理圖9-19糖果包裝機的結構圖圖9–20送紙輪的頂視圖圖9-21相位誤差與速度誤差圖9-22控制流程圖二、硬體電路1.主程序圖9-23硬體電路圖9-24主程序流程圖-------------初始化------------------

ORG0000H

AJMPADR00

ORG0003H CLREX0;關外部中斷0,以防止脈衝抖動造成中斷重複回應

AJMPINT0

ORG000BH

AJMPT0

ORG0013H

CLREX1;關外部中斷1

AJMPINT1

ORG001BH

AJMPT1

ORG0030HADR00:

MOVR0,#20H;20H~70H單元清0

MOVR1,#50H

CLRAADR10:

MOV@R0,A

INCR0

DJNZR1,ADR10

ACALLSUB1;清顯示器 MOVSP,#5FH;堆疊從60H開始

MOVSCON,#00H;串列口置為方式0 MOVA,43H ;相位滯後誤差送A ACALLSUB2 ;將A中絕對誤差轉為相對誤差放在R7中 MOVA,R7 CLRC SUBBA,#2 JNCADR20 ;相位滯後小於2%,返回 JBP1.0,ADR75 ;電磁離合齒輪有電,轉 MOVR5,43H ;保存本次測量的相位誤差 SETBP1.0 ;電磁離合齒輪通電,提速2%

AJMPADR20

;返回

ADR75: MOVA,R5 ;取回上次測量的相位誤差

CLRC SUBBA,43H ;減本次測量的相位誤差進行比較 JNCADR20 ;本次測量的相位誤差小,返回 SETBP1.1 ;否則,脹緊電機正轉,提速 MOVR2,#06H ;設置最小提速量 ACALLSUB3 ;延時0.6秒 CLRP1.1 ;停止脹緊電機正轉

AJMPADR20;-------------------相位超前誤差調整-------------------ADR80: MOVA,42H ;相位超前誤差送A ACALLSUB2 ;將A中絕對誤差轉為相對誤差放在R7中

MOV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论