微機(jī)接口技術(shù)課程設(shè)計(jì)--可預(yù)置電子時(shí)鐘_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  微機(jī)原理與接口技術(shù)</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  設(shè)計(jì)名稱: 可預(yù)置電子時(shí)鐘 </p><p>  專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) </p><p>  班 級(jí):

2、</p><p>  姓 名: </p><p>  指導(dǎo)教師: </p><p>  2012年 6 月 7 日</p><p>  一、課程設(shè)計(jì)目的和意義</p><p>  通過本次課程設(shè)計(jì)要掌握兩種芯片使用的方法,靈活運(yùn)用課本

3、知識(shí),加深所學(xué)的知識(shí),對(duì)所學(xué)的相關(guān)芯片的原理、內(nèi)部結(jié)構(gòu)、使用方法等有更加深刻的了解,學(xué)會(huì)利用課本知識(shí)聯(lián)系實(shí)際應(yīng)用及編程。同時(shí)并了解綜合問題的程序設(shè)計(jì)掌握實(shí)時(shí)處理程序的編制和調(diào)制方法,掌握一般的設(shè)計(jì)步驟和流程,使我們以后做設(shè)計(jì)時(shí)邏輯更加清晰。</p><p><b>  二、設(shè)計(jì)任務(wù):</b></p><p>  1.電子時(shí)鐘,具有十分、分、十秒和秒的計(jì)時(shí)功能,并可以在

4、數(shù)碼管上顯示。</p><p>  2.電子時(shí)鐘具有啟動(dòng)鍵、停止鍵、復(fù)位鍵,而且可以隨時(shí)通過鍵盤進(jìn)行各位時(shí)間的設(shè)置。</p><p><b>  三、設(shè)計(jì)思想:</b></p><p>  本系統(tǒng)設(shè)計(jì)的電子時(shí)鐘以8088微處理器作為CPU,用8254做定時(shí)計(jì)數(shù)器產(chǎn)生時(shí)鐘頻率,8255做可編程并行接口顯示時(shí)鐘和鍵盤電路。在此系統(tǒng)中,8254的功能

5、是定時(shí)計(jì)數(shù),接入8254的CLK信號(hào)為周期性時(shí)鐘信號(hào)。8254采用計(jì)數(shù)器0,工作于方式3,使8254的OUT0端輸出周期性的負(fù)脈沖信號(hào);8254還采用計(jì)數(shù)器0,工作于方式2,產(chǎn)生18432分頻信號(hào)。8255的功能是掃描鍵盤并使LED燈顯示,工作于方式0,使A口B口輸出,C口低四位輸入。</p><p><b>  四、設(shè)計(jì)內(nèi)容:</b></p><p>  本程序的主

6、要設(shè)計(jì)內(nèi)容是用主程序完成鍵盤按鍵的掃描,實(shí)現(xiàn)計(jì)時(shí)結(jié)果的數(shù)碼管顯示,實(shí)現(xiàn)秒與分之間的轉(zhuǎn)換。通過判斷鍵盤按鍵調(diào)用相應(yīng)功能程序段以實(shí)現(xiàn)相應(yīng)功能,即實(shí)現(xiàn)了啟動(dòng)、暫停、復(fù)位功能,以及通過鍵盤進(jìn)行十分、分、十秒、秒時(shí)間的手動(dòng)設(shè)置功能。</p><p>  每百分之一秒對(duì)百分之一秒寄存器的內(nèi)容加1,當(dāng)加到100時(shí),秒顯示位加1,這樣依次對(duì)個(gè)位秒、十位秒、個(gè)位分、十位分寄存器的內(nèi)容加1,四個(gè)數(shù)碼管動(dòng)態(tài)顯示分、秒的當(dāng)前值。<

7、/p><p><b>  硬件連線圖</b></p><p>  XD7 </p><p><b>  XD6</b></p><p><b>  XD5</b></p><p><b>  XD4</b>&l

8、t;/p><p><b>  XD3</b></p><p><b>  XD2</b></p><p><b>  XD1</b></p><p><b>  XD0</b></p><p><b>  系</b>

9、;</p><p><b>  XA3</b></p><p><b>  XA2</b></p><p><b>  XIOW</b></p><p><b>  XIOR</b></p><p><b>  IOY0&

