單片微型計算機課件 第7章(第三版)徐惠民_第1頁
單片微型計算機課件 第7章(第三版)徐惠民_第2頁
單片微型計算機課件 第7章(第三版)徐惠民_第3頁
單片微型計算機課件 第7章(第三版)徐惠民_第4頁
單片微型計算機課件 第7章(第三版)徐惠民_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第七章并行接口7.1內(nèi)部I/O口及其應用

51的I/O口一般作為如下用途:

P0口:低8位地址,數(shù)據(jù)

P1口:I/O口

P2口:高8位地址

P3口:第二功能通道位第二功能說明P3.0RTD串行口輸入P3.1TXD串行口輸出P3.2INT0外中斷0輸入P3.3INT1外中斷1輸入P3.4T0計數(shù)器0輸入P3.5T1計數(shù)器1輸入P3.6WR外部數(shù)據(jù)存儲器的寫選通信號P3.7RD外部數(shù)據(jù)存儲器的讀選通信號表3.4通道3的第二功能7.1.1I/O口直接用于輸入和輸出

1.輸出:MOVP0,AMOVP1,R1MOVP2,@R0鎖存器QQDCP讀鎖存器內(nèi)部總線寫入讀引腳P1.XVcc1101鎖存器QQDCP讀鎖存器內(nèi)部總線寫入讀引腳P1.XVcc1101001輸入引腳數(shù)據(jù):MOVP0,#0FFHMOVA,P0MOVR1,P0MOV@R0,P0

3.讀-修改-寫操作:先將端口數(shù)據(jù)讀出,再運算,然后再寫回端口

ORLP0,#0F0HANLP2,A鎖存器QQDCP讀鎖存器內(nèi)部總線寫入讀引腳P1.XVcc圖7.1例7.1附圖P1.0P1.1P1.3+P1.2+5V8031片外P1.31P1.3=1YP1.01P1.11讀P1.0P1.1運算輸出NP1.31P1.3=1YP1.01P1.11讀P1.0P1.1運算輸出NLOOP1: ORL P1, #08HLOOP2: MOV C, P1.3 JC LOOP2 ORL P1, #03H MOV E, P1.0 MOV F, P1.1 MOV C, E ANL C, F MOV D, C MOV C, E ORL C, F ANL C, /D MOV P1.2, C SJMP LOOP1圖7.88155內(nèi)部結構和引腳示意圖ABC定時器256×8靜態(tài)RAMPA0~PA7PB0~PB7PC0~PC5IO/MAD0~AD7CERDWRALERESETTINTOUT7.2.381551.8155引腳和方框圖7.2.381552.8155I/O口工作方式AB口的工作方式:輸入方式無條件傳送方式輸出方式選通(中斷)方式C口工作方式:BSTBPC5BBFPC4BINTR輸出方式PC3ASTBASTBPC2ABFABFPC1AINTRAINTR輸出方式輸入方式PC0ALT4ALT3ALT2ALT1口中斷口換緩沖器滿口選通輸入51外設8155INTRBFSTBRDSTBBFINTRRD數(shù)據(jù)寫入8155發(fā)中斷51響應數(shù)據(jù)寫入51,8155可以接受新數(shù)據(jù)輸出51外設8155INTRBFSTBWR外設數(shù)據(jù)處理完8155發(fā)中斷51響應數(shù)據(jù)寫入外設8155可以接受新數(shù)據(jù)STBBFINTRWR數(shù)據(jù)寫入8155外設接受數(shù)據(jù)7.2.381553.8155I/O口控制定時器高8位xxxxx101定時器低8位xxxxx100端口Cxxxxx011端口Bxxxxx010端口A

xxxxx001命令/狀態(tài)寄存器xxxxx000

端口名稱AD7AD6AD5AD4AD3AD2AD1AD08155端口地址分配表8155工作方式控制字

XXXXX000寫D0D1D2D3D4D5D6D70輸入1輸出A口方式B口方式0禁止1允許A口中斷B口中斷00:ALT101:ALT210:ALT311:ALT4C口方式00無操作01停止計數(shù)10計滿后停止11開始計數(shù)定時器方式8155工作方式狀態(tài)字

