微機(jī)原理課程設(shè)計(jì)報(bào)告_第1頁
微機(jī)原理課程設(shè)計(jì)報(bào)告_第2頁
微機(jī)原理課程設(shè)計(jì)報(bào)告_第3頁
微機(jī)原理課程設(shè)計(jì)報(bào)告_第4頁
微機(jī)原理課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

微型計(jì)算機(jī)技術(shù)課程設(shè)計(jì)指導(dǎo)教師:班級:姓名:學(xué)號:班內(nèi)序號:課設(shè)日期:_________________________目錄TOC\o"1-2"\h\z\u一、課程設(shè)計(jì)題目 3二、設(shè)計(jì)目的 3三、設(shè)計(jì)內(nèi)容 3四、設(shè)計(jì)所需器材與工具 3五、設(shè)計(jì)思路 4六、設(shè)計(jì)步驟(含流程圖和代碼) 4七、課程設(shè)計(jì)小結(jié) 36一、課程設(shè)計(jì)題目:點(diǎn)陣顯示系統(tǒng)電路及程序設(shè)計(jì)利用匯編語言與微型計(jì)算機(jī)技術(shù)課程中所學(xué)的可編程接口芯片8253、8255A、8259設(shè)計(jì)一個(gè)基于微機(jī)控制的點(diǎn)陣顯示系統(tǒng)。二、設(shè)計(jì)目的1.通過本設(shè)計(jì),使學(xué)生綜合運(yùn)用匯編語言與微型計(jì)算機(jī)技術(shù)、數(shù)字電子技術(shù)等課程的內(nèi)容,為今后從事計(jì)算機(jī)檢測與控制工作奠定一定的根底。2.掌握接口芯片8253、8255A、8259等可編程器件、譯碼器74LS138、8路同相三態(tài)雙向總線收發(fā)器74LS245、點(diǎn)陣顯示器件的使用。3.學(xué)會用匯編語言編寫一個(gè)較完整的實(shí)用程序。4.掌握微型計(jì)算機(jī)技術(shù)應(yīng)用開發(fā)的全過程,包括需求分析、原理圖設(shè)計(jì)、元器件選用、布線、編程、調(diào)試、撰寫報(bào)告等步驟。三、設(shè)計(jì)內(nèi)容1.點(diǎn)陣顯示系統(tǒng)啟動后的初始狀態(tài)在計(jì)算機(jī)顯示器上出現(xiàn)菜單:dotmatrixdisplaysystem1.←leftshiftdisplay2.↑upshiftdisplay3.sstop4.EscExit2.點(diǎn)陣顯示系統(tǒng)運(yùn)行狀態(tài)按計(jì)算機(jī)光標(biāo)←鍵,點(diǎn)陣逐列向左移動并顯示:“微型計(jì)算機(jī)技術(shù)課程設(shè)計(jì),點(diǎn)陣顯示系統(tǒng),計(jì)科11302班,陳嘉敏,彭曉〞。按計(jì)算機(jī)光標(biāo)↑鍵,點(diǎn)陣逐行向上移動并顯示:“微型計(jì)算機(jī)技術(shù)課程設(shè)計(jì),點(diǎn)陣顯示系統(tǒng),計(jì)科11302班,陳嘉敏,彭曉〞。按計(jì)算機(jī)光標(biāo)s鍵,點(diǎn)陣停頓移動并顯示當(dāng)前字符。3.完畢程序運(yùn)行狀態(tài)按計(jì)算機(jī)Esc鍵,完畢點(diǎn)陣顯示系統(tǒng)運(yùn)行狀態(tài)并顯示“停〞。四.設(shè)計(jì)所需器材與工具1.一塊實(shí)驗(yàn)面包板(內(nèi)含時(shí)鐘信號1MHz或2MHz)。2.可編程芯片8253、8255、74LS245、74LS138各一片,16×16點(diǎn)陣顯示器件一片。3.導(dǎo)線假設(shè)干。4.示波器、萬用表、常用工具等共用(從實(shí)驗(yàn)室現(xiàn)借現(xiàn)還)。五、設(shè)計(jì)思路1.利用74LS138設(shè)計(jì)地址譯碼電路,8255端口地址:300H~303H,8253端口地址:304H~307H。2.74LS245用于總線和8253、8255之間的雙向傳輸和隔離。3.利用面包板上時(shí)鐘〔1MHz或2MHz〕和8253設(shè)計(jì)一個(gè)1毫秒定時(shí)電路,將定時(shí)信號〔1毫秒方波〕接到總線的IRQ2或IRQ10送給8259控制點(diǎn)陣左移或上移。4.選擇8255的PA0、PA4、PA5和PB4、PB5、PB6、PB7,7個(gè)位控制點(diǎn)陣顯示器件行和列的數(shù)據(jù)串行輸入、輸入脈沖、鎖存脈沖〔并行輸出脈沖〕。六、設(shè)計(jì)步驟(1)74LS245數(shù)據(jù)總路線緩沖器圖6-1-174LS245的功能表圖6-1-2圖6-1-3(2)74LS138圖6-1-4標(biāo)準(zhǔn)地址譯碼電路圖6-1-58255CS對應(yīng)的地址為300H~303H,8253CS對應(yīng)的地址為304H~307H。簡化后的非標(biāo)準(zhǔn)地址譯碼電路圖6-1-6(3).8253定時(shí)/計(jì)數(shù)器圖6-1-7(4).8255A圖6-1-8〔5〕.點(diǎn)陣顯示器件圖6-1-9圖6-1-10附4、課程設(shè)計(jì)所用器件圖6-1-12附5、點(diǎn)陣生成圖圖6-1-13