10、lt;/b></p><p><b>  IOY1</b></p><p><b>  INTR</b></p><p><b>  CLK</b></p><p><b>  統(tǒng)</b></p><p><b> 

11、 總</b></p><p><b>  線</b></p><p><b>  六、芯片介紹:</b></p><p>  1.8254的初始化字</p><p>  本設(shè)計(jì)中的8254的初始化為:</p><p>  MOV DX,MY8254_MODE

12、 ;初始化8254工作方式</p><p>  MOV AL,36H ;計(jì)數(shù)器0,方式3</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,MY8254_COUNT0 ;裝入計(jì)數(shù)初值</p><p>  MOV AL,00

13、H ;18432分頻</p><p><b>  OUT DX,AL</b></p><p>  MOV AL,54H</p><p><b>  OUT DX,AL</b></p><p>  2.8255的初始化字</p><p> 

14、 本設(shè)計(jì)中的8255的初始化為:</p><p>  MOV DX,MY8255_MODE ;初始化8255工作方式</p><p>  MOV AL,81H ;方式0,A口、B口輸出,C口低4位輸入 </p><p>  OUT DX,AL</p><p><b>  七、設(shè)計(jì)方案</b

15、></p><p><b>  1、系統(tǒng)框圖如下:</b></p><p><b>  系統(tǒng)框圖</b></p><p><b>  2、主程序模塊</b></p><p>  主控模塊是核心模塊,對(duì)8254、8255A進(jìn)行初始化,設(shè)置中斷向量,掃描鍵盤根據(jù)按鍵值作相應(yīng)的

16、處理,主要由軟件實(shí)現(xiàn)。它的主要功能是調(diào)用其它模塊對(duì)系統(tǒng)工作進(jìn)行協(xié)調(diào),它的主要功能是讀小鍵盤輸入鍵值并執(zhí)行要做的工作,如果鍵值為0,則啟動(dòng)動(dòng)態(tài)顯示;如果鍵值為1,則暫停顯示;如果鍵值為2,則將顯示初始值0000置入顯示緩沖,并調(diào)用顯示模塊顯示。</p><p><b>  3、小鍵盤模塊</b></p><p>  小鍵盤模塊送入主控模塊的子功能模塊。由軟件和硬件實(shí)現(xiàn),

17、硬件上由小鍵盤和8255互連,將小鍵值由8255送入主控模塊。軟件上使用行掃描法獲得鍵值并送回主控模塊。</p><p><b>  4、顯示模塊</b></p><p>  顯示模塊是將顯示緩沖區(qū)的數(shù)值送到LED顯示的功能模塊,顯示緩沖區(qū)是由四個(gè)字節(jié)構(gòu)成,分別保存分鐘的高位和低位,秒鐘的高位和低位。硬件上由四個(gè)LED構(gòu)成,軟件上由掃描顯示的方法實(shí)現(xiàn)。</p&g

18、t;<p><b>  5、定時(shí)模塊</b></p><p>  定時(shí)模塊由一片8254實(shí)現(xiàn),選用定時(shí)器0,工作在方式3,產(chǎn)生10ms負(fù)脈沖,這樣10*100=1000ms,即1s,以此計(jì)時(shí)。</p><p><b>  六、流程圖</b></p><p><b> ?。?)主程序流程圖</b

19、></p><p><b>  N</b></p><p><b>  Y</b></p><p>  N Y</p><p> ?。?)電子時(shí)鐘處理流程圖</p><p><b>  N</b></p&g

20、t;<p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p>

21、<p><b>  N</b></p><p><b>  Y</b></p><p><b>  八、源程序</b></p><p>  ;***************根據(jù)CHECK配置信息修改下列符號(hào)值*******************</p><p>  

22、IOY0 EQU 0A000H ;片選IOY0對(duì)應(yīng)的端口始地址</p><p>  IOY1 EQU 0A040H</p><p>  ;*****************************************************************</p><p>  MY8255_A

23、 EQU IOY0+00H*4 ;8255的A口地址</p><p>  MY8255_B EQU IOY0+01H*4 ;8255的B口地址</p><p>  MY8255_C EQU IOY0+02H*4 ;8255的C口地址</p><p>  MY8255_MODE EQU IOY0+0

