單片機(jī)原理接口及應(yīng)用李群芳版習(xí)題解答參考_第1頁
單片機(jī)原理接口及應(yīng)用李群芳版習(xí)題解答參考_第2頁
單片機(jī)原理接口及應(yīng)用李群芳版習(xí)題解答參考_第3頁
單片機(jī)原理接口及應(yīng)用李群芳版習(xí)題解答參考_第4頁
單片機(jī)原理接口及應(yīng)用李群芳版習(xí)題解答參考_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單片機(jī)原理、接口及應(yīng)用——嵌入式系統(tǒng)技術(shù)基礎(chǔ)習(xí)題解答

預(yù)備篇

計(jì)算機(jī)的基礎(chǔ)知識40H,62H,50H,64H,7DH,FFH812,104,213,256,2936,941十進(jìn)制數(shù)原碼補(bǔ)碼十進(jìn)制數(shù)原碼補(bǔ)碼281CH1CH250FAHFAH-289CHE4H-347815BHFEA5H10064H64H92803A0H03A0H-1308082HFF7EH-92883A0HFC60H機(jī)器數(shù)真值分別為:27,233,-128,-8,14717,31467,-27824,-12478133H+5AH=8DH,OV=1,CY=0; 2-29H-5DH=7AH,OV=0,CY=1;365H-3EH=27H,OV=0,CY=1; 44CH-68H=E4H,OV=0,CY=0;十進(jìn)制數(shù)壓縮BCD數(shù)非壓縮BCD數(shù)ASCn碼 38 38H 0308H 3338H 255 255H020505H 323535H 483 483H040803H 343833H 764 764H070604H 373634H10001000H01000000H10251025H-01000205HASCn碼表示的十六進(jìn)制數(shù)分別為:105H,7CAH,2000H,8A50H基礎(chǔ)篇第1章、MCS-51單片機(jī)結(jié)構(gòu)單片微型計(jì)算機(jī)即單片機(jī)是包含CPU、存儲器和I/O接口的大規(guī)模集成芯片,即它本身包含了除外部設(shè)備以外構(gòu)成微機(jī)系統(tǒng)的各個(gè)部分,只需接外設(shè)即可構(gòu)成獨(dú)立的微機(jī)應(yīng)用系統(tǒng);微機(jī)處理器僅為CPU,CPU是構(gòu)不成獨(dú)立的微機(jī)系統(tǒng)的;參見教材節(jié)參見教材第6頁表格參見教材表參見教材表和表當(dāng)PSW=10H表明選中的為第二組通用寄器R0~R7的地址為10H~17H程序存儲器和數(shù)據(jù)存儲器盡管地址相同,但在數(shù)據(jù)操作時(shí),所使用的指令不同,選通信號也不同,因此不會發(fā)生錯(cuò)誤;內(nèi)部數(shù)據(jù)程序外部數(shù)據(jù)程序振蕩周期=μs機(jī)器周期=2μs指令周期=2~8μsA=0,PSW=0,SP=07,P0~P3=FFH第2章、51系列單片機(jī)的指令系統(tǒng)參見教材節(jié)因?yàn)锳累加器自帶零標(biāo)志,因此若判斷某內(nèi)部RAM單元的內(nèi)容是否為零,必須將其內(nèi)容送到A,JZ指令即可進(jìn)行判斷;當(dāng)A=O時(shí),兩條指令的地址雖然相同,但操作碼不同,MOVC是尋址程序存儲器,MOVX是尋址外部數(shù)據(jù)存儲器,送入A的是兩個(gè)不同存儲空間的內(nèi)容;目的操作數(shù) 源操作數(shù)寄存器 直接SP間接尋址 直接直接 直接直接寄存器間址寄存器寄存器間址Cy=1,OV=0,A=94H立即直接變址寄存器√√×√×××××