XXXXX000讀D0D1D2D3D4D5D6XB口中斷請求B口緩沖器滿A口中斷請求A口緩沖器滿A口中斷允許B口中斷允許定時器中斷讀出后清04.8155和51的連接(僅作為地址分析用)圖7.118155和8031連接圖+RESETALERDWRRESETALERDWRIO/M81558031P0.7...P0.0AD7...AD0EACE688PC5~PC0PB7~PB0PA7~PA0100000定時器高8位

00000

101定時器低8位

00000

100端口C00000

011端口B

00000

010端口A00000

001命令/狀態(tài)寄存器

00000

000

端口名稱AD7AD6AD5AD4AD3AD2AD1AD08155端口地址分配表8155端口地址00H~07H8155內(nèi)部RAM地址08H~FFH4.8155和51的連接RESETALERDWRIO/M81558031P0.7...P0.0AD7...AD0EACE688PC5~PC0PB7~PB0PA7~PA0RESETALERDWRP2.7P2.601/0基本地址:0000H~00FFH

4000H~4007H圖8.98155內(nèi)部結構和引腳示意圖ABC定時器256×8靜態(tài)RAMPA0~PA7PB0~PB7PC0~PC5IO/MAD0~AD7CERDWRALERESETTINTOUT8.2.381555.8155內(nèi)部定時器的使用定時器高8位

XXXXX

101定時器低8位

XXXXX

100端口C

端口B

端口A

命令/狀態(tài)寄存器XXXXX

000端口名稱AD7AD6AD5AD4AD3AD2AD1AD014位減計數(shù)器用3個控制字8155工作方式控制字

XXXXX000寫D0D1D2D3D4D5D6D700無操作,不影響計數(shù)器操作01停止計數(shù),若原來停,則無操作10計滿后停止啟動。若原來停,則裝人長度后開始計數(shù);若原來動,則當前計數(shù)滿后,立即按新裝長度開始計數(shù);T0T1T2T3T4T5T6T7T8T9T10T11T12T13M1M200TIN單個方波01

連續(xù)方波10

單個脈沖11

連續(xù)脈沖T13~T0計數(shù)初值(4)開始計數(shù)終止計數(shù)00TIN單個方波01

連續(xù)方波10

單個脈沖11

連續(xù)脈沖T13~T0計數(shù)初值(3)終止計數(shù)開始計數(shù)計數(shù)范圍:0002~3FFFH21例5.16共陽LEDDPd.gfecbaVccDPgfedcba10110000B0HC0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,98H01234567897.351顯示/鍵盤系統(tǒng)

7.3.1共陰LED的控制與編程序DPd.gfecba3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H0123456789C0H,F9H,A4H,B0H,99H,92H,82H,F8H,

80H,98HDPgfedcba0100111104FH=B0H圖7.138155和LED顯示器的接口01001111PA7...PA0PC5...PC08155110111001000位碼10110000段碼(共陽)0902030508087AH7FH設置8155設置顯示緩沖器首地址設置起始位碼從C口送新位碼從A口送新段碼修改數(shù)據(jù)指針和位碼6LED都顯示一遍NRETY?找段碼?如何判斷DISP:MOVA,#05H;8155方式字

MOVDPTR,#8000H;8155命令口地址

MOVX@DPTR,A;寫入方式控制字

MOVR0,#7AH;送數(shù)據(jù)塊首地址

MOVR3,#01;位碼,最右一位先亮

MOVA,R3LD0:MOVDPTR,#8003H;8155C口地址

MOVX@DPTR,A;位碼從C口輸出

MOVDPTR,#8001H;8155A口地址

MOVA,@R0;待顯示數(shù)據(jù)送AADDA,#13;查表修正量

MOVGA,@A+PC;查表取段碼

MOVX@DPTR,A;A口輸出段碼

p.214程序

ACALLDL1;延時1msINCR0;修改數(shù)據(jù)指針

MOVA,R3JBACC.5,LD1;6位數(shù)都顯示則結束

RLA;沒顯示完,位碼左移

MOVR3,A;位碼暫存

AJMPLD0;轉(zhuǎn)回,顯示下一個數(shù)碼LD1:RETDTAB:DBC0H,F9H,A4H,B0H,99H