24、3H*4 ;8255的控制寄存器地址</p><p>  MY8254_COUNT0 EQU IOY1+00H*4 ;8254計(jì)數(shù)器0端口地址</p><p>  MY8254_COUNT1 EQU IOY1+01H*4 ;8254計(jì)數(shù)器1端口地址</p><p>  MY8254_COUNT2 EQU IOY1+02H*4

25、;8254計(jì)數(shù)器2端口地址</p><p>  MY8254_MODE EQU IOY1+03H*4 ;8254控制寄存器端口地址</p><p>  STACK1 SEGMENT STACK</p><p>  DW 256 DUP(?)</p><p>  STACK1 ENDS</p><p>  

26、DATA SEGMENT</p><p>  DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H</p><p>  ;鍵值表,0~F對(duì)應(yīng)的7段數(shù)碼管的段位值</p><p>  STATUS DB 0 ;8254

27、OUT端口狀態(tài)鍵</p><p>  ISRUNING DB 0</p><p>  WSEC DB 0</p><p>  WMSEC DB 0</p><p>  TENMINT DB 0</p><p>  MINT DB 0</p><p>  TENSEC DB

28、 0</p><p>  SEC DB 0</p><p>  DATA ENDS</p><p>  CODE SEGMENT</p><p>  ASSUME CS:CODE,DS:DATA</p><p>  START: MOV AX,DATA</p><p>&l

29、t;b>  MOV DS,AX</b></p><p>  MOV SI,3000H ;建立緩沖區(qū),存放要顯示的鍵值</p><p>  MOV AL,00H ;先初始化鍵值為0</p><p>  MOV [SI],AL</p><p>  MOV [SI+1]

30、,AL</p><p>  MOV [SI+2],AL</p><p>  MOV [SI+3],AL</p><p>  MOV DX,MY8254_MODE ;初始化8254工作方式</p><p>  MOV AL,36H ;計(jì)數(shù)器0,方式3</p><p><b&

31、gt;  OUT DX,AL</b></p><p>  MOV DX,MY8254_COUNT0 ;裝入計(jì)數(shù)初值</p><p>  MOV AL,00H ;18432分頻</p><p><b>  OUT DX,AL</b></p><p>  MOV

32、AL,54H</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,MY8255_MODE ;初始化8255工作方式 </p><p>  MOV AL,81H ;方式0,A口、B口輸出,C口低4位輸入 </p><p><b>  OUT

33、 DX,AL</b></p><p><b>  BEGIN: </b></p><p>  CALL DIS ;顯示刷新 </p><p>  CALL CLEAR ;清屏</p><p>  CA

34、LL CCSCAN ;掃描按鍵</p><p>  JZ NOKEYDOWN ;有鍵按下則跳置GETKEY1 </p><p>  JMP GETKEY1</p><p>  NOKEYDOWN:</p><p>  MOV AH,1 ;判斷PC

35、鍵盤是否有按鍵按下</p><p><b>  INT 16H</b></p><p>  JZ KEYSCANEND ;無按鍵則跳回繼續(xù)循環(huán),有則退出</p><p><b>  JMP QUIT</b></p><p>  KEYSCANEND:</p>

36、<p>  CMP ISRUNING,1</p><p><b>  JNE BEGIN</b></p><p>  TIMESTART:</p><p>  MOV AL,11100010B ;設(shè)置回讀命令</p><p>  MOV DX,MY8254_MODE</p>&

37、lt;p>  OUT DX,AL </p><p>  MOV DX,MY8254_COUNT0 ;讀0端口狀態(tài)控制字</p><p>  IN AL,DX</p><p>  CMP STATUS,1</p><p>  JNE NOTSTATUS</p><p>  TE

38、ST AL,80H</p><p>  JZ CHANGEWMSEC</p><p><b>  JMP BEGIN</b></p><p>  NOTSTATUS:</p><p>  TEST AL,80H</p><p>  JNZ CHANGEWMSEC</p><p&

39、gt;  JMP BEGIN</p><p>  CHANGEWMSEC:</p><p>  TEST AL,80H</p><p>  JZ CHANGESTATUS</p><p>  MOV STATUS,1</p><p>  JMP HASCHANGE</p><p>  CHAN

40、GESTATUS:</p><p>  MOV STATUS,0</p><p>  HASCHANGE: </p><p><b>  INC WMSEC</b></p><p>  CMP WMSEC,0AH ;百分秒到10,十分秒加1 </p><p>  JNE CHANGESEC&