×××××√××××A=25H50H=0SP=61H×51H=25H 52H=70HSP=62HSP=61HSP=60HSP=24HSP=10HDPL=10HDPH=24H執(zhí)行結(jié)果將0送外部數(shù)據(jù)存儲器的2410單元程序運(yùn)行后內(nèi)部RAM20H=B4H,A=90H機(jī)器碼源程序7401LA:MOVA,01HF590LB:MOVP1,A23RLAB40AFACJNE,10,LB80F6SJMPLAANLA,0FHSWAPAANLP1,0FHORLP1,ASJMP$MOVA,R0XCHA,R1MOVR0,ASJMP$1利用乘法指令MOVB,04HMULABSJMP$2利用位移指令RLAMOVB,ARLAMOVA,20HMOV20H,AANLA,0FCHANLA,03HSJMP$3用加法指令完成ADDA,ACCMOVR1,A;R1=4AMOVR0,A;R0=2AMOVA,BMOVA,0ADDCA,B ;進(jìn)位×2ADDCA,0MOVB,A ;存積高位MOVB,A/存2人的進(jìn)位MOVA,R1 ;存積低位MOVA,R0SJMP$ADDA,ACCXRL40H,3CHSJMP$MOVA,20HADDA,21HDAAMOV22H,A;存和低字節(jié)MOVA,0ADDCA,0MOV23H,A;存進(jìn)位SJMP$MOVA,R0JZZEMOVR1,0FFHSJMP$ZE:MOVR1,0SJMP$MOVA,50HMOVB,51HMULABMOV53H,BMOV52H,ASJMP$MOVR7,0AHWOP:XRLP1,03HDJNZR7,WOPSJMP$2.19單片機(jī)的移位指令只對A,且只有循環(huán)移位指令,為了使本單元的最高位移進(jìn)下一單元的最低位,必須用大循環(huán)移位指令移位4次;ORG0MOVA,22HCLRCRLCAMOVA,20HMOV22H,ARLCAMOVA,0MOV20H,ARLCAMOVA,21HMOV23H,ARLCASJMP$MOV21H,A第3章、MSC-51單片機(jī)匯編語言程序設(shè)計(jì)3.1因?yàn)槭嵌鄠€(gè)單元操作,為方便修改地址使用間址操作;片外地址用DPTR指示,只能用MOVX指令取數(shù)到A,片內(nèi)地址用R0或R1指示,只能用MOV指令操作,因此循環(huán)操作外部數(shù)據(jù)存貯器→A→內(nèi)部部數(shù)據(jù)存貯器;ORG0000HMOVDPTR,1000HMOVR0,20HLOOP:MOVXA,DPTRMOVR0,AINCDPTRINCR0CJNER0,71H,LOOPSJMP$要注意兩高字節(jié)相加應(yīng)加低字節(jié)相加時(shí)產(chǎn)生的進(jìn)位,同時(shí)要考慮最高位的進(jìn)位;ORG 0 MOV 51H,AMOV A,R0 MOV A,0ADDA,R6 ADDCA,ACCMOV 50H,A MOV 52H,AMOV A,R7 SJMP $ADDCA,R1A中放小于14H20的數(shù),平方表的一個(gè)數(shù)據(jù)占2個(gè)字節(jié),可用BCD碼或二進(jìn)制數(shù)存放.如A中放的是BCD碼,則要先化成二進(jìn)制數(shù)再查表;ORG0 INC AMOVDPTR,TAB MOVC A,A+DPTRADDA,ACC ;A2 MOVR6,APUSHACC SJMP $MOVCA,A+DPTR TAB: DB 00,00,00,01,00,04,MOVR7,A 00,09,00,16H,……ΓUΓΛV√V√UD……… ,先用異或指令判兩數(shù)是否同號,在同號中判大小,異號中正數(shù)為大.ORG0 BG: MOV 22H,21HMOV A,20H SJMP $XRLA,21H CMP: MOV A,20HANL A,80H CJNE A,21H,GRJZCMP GR: JNC AGJB,BG MOV 22H,21HAG:MOV 22H,20H SJMP $SJMP$3.5fosc=6MHZ機(jī)器周期數(shù)DELAY:MOVR1,0F8H 1LOOP:MOVR3,0FAH1DJNZ R3,$ 2DJNZ R1,LOOP 2RET 21+1+20xFA+20xF8+212/6MHz= 1+1+2250+2248+22us將待轉(zhuǎn)換的數(shù)分離出高半字節(jié)并移到低4位加30H;再將待轉(zhuǎn)換的數(shù)分離出低半字節(jié)并30H,安排好源地址和轉(zhuǎn)換后數(shù)的地址指針,置好循環(huán)次數(shù);ORG0000HMOVA,R0MOVR7,05HANLA,0FHMOVR0,20HADDA,30HMOVR1,25HMOVR1,ANET:MOVA,R0INCR0ANLA,0F0HINCR1SWAPADJNZR7,NEADDA,30HSJMP$MOVR1,AENDINCR1片內(nèi)RAM間址寄存器只能有R0和R1兩個(gè),而正數(shù)、負(fù)數(shù)和零共需3個(gè)寄存器指示地址,這時(shí)可用堆棧指針指示第三個(gè)地址,POP和PUSH在指令可自動(dòng)修改地址;R0指正數(shù)存放地址和R1指負(fù)數(shù)存放地址,SP指源數(shù)據(jù)存放的末地址,POP指令取源數(shù)據(jù),每取一個(gè)數(shù)地址減1;ORG0000HMOVR7,10HMOVA,0MOVR0,AMOVR4,AINCR0MOVR5,AAJMPDJMOVR6,ANE:INCR5MOVR0,40HMOVR1,AMOVR1,50HINCR1MOVSP,3FHAJMPDJNEXT:POPACCZER0:INCR6JZZER0DJ:DJNZR7,NEXTJB,NESJMP$INCR4END可直接用P標(biāo)志判斷JBP,retORG0000HMOVA,40HJBP,EN;奇數(shù)個(gè)1轉(zhuǎn)移ORLA,80H;偶數(shù)個(gè)1最高位加“1”EN:SJMP$取補(bǔ)不同于求補(bǔ)碼,求補(bǔ)碼應(yīng)區(qū)別正、負(fù)數(shù)分別處理,而取補(bǔ)不分正、負(fù),因正、負(fù)數(shù)均有相對于模的補(bǔ)數(shù);用取反加1求補(bǔ)也可用模00H減該數(shù)的方法求補(bǔ);ORG0000HMOVR7,03HAB:INCR0MOVR0,DATAMOVA,R0MOVCPLA,R0ACPLAADDCA,0ADDA,01DJNZR7,ABMOVR0,ASJMP$3.1016個(gè)單字節(jié)累加應(yīng)用ADD指令而不能用ADDC指令,和的低位存A,當(dāng)和超過一個(gè)字節(jié),和的高字節(jié)存于B,并要加進(jìn)低位相加時(shí)產(chǎn)生的進(jìn)位,16個(gè)單字節(jié)加完后,采用右移4次進(jìn)行除十六求平均值的運(yùn)算,商在BUF2單元,余數(shù)在BUF2-1單元;ORG0000HMOVBUF2,AMOVR7,0FHMOVR0,BUF1NEX:MOVBUF2-1,0CLRCMOV B,0 MOV A,BMOV A,R0 RRC AMOV R2,A MOV B,ANEXT: MOV A,R2 MOV A,BUF2INC R0 RRC AADD A,R0 MOV BUF2,AMOV R2,A MOV A,BUF2-1MOV A,B RRC AADDC A,0 MOV BUF2-1,AMOV B,A DJNZ R6,NEXDJNZ R7,NEXT SJMP $;以上完成求和 ;以上完成除十六運(yùn)算MOVR6,04H將20H單元的內(nèi)容分解為高4位和低4位,根據(jù)是否大于9分別作加37H和30H處理;ORG0000HMOVA,20HANLA,0F0HASCIIMOV21H,ASJMP$:CJNEA,0AH,NESWAPANE:JCA30ACALLASCIIMOV22H,AMOVA,20HA30:ADDA,37HRETADDA,30HANLA,0FHACALLASCII要注意,位的邏輯運(yùn)算其中一個(gè)操作數(shù)必須在C;ORG0000HMOVC,20HANLC,2FHCPLCORLC,/2FHORG0000HRETCPLCANLC,53HMOV,CSJMP$ENDENDMOVC,ANLC,ANLC,/MOV20H,CMOVC,CPLCANLC,/ORLC,20HMOV,CSJMP$設(shè)一字節(jié)乘數(shù)存放在Rl,三字節(jié)的被乘數(shù)存放在data開始的內(nèi)部RAM單元,且低字節(jié)存放在低位地址單元,RO作為被乘數(shù)和積的地址指針,用MUL指令完成一字節(jié)乘一字節(jié),每一次部分積的低位加上一次部分積的高位,其和的進(jìn)位加在本次部分積的高位上,并暫存,三字節(jié)乘一字節(jié)共需這樣三次乘、力口、存操作,以R7作循環(huán)三次的計(jì)數(shù)寄存器;ORG0000HMOVR7,03HMOVA,0MOVR0,dataADDCA,BMOVR2,0MOVR2,ANEXT:MOVA,ROINCROMOVB,RlDJNZR7,NEXTMULABMOVR0,BADDA,R2SJMP$MOVR0,AEND第4章、并行接口PO-P3和單片機(jī)的中斷系統(tǒng)?參考教材節(jié)用監(jiān)測按鍵開關(guān),引腳輸出正脈沖,正脈沖的產(chǎn)生只需要將置零、置1、延時(shí)、再置零即可;接一示波器可觀察波形;如果再接一發(fā)光二極管,可觀察到發(fā)光二極管的閃爍;電路設(shè)計(jì)可參考圖匯編語言程序ORG0000HABC:CLRSETBJB,$ :未按鍵等待JNB,$ ;鍵未彈起等待SETBMOVR2,0DAY:NOPNOPDJNZR2,DAY圖SJMPABCKb電路見圖,初始值送OFH到Pl,再和OFFH異或從Pl口輸出,或使用SWAPA指令,然后從Pl口輸出,循環(huán)運(yùn)行,要注意輸出后要延時(shí);