圖8.156×5非編碼鍵盤及其接口PC5PC4PC3PC2PC1PC0PB4...PB08155543210432100147F258E369DCBAF7BDE11011111101001000行坐標08H列信號1DH送行坐標讀列信號行坐標變成行號取列信號特征值合成鍵特征值3D轉(zhuǎn)換成鍵值A??8.3.3非編碼鍵盤和51接口關LED送行坐標,讀列信號全盤有鍵按下準備下行掃描RET掃描完成NY存行坐標和列信號NRETN全盤有2鍵按下Y延時20msY調(diào)用KCODEY存行坐標和列信號NN該行有鍵按下鍵盤掃描程序NEXT1NEXT2NEXT3NEXT4NEXT4LOOPSCAN:MOVA,#0FFHMOVDPTR,#8001H;A口地址

MOVX@DPTR,A;關顯示器

MOVA,#3FH;使行信號全為0MOVDPTR,#8003H;C口地址

MOVX@DPTR,A;C口輸出

MOVDPTR,#8002H;B口地址

MOVXA,@DPTR;讀列信號到B口

ANLA,#1FHCJNEA,#1FH,NEXT1;列信號不為全1,則轉(zhuǎn)移

SJMPNEXT4;無鍵按下,結束NEXT1:ACALLD20ms;調(diào)20ms延遲子程序,消抖動

CLRCMOVR1,#01H;準備行掃描

MOVR2,#00H;設竄鍵標志LOOP:INCDPTR;C口地址p.217程序

MOVA,R1MOVX@DPTR,A;檢測某一行是否按鍵

MOVDPTR,#8002H;B口地址

MOVXA,@DPTR;輸入列信號值

ANLA,#1FHCJNEA,#1FH,NEXT2;列信號不為全1,該行有鍵按下NEXT2:INCR2;R2加1表示查到一處按鍵

CJNER2,#01H,NEXT4;R2不等于1即表示竄鍵

MOVR4,A;存按鍵的列坐標

MOVA,R1MOVR3,A;存按鍵的行坐標NEXT3:MOVA,R1RLCA;準備掃描檢測下一行

MOVR1,A;暫存

CJNEA,#40H,LOOP;未到最后一行則循環(huán)

AJMPKCODE;轉(zhuǎn)至鍵碼子程序

RETCLRA;A=0表示這次掃描無效NEXT4:RET送行坐標讀列信號行坐標變成行號取列信號特征值合成鍵特征值3D轉(zhuǎn)換成鍵值AKCODE(R3)=行坐標(R4)=列信號行坐標右移次數(shù)變成行號,暫存R1高4位取列信號低4位和R1高4位合并成為鍵特征值放人A倒查表得到鍵值放人ARETKCODE:MOVR1,#0;行坐標初值為0MOVA,R3;SCAN中的行坐標碼送ACLRC;準備移位LOOP:RRCA;右移一位

JZNEXT1;為0則移位結束

INCR1;行坐標值加1SJMPLOOP;NEXT1:MOVA,R1;SWAPA;行坐標值移到高4位

MOVR1,A;行坐標值暫時存放R1MOVA,R4;SCAN中的列坐標碼送A ANLA,#0FH;取低4位

ORL A,R1;形成鍵特征值

MOVB,A;暫時存放Bp.218程序KCODE:MOVDPTR,#KTAB;準備倒查表

MOVR0,#0;倒查表次數(shù)計數(shù)器

CLRA;從0查起REPE:MOVCA,@A+DPTR;CJNEA,B,NEXT2;與鍵特征碼不等則轉(zhuǎn)移

SJMPRESU;相等則結束查表NEXT2:INCR0;計數(shù)值加1MOVA,R0;準備檢查下一個數(shù)

SJMPREPE;RESU:MOVA,R0;存放鍵順序值