41、lt;/p><p>  MOV WMSEC,0</p><p><b>  INC WSEC</b></p><p>  CMP WSEC,0AH ;十分秒秒到10,個(gè)位秒加1</p><p>  JNE CHANGESEC</p><p>  MOV WSEC,0</p><

42、p><b>  INC SEC</b></p><p>  CMP SEC,0AH ;個(gè)位秒秒到10,十位秒加1</p><p>  JNE CHANGESEC</p><p><b>  MOV SEC,0</b></p><p>  INC TENSEC</p><

43、;p>  CMP TENSEC,06H ;十位秒到6,清零</p><p>  JNE CHANGESEC</p><p>  MOV TENSEC,0</p><p><b>  INC MINT</b></p><p>  CMP MINT,0AH ;分鐘個(gè)位到10,十位加1</p><

44、;p>  JNZ CHANGESEC</p><p>  MOV MINT,0</p><p>  INC TENMINT</p><p>  CMP TENMINT,06H ;十位分到6,清零</p><p>  JNE CHANGESEC</p><p>  MOV TENMINT,0</p>

45、<p>  CHANGESEC:MOV SI,3000H</p><p><b>  ;存儲(chǔ)時(shí)間</b></p><p>  MOV AL,TENMINT;十位分</p><p>  MOV [SI],AL</p><p><b>  INC SI</b></p><

46、;p>  MOV AL,MINT;個(gè)位分</p><p>  MOV [SI],AL</p><p><b>  INC SI</b></p><p>  MOV AL,TENSEC;十位秒</p><p>  MOV [SI],AL</p><p><b>  INC SI<

47、;/b></p><p>  MOV AL,SEC;個(gè)位秒</p><p>  MOV [SI],AL</p><p><b>  INC SI</b></p><p><b>  JMP BEGIN</b></p><p><b>  QUIT: <

48、;/b></p><p>  MOV AX,4C00H ;返回到DOS</p><p><b>  INT 21H</b></p><p><b>  GETKEY1:</b></p><p>  CALL DIS ;顯示刷新&l

49、t;/p><p>  CALL DALLY </p><p>  CALL DALLY</p><p>  CALL CCSCAN ;再次掃描按鍵</p><p>  JNZ GETKEY2 ;有鍵按下則跳置GETKEY2</p>&l

50、t;p>  JMP BEGIN ;否則跳回開始繼續(xù)循環(huán)</p><p><b>  GETKEY2:</b></p><p>  MOV CH,0FEH</p><p>  MOV CL,00H ;設(shè)置當(dāng)前檢測的是第幾列</p><p><b&

51、gt;  COLUM: </b></p><p>  MOV AL,CH ;選取一列,將X1~X4中一個(gè)置0 </p><p>  MOV DX,MY8255_A </p><p><b>  OUT DX,AL</b></p><p>  MOV D

52、X,MY8255_C ;讀Y1~Y4,用于判斷是哪一行按鍵閉合 </p><p><b>  IN AL,DX</b></p><p>  L1:TEST AL,01H ;是否為第1行</p><p>  JNZ L2 ;不是則繼續(xù)判斷 </

53、p><p>  MOV AL,00H ;設(shè)置第1行第1列的對(duì)應(yīng)的鍵值</p><p><b>  JMP KCODE</b></p><p>  L2:TEST AL,02H ;是否為第2行</p><p>  JNZ L3

54、 ;不是則繼續(xù)判斷</p><p>  MOV AL,04H ;設(shè)置第2行第1列的對(duì)應(yīng)的鍵值</p><p><b>  JMP KCODE</b></p><p>  L3:TEST AL,04H ;是否為第3行</p><p>  JNZ L4

55、 ;不是則繼續(xù)判斷</p><p>  MOV AL,08H ;設(shè)置第3行第1列的對(duì)應(yīng)的鍵值</p><p><b>  JMP KCODE</b></p><p>  L4:TEST AL,08H ;是否為第4行</p><p>  

56、JNZ NEXT ;不是則繼續(xù)判斷</p><p>  MOV AL,0CH ;設(shè)置第4行第1列的對(duì)應(yīng)的鍵值</p><p><b>  KCODE: </b></p><p>  ADD AL,CL ;將第1列的值加上當(dāng)前列數(shù),確定按鍵值