匯編語言程序ORG0000HMOVA,OFHABC:MOVPl,AACALLD05SWAPASJMPABCD05: MOVR6,250DY: MOVR7,250DAY:NOP圖NOPDJNZR7,DAYDJNZR6,DYRETEND如使用共陰極數(shù)碼管,陰極接地,陽極a~g分別接PO?P3的某個(gè)口的7位,將。?F的段碼列成表,表的內(nèi)容順次從該口輸出;如數(shù)碼管接P3口;匯編語言程序ORG0000HMOVDPTR,TABAGAIN: MOV RO,0NEXT: MOV A,ROMOVCA,A+DPTRMOV P3,AMOV R7,0DAY:NOP電路設(shè)計(jì)見圖,編程如下:ORG0000HMOVA,08HMOVDPTR,TABMOVCA,A+DPTRMOVPl,AMOVR2,08HAGAIN:MOVA,01NEXT:MOVP3,ANOPDJNZR7,DAYINCROCJNERO,10H,NEXTSJMPAGAINTAB: DB3FH,06H??? ;段碼表略ENDγ+≡va?iACALLDAYRLACJNEA,10H,NEXTDJNZR2,AGAINSJMP$TAB:DB3FH,06H???END4.8Pl□的八根線接行線,輸出行掃描信號,P3口的八根線接列線,輸入回饋信號;見圖;?參見節(jié)電路設(shè)計(jì)見圖匯編語言程序ORGOOOOHAJMPMAINORG0003HRLA;中斷服務(wù)MOVPl,ARETIMAIN:MOVA,0FEHXTΛL1XlAl.2(iWPHOPSIIT.」I'3.3圖SXX31Fl-OPL1**PL6Fl.7PmL++P*.8F工"圖ZI????MOVPl5A;第一燈亮SETBEASETBEXOSETBITOSJMP$匯編語言中只有一個(gè)中斷源,不存在占用別的中斷源向量地址問題,程序順序排下,應(yīng)注意程序的執(zhí)行過程;C語言無循環(huán)移位指令移位后,后面補(bǔ)零,因此和01相或;略O(shè)RG0000HAJMP≡IN ≡IN:ORG0003H;中斷服務(wù)XRLPl,OFFHDJNZRO,NECLREANE:RETI因一亮一滅為一次,所以共十次;兩個(gè)數(shù)碼管陽極經(jīng)驅(qū)動(dòng)器接Pl口,陰極分別接、;aaEQU08H ;存儲高四位的段碼bbEQU09H ;存儲第四位的段碼iEQUOAH;存儲計(jì)數(shù)值Tab: DB3FH,06H……;段碼表略O(shè)RG0000HAJMP≡IN INTR:ORG0013HAJMPINTR≡IN: MOVDPTR,TabCLRAMOVCA,A+DPTRMOVaa,AMOVbb,A ;a=b=TabOCLRCLRSETBEASETBEXOSETBITO ;開中斷LOOP: SETBCLR Delay:MOVPl,bb ;顯示低位PLOZPL7EA≡089C?1圖ORG0030HSETBEASETBEXOSETBITOMOVPl,OFFMOVR0,OASJMP$;CLRSETBMOVPl,aaACALLDelSJMPLOOPCLREXOINCiMOVA,iANLA,OFHMOVDPTR,MOVCA,A+MOVbb,AMOVA,iANLA,0F0SWAPA;JMOVCA,A+MOVaa,ASETBEXORETI;略END>I|_ 1 Hi~□+5VL低位高位*L-o=?HH等待中ay;延日TabDPTR;查目H取i的十DPTR;查目斷;顯示高位寸;i加一;取i的低6役b=Tabi的,'方位役a=Tabi的ACALLDeIay;延時(shí)提示:將分別接至→三輸入或非門的三個(gè)輸入端,同時(shí)還分別接至單片機(jī)的三個(gè)IO口,或非門的輸出端接至單片機(jī)的外部中斷引腳;中斷服務(wù)程序中檢查三個(gè)IO口的值,便可知道具體的故障源;程序略;第五章、單片機(jī)的定時(shí)/計(jì)數(shù)器與串行接口、主介什Mr4-4-?請參考教材方式0:使用方式2查詢方式:方式1: 131ms方式計(jì)數(shù)初值C=100H-0AH=F6HORG0000H2: 512μsABC:JNBTF0,$MOVTMOD,06HMOVTH0,0F6HMOVTL0,0F6HSETBTR0中斷方式:ORG0000HAJMPMAINORG0000BHCPLRETIMAIN:MOVTMOD,06H1000HZ的周期為1ms,即要求每500μ變反一次,使用方式CLRTF0CPLSJMPABCMOVTH0,0F6HSETBEASETBET0SETBTR0SJMP$ ;等待中斷T1方式1,MC=12/fosc=1μs,C=216-500μs/1μs=FE0CH,除TMOD=10H,TH0=FEH,TL0=0CH外,程序與題相同,注意每次要重置TH0和TL0f=6MHzMC=2μs方式2的最大定時(shí)為512μs合乎題目的要求;50Ps時(shí),計(jì)數(shù)初值為C1=256-25=E7H,350μs時(shí)計(jì)數(shù)初值為匯編語言程序ORG0000HC2=256-175=51HSJMPAB1MOVTMOD,02HNEXT: MOVTH0,51HMOVTL0,51HEXT:SETBMOVTH0,0E7HMOVTL0,0E7HCLRSETBTR0AB1:JBCTF0,EXTAB2:JBCTF0,NEXTSJMPAB2上述的計(jì)數(shù)初值沒有考慮指令的執(zhí)行時(shí)間,因此誤差較大,查每條指令的機(jī)器周期,扣除這些時(shí)間,算得C=E3H,這樣誤差較??;輸出2ms脈沖,輸出50μs脈沖;匯編語言程序ORG0000HMOVTMOD,02HMOVTH0,06HMOVTL0,06HSETBTR0MOVR0,04HNE:JNBTF0,$CLRTF0CPLDJNZR0,NECPLAJMPNEORG0000HMAIN: MOVTMOD,15HLOOP:LCALLCounterLCALLTimerSJMPLOOPTimer:MOVTH1,0F9HCounter:MOVTH0,0FDHMOVTL1,30HMOVTL0,18HSETBTR1SETBTR0CLRTR0CLRTR1JBTF1,$JNBTF0,$CLRTF1CLRTF0RETRETEND略方式3為每楨11位數(shù)據(jù)格式360011/60=660波特T1的方式2模式不需要重裝時(shí)間常數(shù)計(jì)數(shù)初值,不影響CPU執(zhí)行通信程序.設(shè)波特率為fbaut計(jì)數(shù)初值為x,依據(jù)公式fbaut=2somd/32fosc/12256-x求得*=256-2$從。口/32工/%仇最低波特率為11定時(shí)最大值時(shí),此時(shí)計(jì)數(shù)初值為256,并且SOMD=0,fbaut=1/32f∕12256-0=61最高波特率為T1定時(shí)最小值1且SOMD=I時(shí)fbaut=2/32fosc/12256-1=31250取SMOD=I計(jì)算THI=TL1=B2發(fā)送ORG0000HNEXT:MOVSBUF,AMOVTMOD,20HTES:JBCT1,ADD1MOVTH1,0B2HSJMPTESMOVTL1,0B2HADD1:INCASETBTR1CJNEA,20H,NEXTMOVSCON,40HSJMP$MOVA,0END接收ORG0000HTEC:JBCRI,RECMOVTMOD,20HSJMPTECMOVTH1,0B2HREC:MOVR0,SBUFMOVTL1,0B2HINCR0SETBTR1CJNER0,40H,TECMOVSCON,50HSJMP$MOVR0,20HEND略利用串行通信方式2波特率固定,采用奇校驗(yàn)方式,將校驗(yàn)位放在TB8中,乙機(jī)檢驗(yàn)校驗(yàn)位,如正確,則存于片外4400H開始的RAM中,如錯(cuò)誤,通知對方重發(fā),R6存放數(shù)據(jù)塊長度匯編語言程序如下:發(fā)方ORG0000HL2:JBCT1,L3MOVDPTR,3400HAJMPMOVR6,0A1HL3:MOV1,DPTRMOVSCON,90HJBP,L4MOVSBUF,R6SETBTB8L4:MOVSBUF,ACJNEA,0FF0H,L8L5:JBCT1,L6AJMPL3AJMPL5L8:INCDPLL6:JBCRI,L7DJNZR6,L4AJMPL6SJMP$L7:MOVA,SBUF收方ORG0000HL5:JBJB8,L8MOVDPTR,4400HL6:MOVXDPTR,AMOVSCON,90HINCDPLL1:JBCRI,L2INCDPHAJMPL1DJNZR6,L3L2:MOVA,SBUFSJMP$MOVR6,AL8:MOVA,0FFHL3:JBCRI,L4MOVSBUF,AAJMPL3L9:JBCTI,L3L4:MOVA,SBUFAJMPL9JBP,L5SJMP$JNBRB8,L8ENDSJMP$電路圖見教材中圖,程序如下:ORG0000HCJNER7,04H,DEF;循環(huán)4次MOVR5,03HCLRCLRALCALLtimerMOVSCON,ASJMPLOOPLOOP:SETBtimer:MOVA,64HCLRAFOR:JZENDDMOVR7,AMOVTMOD,01HDEF:MOVA,R5 ;循環(huán)4次MOVTH0,0D9HMOVDPTR,tabMOVTL0,0F0HMOVCA,A+DPTR;查表A=tabR5SETBTR0MOVSBUF,AJNBTF0,$DECR5CLRTF0JNBT1,$DECACLRT1SJMPFORCJNER5,0FFH,ABC;若R5==255,則ENDD:RETR5=7tab:DB0c0H,0f9H,0a4H……;略MOVR5,07HENDABC:INCR7第6章、單片機(jī)總線與存儲器的擴(kuò)展參見節(jié)6116為2KB×8位RAM,共11根地址線A;A10,接線見圖;圖2732為4KB×8位EPROM,6264為8KB×8位RAM,因各只有一片,所以各片選CE接地,電路見圖;圖6116為2KB×8位RAM、2716為2KB×8位EPROM,地址線均為11位,地址線接線參見圖;電路見圖;圖4片2764的CE分別接138譯碼器為y0、y1、y2、y3端,各片地址為:27644 0000H~1FFFH27643 2000H~3FFFH27642 4000H~5FFFH27641 6000H~7FFFH設(shè)計(jì)電路見圖;圖第7章、單片機(jī)系統(tǒng)功能擴(kuò)展將圖中的2764去掉,并改為“",改“”為程序可參考教材中例;請參考上題和題;將244的輸入端最低位經(jīng)過一個(gè)上拉電阻接至+5V,經(jīng)過一個(gè)按鈕接到地;電路圖見圖MOVDPTR,OCFFBHP?.5P2.4MOVA,0A2HMOVXDPTR,A電路與上題類似,程序較簡單,略;、8255A口、B口、C口、控制口地址分別為7CFFH>7DFFH>7EFFHλ7FFFH,A口方式。輸出,C口輸出,控制字80H;電路見圖PO.7P0?ALESXX517Io工

Q:JQQ印D7?:)o6LrNI)8255Al PAAO PHN PC?囹圖程序:ORGOOOOHMOVDPTR,7FFH;指向控制口MOVA,80H;AaB口均采用基本輸出方式MOVXDPTR,A;寫控制字MOVDPTR,7CFFHMOVA,0MOVXDPTR,A;清顯示AGAIN:MOVRO,0;RO存字形表偏移量MOVRl,Ol;Rl置數(shù)碼表位選代碼NEXT:MOVDPTR,7EFFH;指向C口MOVA,RlMOVXDPTR,A;從C口輸出位選碼MOVA,ROMOVDPTR,TAB;置字形表頭地址MOVCA,A+DPTR;查字形碼表MOVDPTR,7CFFH;指向B口MOVXDPTR,A;從B口輸出字形碼ACALLDAY;延時(shí)INCRO;指向下一位字形MOVA,RlRLA;指向下一位MOVRl,ACJNERl,10H,NEXT;六個(gè)數(shù)碼管顯示完SJMPAGAINDAY:MOVR6,50;延時(shí)子程序DL2:MOVR7,7DHDLl:NOPNOPDJNZR7,DLlDJNZR6,DL2RETTABI: DB6FH,3FH,3FH,5EH;“gOOd”9oOd的字形碼提示:EPROM27128O16KB×8,地址線為14根,6264為8KB×8位,地址線為13根,電路可參考教材中圖;根據(jù)電路連線I/O口:A口:FDF8H,B口:FDF9H,C口:FDFAH,命令/狀態(tài)口:FDFBH.定時(shí)器TIMEL:FDFCHTIMEH:FDFDH存貯器RAM:FC00H?FCFFH第8章、單片機(jī)典型外圍接口技術(shù)電路參照教材中圖,不同的是將P27改為p23,先計(jì)算各模擬量對應(yīng)的數(shù)字量:3C對應(yīng)的數(shù)字量:5V/3V=255/X%=153=99h同樣可算得1V、2V、4V對應(yīng)的數(shù)字量分別為33H、66H、CCH三角波MOVDPTR,OF7FFHNEXT1:MOVA,0NEXT:MOVXDPTR,ANOPNOPINCACJNEA,9AH,NEXTNEXTA:DECAMOVXDPTR,ANOPNOPCJNEA,0,NEXTASJMPNEXT1END方波4V對應(yīng)的數(shù)字量為CCHMOVDPTR,0F7FFHMOVA,0NEXT:MOVXDPTR,AACALLD2MSXRLA,0CCHSJMPNEXT階梯波MOVDPTR,0F7FFHNEC:MOVA,0NEXT:MOVXDPTR,AACALLD1MSADDA,33HCJNEA,0FFH,NEXTANEXTA:MOVXDPTR,AACALLD5MSSJMPNEC電路參考教材中圖,增加一個(gè)地址,使用兩條輸出指令才能輸出一個(gè)數(shù)據(jù),其他同上;電路參考教材中圖,地址為7FFFH;ORG0000HMOVDPTR,7FFFHMOVR0,20HMOVA,R0NEXT:MOVXDPTR,AACALLD1MSINCR0CJNER0,30H,NEXTSJMP$END電路參閱教材中圖,不同的是將P~P改為P~P電路參閱教材中圖,不同的是延時(shí)方式:EOC懸空2;2查詢方式:EOC經(jīng)非門接單片機(jī)端口線;中斷方式同原圖;下面僅編查詢程序;IN2的地址為7FFAH,由于EOC經(jīng)非門接單片機(jī)端口線,查詢到為零,即轉(zhuǎn)換結(jié)束;ORG0000HMOVR7,0AHMOVR0,50HMOVDPTR,7FFAHNEXT:MOVXDPTR,A;啟動(dòng)轉(zhuǎn)換JB,$ ;查詢等待MOVXA,DPTR;讀入數(shù)據(jù)MOVR0,AINCR0DJNZNEXTSJMP$ADC0809采集入中模擬信號,順序采集一次,將采集結(jié)果存放于數(shù)組ad中;ADC0809模擬通道0~7的地址為7FF8H~7FFFH,ADC0809的轉(zhuǎn)換結(jié)束端EOC經(jīng)邏輯非后接至外部中斷1,電路參考教材中圖;程序參考教材第167頁的例子,只需修改數(shù)據(jù)存儲區(qū)地址;電路參考教材中圖,增加鍵盤的行線和數(shù)碼管個(gè)數(shù)至8個(gè),減少鍵盤列線到2根,程序略;第9章、串行接口技術(shù)請參考教材電路參照教材中圖,另外一片24C04的A1接到VCC其它引腳與第一片完全一樣;略可以,在操作IIC總線時(shí),將SPI總線上的所有器件的從機(jī)選擇線置高,這樣便不會對SPI總線有影響;在操作SPI總線時(shí),讓IIC總線的SDA保持高電平,這樣IIC總線得不到起始信號,便不會對IIC總線有影響;TLC5615經(jīng)SPI總線接至單片機(jī)參照教材中圖,REF作為衰減器的輸入,^丁作為衰減器的輸出;根據(jù)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論