圖6-1-14圖6-1-15圖6-1-16圖6-1-17圖6-1-18圖6-1-19圖6-1-20開場開場初始化8253、8255A及8259芯片,選擇計(jì)數(shù)器1、2,輸出端口A、B,工作方式0初始化8253、8255A及8259芯片,選擇計(jì)數(shù)器1、2,輸出端口A、B,工作方式0顯示主界面信息,點(diǎn)陣顯示出字模,停頓不移動顯示主界面信息,點(diǎn)陣顯示出字模,停頓不移動中斷效勞程序,不斷掃描鍵盤,等待有鍵按下(1.2.3.4)并執(zhí)行相應(yīng)效勞程序中斷效勞程序,不斷掃描鍵盤,等待有鍵按下(1.2.3.4)并執(zhí)行相應(yīng)效勞程序按鍵4按鍵4啟動Esc功能,調(diào)用退出程序,點(diǎn)陣顯示“停〞,并完畢顯示。按鍵3啟動StopDisplay功能,調(diào)用停頓程序,點(diǎn)陣停頓移動并顯示當(dāng)前字符按鍵2按鍵3啟動StopDisplay功能,調(diào)用停頓程序,點(diǎn)陣停頓移動并顯示當(dāng)前字符按鍵2啟動UpShift功能,調(diào)用上移程序,并顯示在點(diǎn)陣上按鍵1啟動LeftShift功能,調(diào)用左移程序,并顯示在點(diǎn)陣上3.電路圖圖6-3-1注:(1)電路箱總芯片上已集成8259芯片,實(shí)際連接時(shí)8253的OUT2直接接到總芯片的IRQ10處;(2)實(shí)際連接時(shí),是由8255A芯片的PA0、PA4、PA5、PB4、PB5、PB6、PB7控制點(diǎn)陣顯示屛;PA0→R1、PA4→SCK、PA5→LATCH、PB4→A、PB5→B、PB6→C、PB7→D。GND和EN/OE接地,+5V接電源正極。4.正確運(yùn)用所給器件布線,搭接硬件電路初始接線圖圖6-4-1測試中發(fā)現(xiàn)8255無法正常工作,檢查得知面包板底下有短路,重新申請新的面包板,更改局部線路,最后得到線路圖如下,并測試成功。最終接線圖及測試圖6-4-2DATASEGMENT微db12H,10H,12H,10H,2AH,90H,4AH,0A4H,8AH,0BEH,1FH,0C4H,20H,24H,7FH,0A8H,0A0H,28H,2FH,28H,29H,10H,29H,50H,29H,0A8H,29H,28H,30H,46H,20H,84H型db01H,04H,7FH,84H,12H,24H,12H,24H,12H,24H,0FFH,0A4H,12H,24H,12H,24H,12H,04H,23H,14H,41H,08H,7FH,0FCH,01H,00H,01H,04H,0FFH,0FEH,00H,00H計(jì)db00H,40H,20H,40H,10H,40H,10H,40H,00H,40H,00H,44H,0F7H,0FEH,10H,40H,10H,40H,10H,40H,10H,40H,12H,40H,14H,40H,18H,40H,10H,40H,00H,40H算db20H,80H,3EH,0FCH,49H,20H,9FH,0F0H,10H,10H,1FH,0F0H,10H,10H,1FH,0F0H,10H,10H,1FH,0F0H,08H,24H,0FFH,0FEH,08H,20H,08H,20H,10H,20H,20H,20H機(jī)db10H,00H,10H,10H,11H,0F8H,11H,10H,0FDH,10H,11H,10H,31H,10H,39H,10H,55H,10H,51H,10H,91H,10H,11H,10H,11H,12H,12H,12H,14H,0EH,18H,00H技db10H,40H,10H,40H,10H,48H,13H,0FCH,0FCH,40H,10H,40H,10H,40H,13H,0F8H,1AH,08H,31H,10H,0D1H,10H,10H,0A0H,10H,40H,10H,0B0H,51H,0EH,26H,04H術(shù)db01H,00H,01H,40H,01H,30H,01H,10H,01H,04H,0FFH,0FEH,01H,00H,03H,80H,05H,40H,09H,20H,11H,10H,21H,0EH,0C1H,04H,01H,00H,01H,00H,01H,00H課db00H,08H,43H,0FCH,22H,48H,22H,48H,03H,0F8H,02H,48H,0E2H,48H,23H,0F8H,20H,40H,2FH,0FEH,20H,0E0H,29H,50H,32H,48H,24H,4EH,08H,44H,00H,40H程db08H,04H,1DH,0FEH,0F1H,04H,11H,04H,11H,04H,0FFH,04H,11H,0FCH,38H,00H,37H,0FEH,54H,20H,50H,28H,91H,0FCH,10H,20H,10H,24H,17H,0FEH,10H,00H設(shè)db01H,0F0H,21H,10H,11H,10H,11H,10H,01H,10H,02H,0EH,0F4H,00H,13H,0F8H,11H,08H,11H,10H,10H,90H,10H,0A0H,14H,40H,18H,0B0H,13H,0EH,0CH,04H計(jì)Db00H,40H,20H,40H,10H,40H,10H,40H,00H,40H,00H,44H,0F7H,0FEH,10H,40H,10H,40H,10H,40H,10H,40H,12H,40H,14H,40H,18H,40H,10H,40H,00H,40HDou0db00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,18H,00H,18H,00H,10H,00H,20H,00H,00H,00H,00H,00H點(diǎn)db02H,00H,02H,00H,02H,08H,03H,0FCH,02H,00H,02H,10H,3FH,0F8H,20H,10H,20H,10H,20H,10H,3FH,0F0H,00H,00H,29H,10H,24H,0C8H,44H,44H,80H,04H陣db00H,80H,78H,84H,4FH,0FEH,50H,80H,50H,0A0H,61H,20H,51H,28H,4BH,0FCH,48H,20H,48H,20H,68H,24H,57H,0FEH,40H,20H,40H,20H,40H,20H,40H,20H顯db00H,10H,1FH,0F8H,10H,10H,10H,10H,1FH,0F0H,10H,10H,10H,10H,1FH,0F0H,14H,50H,44H,44H,34H,4CH,14H,50H,04H,40H,04H,44H,0FFH,0FEH,00H,00H示db00H,10H,3FH,0F8H,00H,00H,00H,00H,00H,00H,00H,04H,0FFH,0FEH,01H,00H,01H,00H,09H,20H,19H,18H,21H,0CH,41H,04H,01H,00H,05H,00H,02H,00H系db00H,38H,7FH,0C0H,04H,00H,04H,10H,08H,20H,3FH,0C0H,01H,00H,02H,20H,04H,10H,3FH,0F8H,01H,08H,09H,20H,09H,10H,11H,08H,25H,08H,02H,00H統(tǒng)db10H,80H,10H,40H,20H,48H,27H,0FCH,48H,80H,0F9H,10H,12H,08H,27H,0FCH,41H,24H,0F9H,20H,41H,20H,01H,20H,1AH,22H,0E2H,22H,44H,1EH,08H,00HDou2db00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,18H,00H,18H,00H,10H,00H,20H,00H,00H,00H,00H,00HZhangDb09H,00H,0FDH,08H,09H,08H,09H,10H,09H,20H,79H,40H,41H,04H,47H,0FEH,41H,40H,79H,40H,09H,20H,09H,20H,09H,10H,09H,4EH,51H,84H,21H,00HstrmenuDB'dotmatrixdisplaysystem',0AH,0DH,'1.','L','leftshiftdisplay',0AH,0DH,'2.','U','upshiftdisplay',0AH,0DH,'3.Sstop',0AH,0DH,'4.EscExit',0AH,0DH,0AH,0DH,'$'OUTSETDW0000H;用于存放字符首地址,增加程序可移植性。COUNTDB35;用于指示漢字的個(gè)數(shù)----------------------------------------------------------------------------------StopFlagDB00H;暫停標(biāo)志位:用于輔助實(shí)現(xiàn)暫停功能?!?〕如果為0收到中斷后,可以MoveStep;〔2〕否則不行。StatusDB00H;輔助實(shí)現(xiàn)第一種中斷。;為了實(shí)現(xiàn)“利用中斷來刷屏〞,需要用到兩個(gè)變量。IndexOfLineDW0006H;行標(biāo),用來指示當(dāng)前刷屏從第幾行開場。用于輔助實(shí)現(xiàn)ShowUpward范圍是0~count*16-1。當(dāng)超過的時(shí)候,應(yīng)該使其等于00IndexOfWordDB00H;漢字的指針(只能放256個(gè)漢字嘍),輔助實(shí)現(xiàn)ShowLeftward的MoveStepDB00H;以每個(gè)漢字為中心,的位移量,用于Left。@:出于我們點(diǎn)陣的數(shù)據(jù)格式,其范圍在0~16之間。;用于恢復(fù)原中斷向量INT0A_OFFDW()INT0A_SEGDW();Test:用于輔助做測試的變量。TimesDB00hDATAENDSCODESEGMENT'CODE' ASSUMEDS:DATA,CS:CODE;StartSTART: MOVDX,DATA MOVDS,DX LEADX,wEI;設(shè)置字符的開場位置---------------------------------------------------------------------------------------- MOVOUTSET,DX CALLInI8255 CALLIni8253 MOVAX,3572H ;獲取原中斷向量 INT21H MOVINT0A_OFF,BX ;保存原中斷向量 MOVBX,ES MOVINT0A_SEG,BXCLI;關(guān)中斷MOVAX,2572HMOVDX,SEGMoveStepLeft;設(shè)置新的中斷向量PUSHDSMOVDS,DXMOVDX,OFFSETMoveStepLeftINT21HPOPDSSTI;開中斷INAL,0A1H;翻開IRQ10ANDAL,0FBHOUT0A1H,ALINAL,21H;翻開IRQ2ANDAL,0FBHOUT21H,AL LEADX,strmenu MOVAH,09H INT21H;刷屏。NOTEND: MOVAH,0BH;檢查是否有鍵按下INT21HINCALJNZNOTEND2;假設(shè)無鍵按下,則跳過判斷MOVAH,08H;如有’Q’或’q’鍵按下,則程序退出INT21HCMPAL,'s';當(dāng)鍵入為's'的時(shí)候,停頓LED滾動 JZJStop CMPAL,'S'; JZJStop CMPAL,1BH;當(dāng)鍵入為Esc的時(shí)候,退出程序 JZJEXIT CMPAL,'u';當(dāng)鍵入U(xiǎn)的時(shí)候,調(diào)用Up:〔1〕改變Status變量=2;〔2〕改變StopFlag;〔3〕改變中斷表向量為“MoveLeftStep",從而實(shí)現(xiàn)中斷移位 JZJUp CMPAL,'U'; JZJUp CMPAL,'l';當(dāng)鍵入L的時(shí)候,調(diào)用Left:〔1〕改變Status變量=2;〔2〕改變StopFlag;〔3〕改變中斷向量表為“MoveLeftStep",從而實(shí)現(xiàn)中斷移位 JZJLeft CMPAL,'L'; JZJLeft CMPAL,'Q'JZJEXIT CMPAL,'q'JZJEXITNOTEND2: CMPStatus,01H JZJLeftShow;以向左的方式,刷屏 CMPStatus,02H JZJUpShow;以向上的方式刷屏;CALLDELAY CALLDELAY JMPNOTENDJStop: CALLStop JMPNOTENDJLeft: CALLLeft JMPNOTENDJUp: CALLUP JMPNOTENDJEXIT: CALLEXITJLeftShow: CALLShowLeftward ;CALLDELAY;也許對于cpu位的位移,這個(gè)delay最好是放在MoveStepLeft函數(shù)的內(nèi)部 ;CALLMoveStepLeft;如果中斷沒起作用,那就用CUP來位移。 MOVAH,2 MOVDL,'L' INT21H JMPNOTENDJUpShow: CALLShowUpward ;CALLDELAY ;CALLMoveStepUp;如果中斷沒起作用,那就用CUP來位移。 MOVAH,2 MOVDL,'U' INT21H JMPNOTEND;根據(jù)鍵盤輸入,改變中斷向量表,從而選擇是向上,還是向下移動。Left:;(1)把中斷處理程序“向左左位〞的中斷程序放入中斷向量表中。;(2)同時(shí)將status置為1,表示的是以向左的方式刷屏;(3)置暫停位為00h;;(4)開場循環(huán)。 PUSHAX PUSHDX MOVAH,2 MOVDL,'L' INT21HCLI;關(guān)中斷MOVAX,2572HMOVDX,SEGMoveStepLeft;設(shè)置新的中斷向量PUSHDSMOVDS,DXMOVDX,OFFSETMoveStepLeftINT21HPOPDSSTI;開中斷INAL,0A1H;翻開IRQ10ANDAL,0FBH ;11111011OUT0A1H,ALINAL,21H;翻開IRQ2ANDAL,0FBHOUT21H,AL MOVStatus,1;(2) MOVStopFlag,00H;(3)置暫停位 POPDX POPAX RETUp:;(1)把中斷處理程序“向上位移〞的中斷程序放入中斷向量表中。;(2)同時(shí)將status置為2,表示的是以向左的方式刷屏;(3)置暫停位為00h;;(4)開場循環(huán)。 PUSHAX PUSHDX MOVAH,2 MOVDL,'U' INT21HCLI;關(guān)中斷MOVAX,2572HMOVDX,SEGMoveStepUp;設(shè)置新的中斷向量PUSHDSMOVDS,DXMOVDX,OFFSETMoveStepUpINT21HPOPDSSTI;開中斷INAL,0A1H;翻開IRQ10ANDAL,0FBH ;11111011OUT0A1H,ALINAL,21H;翻開IRQ2ANDAL,0FBHOUT21H,AL ;開中斷 MOVStatus,2;(2) MOVStopFlag,00H;置暫停位 POPDX POPAX RETStop: PUSHAX PUSHDX MOVAH,2 MOVDL,'S' INT21H MOVStopFlag,01H;置暫停位 POPDX POPAX RET;LED顯示的邏輯局部;SendWordSendWord:;計(jì)算并送出一行16位數(shù)據(jù)。;這個(gè)數(shù)據(jù)放在AX中。 PUSHAX PUSHBX PUSHCX PUSHDX MOVCX,16cicleSendWord:;測試局部 PUSHAX PUSHDX MOVDX,8000H ;MOVDX,0001H ANDDX,AX SHRDX,15 ADDDX,30H MOVAH,2H INT21H POPDX POPAX;1:通過8255的c4口把一位數(shù)據(jù)給G1 PUSHAX MOVDX,303H TESTAX,8000H;如果數(shù)據(jù)位是0的話,將c0置1;如果數(shù)據(jù)位是1的話,將c0置0 JZSetOne;將c0置0 MOVAL,00000000B OUTDX,AL JMPGoOnSetOne:;將C0置1 MOVAL,00000001B OUTDX,AL GoOn:;2:以下代碼是為了實(shí)現(xiàn)一個(gè)"移位脈沖" MOVAL,00001100B;使得C6變成0〔低電平〕;同時(shí)不改變數(shù)據(jù)輸入位 OUTDX,AL MOVAL,00001101B;使得C6變成1〔高電平〕;同時(shí)不改變數(shù)據(jù)輸入位 OUTDX,AL POPAX SHLAX,1; ;SHRAX,1 DECCX JNZcicleSendWord POPDX POPCX POPBX POPAX RET;ShowLeftWardShowLeftWard: PUSHSI PUSHDX PUSHCX PUSHBX PUSHAX;1:根據(jù)IndexOfWord2;2:MoveStep決定一個(gè)位的位移;3:當(dāng)Stop為0時(shí),每“刷完一次屏',MoveStep要移動++;否則不移動;;4:當(dāng)MoveStep==16時(shí),IndexOfWord2++;5:當(dāng)IndexOfWord2==NumOfCharacter-1時(shí),IndexOfWord2歸零@:因?yàn)楱曀饕菑?開場的嘛“。 MOVSI,OUTSET MOVAL,32 MULIndexOfWord ADDSI,AX MOVCX,16;來一個(gè)信號刷一次屏Oneline: ;CALLDELAY;Left代碼的關(guān)鍵:;(1)CX作為一個(gè)臨時(shí)的“偏移變量使用〞;(2)把四個(gè)字節(jié)〔兩個(gè)字〕的數(shù)據(jù)拼接在一起,并把最終結(jié)果放在AX中。 PUSHCX; MOVAH,[SI] MOVAL,[SI+1] MOVCL,MoveStep SHLAX,CL; ;MOVBH,[SI+32];下一個(gè)字的對應(yīng)行 ;MOVBL,[SI+33] CALLGetNextLeftWord;取下一個(gè)字對應(yīng)行的十六位,放在BX中 MOVCL,16 SUBCL,MoveStep SHRBX,CL ORAX,BX POPCX ADDSI,2;換行;test CALLEnter;(1)移位輸出了16位數(shù)據(jù) CALLSendWord;2)釋放鎖存,先0后1.采用置位、復(fù)位控制字 MOVAL,00001010B MOVDX,303H ;calldelay OUTDX,AL MOVAL,00001011B OUTDX,AL ;(3)行選--需要測試選中那一行 MOVAL,CL; SHLAL,1 DECAL; MOVDX,302H OUTDX,AL DECCX JNZOnelinePOPAXPOPBXPOPCXPOPDXPOPSI;JMPEXITRET;GetNextLeftWordGetNextLeftWord:;取下一字的時(shí)候,要考慮一種特殊情況,及當(dāng)SI已經(jīng)指向最后一個(gè)字的時(shí)候,下一個(gè)16位,應(yīng)該取自第一個(gè)字 PUSHAX PUSHSI PUSHDX MOVAL,IndexOfWord INCAL CMPAL,COUNT JNZGetNextLeftGetFistLeft: MOVDX,OUTSET MOVAL,32 MULIndexOfWord ADDDX,AX MOVAX,SI SUBAX,DX MOVSI,OUTSET ADDSI,AX MOVBH,[SI] MOVBL,[SI+1];TEST PUSHDX MOVDL,'' MOVAH,2H INT21H POP DX MOVAX,BX CALLSendWord JMPEndGetLeftWordGetNextLeft: MOVBH,[SI+32];下一個(gè)字的對應(yīng)行 MOVBL,[SI+33]EndGetLeftWord: POPDX POPSI POPAX RET;MoveStepLeftMoveStepLeft:;1:根據(jù)IndexOfWord2以及MoveStep2確定SI。;2:MoveStep決定一個(gè)位的位移;3:當(dāng)Stop為0時(shí),每“刷完一次屏',MoveStep要移動++;否則不移動;;4:當(dāng)MoveStep==16時(shí),IndexOfWord2++;5:當(dāng)IndexOfWord2==COUNT時(shí),IndexOfWord2歸零@:因?yàn)楱曀饕菑?開場的嘛“。;當(dāng)刷完一次屏之后,MoveStep2要變化。;(1)當(dāng)已經(jīng)按下暫停建的時(shí)候,則不前移動;;(2)當(dāng)移動超過==16的時(shí)候 PUSHAX CLI MOVAL,01H TESTStopFlag,AL JNZEndStep;如果等于1,則MoveSteip不前移動 INCMoveStep MOVAL,16 CMPMoveStep,AL JNZEndStep;如果EndMoveStep!=16跳過4; MOVMoveStep,00H INCIndexOfWord MOVAL,COUNT CMPIndexOfWord,AL JNZEndStep;如果IndexOfStep2!=COUNT,則跳過5 MOVIndexOfWord,00HEndStep: MOVAL,62H;發(fā)中斷完畢命令MOVDX,0A0HOUTDX,AL;向從片8259發(fā)EOI命令OUT020H,AL;向主片8259發(fā)EOI命令STI;開中斷POPAXIRET RET;ShowUpWard;1:用到變量:IndexOfLine;@:(1)用來指示當(dāng)前刷屏從第幾行開場。(2)范圍是0~count*16-1。(3)當(dāng)超過的時(shí)候,應(yīng)該使其等于00(4)用來對SI初始化;2:SI:;@:SI動態(tài)變化〔顯示十六行數(shù)據(jù)過程中〕,當(dāng)超過的count*16-1這個(gè)地方所對應(yīng)的地址的時(shí)候,使其“重新指向開頭〞。ShowUpWard: PUSHSI PUSHDX PUSHCX PUSHBX PUSHAX MOVSI,OUTSET MOVAX,2 MULIndexOfLine ADDSI,AX MOVCX,16;來一個(gè)信號刷一次屏AnotherLine: MOVAH,[SI] MOVAL,[SI+1] ADDSI,2;〔1〕換行;〔2〕如果換行以后>=range=32*count行對應(yīng)的指針,令其從新指向開頭,并繼續(xù)++進(jìn)展行掃 PUSHAX;定義一個(gè)臨時(shí)變量 MOVAX,0 MOVAL,32 MULCOUNT MOVBX,OUTSET ADDBX,AX CMPBX,SI JNZContinue;如果等于range,則reset;Reset MOVSI,OUTSETContinue: POPAX ;Test CALLEnter;(1)移位輸出了16位數(shù)據(jù)--以AX傳送數(shù)據(jù) CALLSendWord;2)釋放鎖存,先0后1.采用置位、復(fù)位控制字 MOVAL,00001010B MOVDX,303H ;calldelay OUTDX,AL MOVAL,00001011B OUTDX,AL ;(3)行選--需要測試選中那一行 MOVAL,CL; SHLAL,1 DECAL; MOVDX,302H OUTDX,AL DECCX;用于實(shí)現(xiàn)16行數(shù)據(jù)的輸出 JNZAnotherLinePOPAXPOPBXPOPCXPOPDXPOPSI;JMPNOTENDRET;MoveStepUpMoveStepUp: PUSHAX;test PUSHDX CLI INCTimes MOVAH,2 MOVDL,Times ADDDL,30H INT21H MOVAH,2 MOVDX,IndexOfLine ADDDL,30H INT21H CMPStopFlag,1 JZContinueMoveUp ADDIndexOfLine,1;〔1〕換行;〔2〕如果換行以后>=range=32*count行對應(yīng)的指針,令其從新指向開頭,并繼續(xù)++進(jìn)展行掃 MOVAX,16 MULCOUNT CMPAX,IndexOfLine JNZContinueMoveUp;Reset MOVIndexOfLine,00HContinueMoveUp: MOVAL,62H;發(fā)中斷完畢命令MOVDX,0A0HOUTDX,AL;向從片8259發(fā)EOI命令OUT020H,AL;向主片8259發(fā)EOI命令STI;開中斷POPDXPOPAXIRET;JMPNOTEND RET;輔助函數(shù)INI8253: ;對8253C1和C2進(jìn)展初始化 PUSHDX PUSHAX MOVDX,307H ;初始化8253,307H為8253控制端口地址 MOVAL,01110110B;計(jì)數(shù)器1,方式3 OUTDX,AL ;將初始控制字輸出到控制端口 MOVDX,305H ;計(jì)數(shù)器1 MOVAX,900 ;先讀低8位, OUTDX,AL MOVAL,AH ;再讀高8位 OUTDX,AL MOVDX,307H ;再給8253寫控制字 MOVAL,10110110B ;計(jì)數(shù)器2,方式3 OUTDX,AL MOVDX,306H ;計(jì)數(shù)器2 MOVAX,900 ;先讀低8位, OUTDX,AL MOVAL,AH ;再讀高8位 OUTDX,AL POPAX POPDX RETINI8255: ;8255初始化 PUSHDX PUSHAXMOVDX,303H ;初始化8255MOVAL,80H ;A口輸出OUTDX,AL ;將初始控制字輸出到控制端口 MOVDX,300H ;A端口的地址 MOVAL,000H OUTDX,AL MOVDX,302H ;C口地址 MOVAL,000H OUTDX,ALPOPAXPOPDX RETEXIT:MOVAX,2572H;恢復(fù)中斷向量MOVDX,INT0A_SEGPUSHDSMOVDS,DXMOVDX,INT0A_OFFINT21HPOPDSINAL,0A1H;屏蔽IRQ10ORAL,04HOUT0A1H,ALINAL,21H;屏蔽IRQ2ORAL,04HOUT21H,ALMOVAX,4C00H;程序退出INT21HEnter: PUSHAX PUSHDX MOVAH,2 MOVDX,0AH INT21H MOVAH,2 MOVDX,0DH INT21H POPDX POPAXRETDELAYPROC PUSHCXPUSHBXMOVBX,0FFFHLOOP2:MOVCX,0FFFHLOOP1:LOOPLOOP1DECBXJNZLOOP2 POPBX POPCX RETDELAYENDPCODEENDS ENDSTART過程中的主要難點(diǎn)(自己遇到的)及解決思路和方法主要難點(diǎn):①利用proteus畫電路圖時(shí),知道每個(gè)芯片怎么連,但是需要多個(gè)芯片同時(shí)連接時(shí),之間的連線會有些不確定;②在試驗(yàn)箱上連線時(shí),沒能

溫馨提示

  • 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

提交評論