57、</p><p>  CALL WHICHKEY ;保存按鍵值</p><p><b>  PUSH AX</b></p><p>  KON:CALL DIS ;顯示刷新</p><p>  CALL CLEAR ;清屏</

58、p><p>  CALL CCSCAN ;掃描按鍵,判斷按鍵是否彈起</p><p>  JNZ KON ;未彈起則繼續(xù)循環(huán)等待彈起</p><p><b>  POP AX</b></p><p><b>  NEXT: </b>

59、;</p><p>  INC CL ;當(dāng)前檢測的列數(shù)遞增 </p><p><b>  MOV AL,CH</b></p><p>  TEST AL,08H ;檢測是否掃描到第4列</p><p>  JZ

60、KERR ;是則跳回到開始處</p><p>  ROL AL,1 ;沒檢測到第4列則準(zhǔn)備檢測下一列</p><p><b>  MOV CH,AL</b></p><p><b>  JMP COLUM</b></p><p>

61、;<b>  KERR: </b></p><p><b>  JMP BEGIN</b></p><p>  CCSCAN PROC NEAR ;掃描是否有按鍵閉合子程序</p><p>  MOV AL,00H </p&

62、gt;<p>  MOV DX,MY8255_A ;將4列全選通,X1~X4置0</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,MY8255_C </p><p>  IN AL,DX ;讀Y1~Y4</p><

63、;p><b>  NOT AL</b></p><p>  AND AL,0FH ;取出Y1~Y4的反值</p><p><b>  RET</b></p><p>  CCSCAN ENDP</p><p>  CLEAR PROC NEAR

64、 ;清除數(shù)碼管顯示子程序</p><p>  MOV DX,MY8255_B ;段位置0即可清除數(shù)碼管顯示 </p><p>  MOV AL,00H</p><p><b>  OUT DX,AL</b></p><p><b>  RET</b>&

65、lt;/p><p>  CLEAR ENDP</p><p>  DIS PROC NEAR ;顯示鍵值子程序</p><p>  PUSH AX ;以緩沖區(qū)存放的鍵值為鍵值表偏移找到鍵值并顯示</p><p>  MOV SI,3003H <

66、;/p><p>  MOV DL,0F7H</p><p><b>  MOV AL,DL</b></p><p><b>  AGAIN: </b></p><p><b>  PUSH DX</b></p><p>  MOV DX,MY8255_A &

67、lt;/p><p>  OUT DX,AL ;設(shè)置X1~X4,選通一個(gè)數(shù)碼管 </p><p>  MOV AL,[SI] ;取出緩沖區(qū)中存放鍵值 </p><p>  MOV BX,OFFSET DTABLE</p><p>  AND AX,

68、00FFH</p><p>  ADD BX,AX </p><p>  MOV AL,[BX] ;將鍵值作為偏移和鍵值基地址相加得到相應(yīng)的鍵值 </p><p>  MOV DX,MY8255_B </p><p>  OUT DX,AL ;寫入數(shù)碼管A~DP&

69、lt;/p><p>  CALL DALLY</p><p>  DEC SI ;取下一個(gè)鍵值</p><p><b>  POP DX</b></p><p><b>  MOV AL,DL</b></p><p>  TEST AL,

70、01H ;判斷是否顯示完?</p><p>  JZ OUT1 ;顯示完,返回</p><p>  ROR AL,1 </p><p><b>  MOV DL,AL</b></p><p>  JMP AGAIN

71、 ;未顯示完,跳回繼續(xù)</p><p><b>  OUT1: </b></p><p>  POP AX </p><p><b>  RET</b></p><p><b>  DIS ENDP</b></p&g

72、t;<p>  WHICHKEY PROC NEAR ;保存鍵值子程序</p><p>  CMP AL,00H</p><p><b>  JNZ J1</b></p><p>  CALL STARTKEY</p><p>  JMP KERR </p&g

73、t;<p>  J1:CMP AL,01H</p><p><b>  JNZ J2</b></p><p>  CALL STOPKEY</p><p><b>  JMP KERR</b></p><p>  J2:CMP AL,02H</p><p>&l

74、t;b>  JNZ J3</b></p><p>  CALL CLEARKEY</p><p><b>  JMP KERR</b></p><p>  J3:CMP AL,04H</p><p><b>  JNZ J4</b></p><p>  CA