RETKTAB:DB:0FH,1FH,17H,1BH,2FH,27H,2BHDB:3FH,37H,3BH,3DH,2DH,1DH DB:0DH,0BH,7.3.3顯示/鍵盤系統(tǒng)(硬件)80318155鍵盤顯示LED驅(qū)動器C口B口A口驅(qū)動器7.3.3顯示/鍵盤系統(tǒng)(軟件)8155初始化顯示一遍數(shù)據(jù)掃描鍵盤有鍵按下數(shù)字鍵處理是數(shù)字鍵命令鍵處理K1KmNNYY……START: MOV DPTR,#8000H MOV A, #05H MOVX @DPTR,A ACALLDISP ACALLSCAN JZ START ACALLKCODE CJNE A, #10H, CONTCONT: JC NUM MOV DPTR,#JTAB SUBB A, #10H RL A JMP @A+DPTRJTAB: AJMP K1 AJMP K2…………NUM:…………7.451內(nèi)部定時/計數(shù)器及其應用特點:(1)多種工作方式,用于計數(shù)和定時;(2)加計數(shù),模值可變;(3)全1變成全0后,可以發(fā)出中斷申請;(4)TX=THX+TLX7.4.1工作方式T0分為兩個8位計數(shù)器方式38位計數(shù),自動再裝入方式方式216位計數(shù)器方式113位計數(shù)器方式0功能工作方式7.4.1工作方式1.方式0:13位計數(shù)器THxTLx0074計數(shù)輸入TFx計數(shù)1000,裝入213-1000=1110,0000,1,1000

THx=E0HTLx=18H裝數(shù)、加計數(shù)、全1變?nèi)?、發(fā)中斷申請7.4.1工作方式2.方式1:16位計數(shù)器THxTLx0077計數(shù)輸入TFx計數(shù)1000,裝入216-1000=1111,1100,0001,1000

THx=FCHTLx=18H裝數(shù)、加計數(shù)、全1變?nèi)?、發(fā)中斷申請7.4.1工作方式3.方式2:8位計數(shù),自動再裝入方式計數(shù)200,裝入28-200=0011,1000THx=38HTLx=38HTHx和TLx裝數(shù)、TLx加計數(shù)、全1變?nèi)?、發(fā)中斷申請(THx)TLx

TLx重新計數(shù),THx內(nèi)容不變THxTLx0077計數(shù)輸入TFx7.4.1工作方式4.方式3:T0分為兩個8位計數(shù)器TH0TL00077計數(shù)輸入TF0內(nèi)部脈沖定時輸入TF1TH1TL10077內(nèi)部脈沖定時輸入TF1X7.4.2控制1.定時器方式控制寄存器TMOD(89H)00方式001方式110方式211方式3計數(shù)方式定時方式10與INTX有關1與INTX無關0M0M1GATEM0M1GATEC/TC/T控制T0控制T1圖7.17計數(shù)方式的控制邏輯(以T1為例)+中斷開放ET1TR1GATE1TNT1晶振÷12計數(shù)器TF1中斷T1C/T=0C/T=111011開始計數(shù)12.定時/計數(shù)器的啟動和中斷控制TR0TF0TR1TF1TCON8C8D8E8F88H1:開始計數(shù)T10:停止計數(shù)T01:溢出中斷T10:未溢出T0ET0EAIEA9AFA8HABET11:允許中斷T10:禁止中斷T0初始化(1)寫TMOD,確定工作方式;(不能位尋址)(2)確定計數(shù)初值,寫入TH1,TL1,TH0,TL0

(3)寫IE,開放定時器中斷;(4)寫TCON的TR1或者TR0,開啟定時器。M0M1GATEM0M1GATEC/TC/TTR0TF0TR1TF1TCON8C8D8E8F88HET0EAIEA9AFA8HABET1計數(shù)初值的計算:M:計數(shù)最大值,28,213,216X:初值計數(shù)方式:X=M-計數(shù)模值例如:計數(shù)模值1000,

X=216-1000=1111,1100,0001,1000

THx=FCHTLx=18H

X=213-1000=1110,0000,1,1000

THx=E0HTLx=18HX=28-1000<0???計數(shù)初值的計算:M:計數(shù)最大值,28,213,216X:初值定時方式:X=M–計數(shù)模值

=M–(定時值/計數(shù)周期T)例如:定時值1ms

(1)Fsc=12M,T=12*Tsc=1u

溫馨提示

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

評論

0/150

提交評論