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

下載本文檔

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

文檔簡介

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

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

3、知識,加深所學的知識,對所學的相關芯片的原理、內部結構、使用方法等有更加深刻的了解,學會利用課本知識聯系實際應用及編程。同時并了解綜合問題的程序設計掌握實時處理程序的編制和調制方法,掌握一般的設計步驟和流程,使我們以后做設計時邏輯更加清晰。</p><p><b>  二、設計任務:</b></p><p>  1.電子時鐘,具有十分、分、十秒和秒的計時功能,并可以在

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

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

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

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>  統</b></p><p><b> 

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

12、 ;初始化8254工作方式</p><p>  MOV AL,36H ;計數器0,方式3</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,MY8254_COUNT0 ;裝入計數初值</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、 本設計中的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>  七、設計方案</b

15、></p><p><b>  1、系統框圖如下:</b></p><p><b>  系統框圖</b></p><p><b>  2、主程序模塊</b></p><p>  主控模塊是核心模塊,對8254、8255A進行初始化,設置中斷向量,掃描鍵盤根據按鍵值作相應的

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

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

18、t;<p><b>  5、定時模塊</b></p><p>  定時模塊由一片8254實現,選用定時器0,工作在方式3,產生10ms負脈沖,這樣10*100=1000ms,即1s,以此計時。</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>  (2)電子時鐘處理流程圖</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>  ;***************根據CHECK配置信息修改下列符號值*******************</p><p>  

22、IOY0 EQU 0A000H ;片選IOY0對應的端口始地址</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計數器0端口地址</p><p>  MY8254_COUNT1 EQU IOY1+01H*4 ;8254計數器1端口地址</p><p>  MY8254_COUNT2 EQU IOY1+02H*4

25、;8254計數器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對應的7段數碼管的段位值</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 ;計數器0,方式3</p><p><b&

31、gt;  OUT DX,AL</b></p><p>  MOV DX,MY8254_COUNT0 ;裝入計數初值</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 ;設置回讀命令</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,個位秒加1</p><p>  JNE CHANGESEC</p><p>  MOV WSEC,0</p><

42、p><b>  INC SEC</b></p><p>  CMP SEC,0AH ;個位秒秒到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 ;分鐘個位到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>  ;存儲時間</b></p><p>  MOV AL,TENMINT;十位分</p><p>  MOV [SI],AL</p><p><b>  INC SI</b></p><

46、;p>  MOV AL,MINT;個位分</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;個位秒</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 ;設置當前檢測的是第幾列</p><p><b&

51、gt;  COLUM: </b></p><p>  MOV AL,CH ;選取一列,將X1~X4中一個置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 ;設置第1行第1列的對應的鍵值</p><p><b>  JMP KCODE</b></p><p>  L2:TEST AL,02H ;是否為第2行</p><p>  JNZ L3

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

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

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

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 ;當前檢測的列數遞增 </p><p><b>  MOV AL,CH</b></p><p>  TEST AL,08H ;檢測是否掃描到第4列</p><p>  JZ

60、KERR ;是則跳回到開始處</p><p>  ROL AL,1 ;沒檢測到第4列則準備檢測下一列</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、 ;清除數碼管顯示子程序</p><p>  MOV DX,MY8255_B ;段位置0即可清除數碼管顯示 </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 ;設置X1~X4,選通一個數碼管 </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] ;將鍵值作為偏移和鍵值基地址相加得到相應的鍵值 </p><p>  MOV DX,MY8255_B </p><p>  OUT DX,AL ;寫入數碼管A~DP&

69、lt;/p><p>  CALL DALLY</p><p>  DEC SI ;取下一個鍵值</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 ;軟件延時子程序</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>  ;設置十位分鐘加子程序</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>  ;設置個位分鐘加子程序</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>  ;設置十位秒加子程序</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>  ;設置個位秒加子程序</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、  ;設置十位分鐘減子程序</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>  ;設置個位分鐘減子程序</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>  ;設置十位秒減子程序</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>  ;設置個位秒減子程序</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>  ;電子表復位子程序</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>  本設計的主要特點是可對電子時鐘每一位進行預設,然而目前只實現了個位秒循環(huán)加1預置的功能。對十位分、個位分、十位秒的預置存在亂序顯示的問題,我們從代碼、硬件等多個方面

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

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

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

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

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

114、悉了匯編程序的編寫過程和運行過程,最后還提高了自己的動手能力。</p><p>  在此我還要感謝老師的悉心指導和同組人員的協助及配合,正是因為你們的幫助才確保了本次課程設計的順利進行。</p><p><b>  參考文獻</b></p><p>  1.郭蘭英 趙祥模 ,《微機原理與接口技術》 清華大學出版社</p><

溫馨提示

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

評論

0/150

提交評論