75、LL ADD_TM</p><p><b>  JMP KERR</b></p><p>  J4:CMP AL,05H</p><p><b>  JNZ J5</b></p><p>  CALL ADD_M</p><p><b>  JMP KERR<

76、/b></p><p>  J5:CMP AL,06H</p><p><b>  JNZ J6</b></p><p>  CALL ADD_TS</p><p><b>  JMP KERR</b></p><p>  J6:CMP AL,07H</p>

77、<p><b>  JNZ BACK</b></p><p>  CALL ADD_S</p><p><b>  BACK :RET</b></p><p>  WHICHKEY ENDP</p><p>  STARTKEY PROC</p><p>  M

78、OV ISRUNING,1</p><p>  JMP TIMESTART</p><p><b>  RET</b></p><p>  STARTKEY ENDP</p><p>  STOPKEY PROC</p><p>  MOV ISRUNING,0</p><p&

79、gt;  JMP TIMESTART</p><p>  STOPKEY ENDP</p><p>  CLEARKEY PROC</p><p><b>  PUSH AX</b></p><p>  MOV TENMINT,0</p><p>  MOV MINT,0</p>&

80、lt;p>  MOV TENSEC,0</p><p><b>  MOV SEC,0</b></p><p>  MOV SI,3000H</p><p>  MOV AL,00H</p><p>  MOV [SI],AL</p><p>  MOV [SI+1],AL</p>

81、;<p>  MOV [SI+2],AL</p><p>  MOV [SI+3],AL</p><p><b>  POP AX</b></p><p><b>  RET</b></p><p>  CLEARKEY ENDP</p><p>  ADD_T

82、M PROC</p><p><b>  PUSH AX</b></p><p>  CMP TENMINT,6</p><p><b>  JNZ Z1</b></p><p>  MOV TENMINT,0</p><p>  Z1:MOV SI,3000H</p&

83、gt;<p>  MOV AL,TENMINT</p><p>  MOV [SI],AL</p><p>  INC TENMINT</p><p><b>  POP AX</b></p><p><b>  RET</b></p><p>  ADD_TM

84、 ENDP</p><p>  ADD_M PROC</p><p><b>  PUSH AX</b></p><p>  CMP MINT,0AH</p><p><b>  JNZ Z2</b></p><p>  MOV MINT,0</p><p

85、>  Z2:MOV SI,3000H</p><p>  MOV AL,MINT</p><p>  MOV [SI+1],AL</p><p><b>  INC MINT</b></p><p><b>  POP AX</b></p><p><b> 

86、 RET</b></p><p>  ADD_M ENDP</p><p>  ADD_TS PROC</p><p><b>  PUSH AX</b></p><p>  CMP TENSEC,6</p><p><b>  JNZ Z3</b></p&

87、gt;<p>  MOV TENSEC,0</p><p>  Z3:MOV SI,3000H</p><p>  MOV AL,TENSEC</p><p>  MOV [SI+2],AL</p><p>  INC TENSEC</p><p><b>  POP AX</b>&

88、lt;/p><p><b>  RET</b></p><p>  ADD_TS ENDP</p><p>  ADD_S PROC</p><p><b>  PUSH AX</b></p><p>  CMP SEC,0AH</p><p><b

89、>  JNZ Z4</b></p><p><b>  MOV SEC,0</b></p><p>  Z4:MOV SI,3000H</p><p>  MOV AL,SEC</p><p>  MOV [SI+3],AL</p><p><b>  INC SEC&

90、lt;/b></p><p><b>  POP AX</b></p><p><b>  RET</b></p><p>  ADD_S ENDP</p><p>  DALLY PROC NEAR ;軟件延時(shí)子程序</p><p&

91、gt;<b>  PUSH CX</b></p><p>  MOV CX,00FFH</p><p>  D1: MOV AX,00FFH</p><p>  D2: DEC AX</p><p><b>  JNZ D2</b></p><p><b

92、>  LOOP D1</b></p><p><b>  POP CX</b></p><p><b>  RET</b></p><p>  DALLY ENDP</p><p>  CODE ENDS</p><p><b>  END S

93、TART</b></p><p>  ;設(shè)置十位分鐘加子程序</p><p>  SETTMADD PROC NEAR</p><p>  ADD TENMINT,1</p><p>  MOV AL,TENMINT</p><p><b>  MOV SI,0</b></p&g

94、t;<p>  MOV TIMETABLE[SI],AL</p><p><b>  RET</b></p><p>  SETTMADD ENDP</p><p>  ;設(shè)置個(gè)位分鐘加子程序</p><p>  SETMADD PROC NEAR</p><p>  ADD MIN

95、T,1</p><p>  MOV AL,MINT</p><p><b>  MOV SI,1</b></p><p>  MOV TIMETABLE[SI],AL</p><p><b>  RET</b></p><p>  SETMADD ENDP</p>

96、<p>  ;設(shè)置十位秒加子程序</p><p>  SETTSADD PROC NEAR</p><p>  ADD TENSEC,1</p><p>  MOV AL,TENSEC</p><p><b>  MOV SI,2</b></p><p>  MOV TIMETABL

97、E[SI],AL</p><p><b>  RET</b></p><p>  SETTSADD ENDP</p><p>  ;設(shè)置個(gè)位秒加子程序</p><p>  SETSADD PROC NEAR</p><p><b>  ADD SEC,1</b></p&

98、gt;<p>  MOV AL,SEC</p><p><b>  MOV SI,3</b></p><p>  MOV TIMETABLE[SI],AL</p><p><b>  RET</b></p><p>  SETSADD ENDP</p><p>

99、  ;設(shè)置十位分鐘減子程序</p><p>  SETTMSUB PROC NEAR</p><p>  SUB TENMINT,1</p><p>  MOV AL,TENMINT</p><p><b>  MOV SI,0</b></p><p>  MOV TIMETABLE[SI],AL

100、</p><p><b>  RET</b></p><p>  SETTMSUB ENDP</p><p>  ;設(shè)置個(gè)位分鐘減子程序</p><p>  SETMSUB PROC NEAR</p><p>  SUB MINT,1</p><p>  MOV AL,MI

101、NT</p><p><b>  MOV SI,1</b></p><p>  MOV TIMETABLE[SI],AL</p><p><b>  RET</b></p><p>  SETMSUB ENDP</p><p>  ;設(shè)置十位秒減子程序</p>

102、<p>  SETTSSUB PROC NEAR</p><p>  SUB TENSEC,1</p><p>  MOV AL,TENSEC</p><p><b>  MOV SI,2</b></p><p>  MOV TIMETABLE[SI],AL</p><p><b&

103、gt;  RET</b></p><p>  SETTSSUB ENDP</p><p>  ;設(shè)置個(gè)位秒減子程序</p><p>  SETSSUB PROC NEAR</p><p><b>  SUB SEC,1</b></p><p>  MOV AL,SEC</p>

104、;<p><b>  MOV SI,3</b></p><p>  MOV TIMETABLE[SI],AL</p><p><b>  RET</b></p><p>  SETSSUB ENDP</p><p><b>  ;電子表復(fù)位子程序</b></

105、p><p>  CLEARCLOCK PROC NEAR</p><p>  MOV TENMINT, 0</p><p>  MOV MINT, 0</p><p>  MOV TENSEC, 0</p><p>  MOV SEC, 0</p><p><b>  MOV SI,0&l

106、t;/b></p><p>  MOV TIMETABLE[SI],0</p><p><b>  INC SI</b></p><p>  MOV TIMETABLE[SI],0</p><p><b>  INC SI</b></p><p>  MOV TIMET

107、ABLE[SI],0</p><p><b>  INC SI</b></p><p>  MOV TIMETABLE[SI],0</p><p><b>  RET</b></p><p>  CLEARCLOCK ENDP</p><p><b>  CODE

108、ENDS</b></p><p><b>  END START</b></p><p><b>  存在的問題及分析</b></p><p>  本設(shè)計(jì)的主要特點(diǎn)是可對(duì)電子時(shí)鐘每一位進(jìn)行預(yù)設(shè),然而目前只實(shí)現(xiàn)了個(gè)位秒循環(huán)加1預(yù)置的功能。對(duì)十位分、個(gè)位分、十位秒的預(yù)置存在亂序顯示的問題,我們從代碼、硬件等多個(gè)方面

109、進(jìn)行了分析,最終認(rèn)為是緩沖區(qū)設(shè)置方面存在漏洞。</p><p><b>  十、心得體會(huì)</b></p><p>  在設(shè)計(jì)剛開始時(shí),我們只是知道要用8254完成計(jì)數(shù),用8255與數(shù)碼管單元完成顯示功能。經(jīng)分析,本設(shè)計(jì)題目的設(shè)計(jì)思想是簡單的,只需要使用8254完成計(jì)數(shù),用8255與數(shù)碼管單元完成顯示功能;利用8254定時(shí)器從0開始進(jìn)行計(jì)時(shí),將計(jì)時(shí)的結(jié)果顯示在數(shù)碼管上。

110、每隔1秒,秒鐘個(gè)位計(jì)時(shí)一次;到10秒,秒鐘十位計(jì)時(shí)一次;到60秒,分鐘個(gè)位計(jì)時(shí)一次;到10分,分鐘十位計(jì)時(shí)一次。數(shù)字變動(dòng)信息通過8255送數(shù)碼管顯示,并通過自己的理解附加一些功能片段來完成電子表的人性化功能設(shè)計(jì),如電子表的校準(zhǔn)、電子表的開始、停止、清零等功能。</p><p>  在課程設(shè)計(jì)過程中,我深刻地體會(huì)到:《微機(jī)原理與接口技術(shù)》這門課程對(duì)于我們的要求不僅限于對(duì)書本知識(shí)的理解,更重要的是對(duì)書本知識(shí)的運(yùn)用。這

111、次設(shè)計(jì)涉及到很多芯片的應(yīng)用,最大特點(diǎn)是軟,硬件的結(jié)合,對(duì)動(dòng)手能里的要求很大。也使我更加的體會(huì)到,在一定程度和科技水平上,硬件和軟件是可以實(shí)現(xiàn)對(duì)等轉(zhuǎn)化的。電子時(shí)鐘的發(fā)展史就很好的詮釋了這個(gè)過程。從物理硬件實(shí)現(xiàn)到軟件實(shí)現(xiàn)。除此之外,我們應(yīng)該在學(xué)習(xí)過程中充分發(fā)揮自己的想象力和創(chuàng)新意識(shí),將對(duì)書本知識(shí)的理解與我們的創(chuàng)新意識(shí)相結(jié)合,設(shè)計(jì)出實(shí)用且功能良好的實(shí)物。</p><p>  本次設(shè)計(jì)給我們最大的收獲就是動(dòng)手能力的重要性

112、,實(shí)踐和理論上是有差距的,理論與實(shí)際相結(jié)合是很重要的。只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固。動(dòng)手試驗(yàn)也讓自己對(duì)書本知識(shí)有了更深刻的認(rèn)識(shí),把書本知識(shí)真正的轉(zhuǎn)化為自己所掌握的東西,能加以利用。</p><p>  實(shí)驗(yàn)中個(gè)

113、人的力量是不及群體的力量的,我們同組三個(gè)人分工合作,做事的效率高了很多。雖然有時(shí)候會(huì)為了一些細(xì)節(jié)爭論不休,但最后得出的總是最好的結(jié)論。而且實(shí)驗(yàn)也教會(huì)我們在團(tuán)隊(duì)中要善于與人相處,與人共事,不要一個(gè)人解決所有問題。</p><p>  總之,這次課程設(shè)計(jì)對(duì)于我們有很大的幫助,通過課程設(shè)計(jì),我更加深入地理解了,微機(jī)原理課程上講到的各種芯片的功能,以及引腳的作用,同時(shí)加深了對(duì)于主要芯片的應(yīng)用的認(rèn)識(shí),同時(shí)在試驗(yàn)室的環(huán)境里熟

114、悉了匯編程序的編寫過程和運(yùn)行過程,最后還提高了自己的動(dòng)手能力。</p><p>  在此我還要感謝老師的悉心指導(dǎo)和同組人員的協(xié)助及配合,正是因?yàn)槟銈兊膸椭糯_保了本次課程設(shè)計(jì)的順利進(jìn)行。</p><p><b>  參考文獻(xiàn)</b></p><p>  1.郭蘭英 趙祥模 ,《微機(jī)原理與接口技術(shù)》 清華大學(xué)出版社</p><

溫馨提示

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

評(píng)論

0/150

提交評(píng)論