2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  微機(jī)原理與接口技術(shù)</b></p><p>  -----電子鐘實驗</p><p>  2011年1月5日 </p><p><b>  一 實驗任務(wù)及要求</b></p><p><b>  任務(wù):</b></p><p&

2、gt;  1、掌握綜合使用基本輸入輸出設(shè)備、通用接口芯片、專用接口芯片的方法;</p><p>  2 、掌握實時處理程序的編制和調(diào)試方法。</p><p><b>  要求</b></p><p>  設(shè)計一個定時顯示裝置,用實驗儀左側(cè)的六個LED數(shù)碼管顯示時間,時間顯示格式為24小時制。分秒值為59分55秒時開始報時,每秒鐘蜂鳴器鳴叫一聲,

3、到整點報時停止。</p><p>  用小鍵盤控制時鐘的啟停和時鐘的設(shè)置,鍵的定義參見左圖</p><p><b>  鍵值具體定義如下:</b></p><p>  G鍵(啟停鍵)—— 程序啟動后,按下該鍵時 鐘啟動; 再次按下該鍵,暫停計時,顯示當(dāng)前時間。</p><p>  S鍵(設(shè)置鍵)

4、—— 按下S鍵后,為時鐘設(shè)置時、分、秒初始值。</p><p><b>  二 硬件連線</b></p><p>  鍵盤的控制、LED顯示模塊:采用74系列模塊控制</p><p>  鍵盤的行信號Q_0、Q_1、Q_2、Q_3分別與開放的輸入信號Q0、Q1、Q2、Q3相連,鍵盤的列信號P_0、P_1、P_2和開放的輸出信號P0、P1、P2相

5、連。74芯片的片選信號CS1接地址譯碼信號340H, CS2接地址譯碼信號360H。</p><p>  時間的精確定時:用8254定時器0產(chǎn)生25ms的中斷信號;</p><p>  8254的片選CS連地址輸出端320H,A0,A1分別連地址總線A2,A3,GATE0連+5V,CLK0連74LS393分頻輸出的47K輸出端,OUT0連接到8259的IRQ0</p><

6、;p>  整點報時控制:由8255模塊控制;</p><p>  PC0直接與蜂鳴器相連,CS_4連接到實驗儀中部的地址輸出端CS_4</p><p>  中斷處理模塊:由8259控制</p><p>  8259的片選CS-1連地址輸出300H, INT1連總線輸入INTR,8259模塊的INT-A連總線的INTA,8259的SP/1連+5V。</p&

7、gt;<p><b>  三、程序流程圖</b></p><p><b>  主程序</b></p><p>  初始化各段寄存器及相關(guān)變量</p><p>  初始化8255、8254、8259芯片</p><p>  設(shè)置中斷向量,開放8259中斷屏蔽</p><

8、;p><b>  開放處理器中斷</b></p><p><b>  中斷服務(wù)程序</b></p><p><b>  保護(hù)現(xiàn)場</b></p><p>  判斷時間是否不小于59分55秒</p><p><b>  報時</b></p>

9、<p><b>  掃描鍵盤</b></p><p><b>  G鍵?</b></p><p><b>  調(diào)用啟停子程序</b></p><p><b>  S鍵?</b></p><p><b>  調(diào)用設(shè)置時間子程序<

10、/b></p><p><b>  COUNT加1</b></p><p><b>  COUNT=40?</b></p><p>  修改時間,調(diào)用ADDONE子程序</p><p><b>  COUNT清0</b></p><p>  顯示時

11、間,調(diào)用顯示時間子程序</p><p>  結(jié)束中斷(發(fā)EOI命令)</p><p><b>  恢復(fù)現(xiàn)場</b></p><p><b>  中斷返回</b></p><p><b>  四、實驗源代碼</b></p><p><b>  .

12、486p </b></p><p>  DATA SEGMENT AT 0 USE16</p><p><b>  ORG 1000H</b></p><p><b>  HOUR DW ?</b></p><p><b>  MIN DW ?</b><

13、;/p><p><b>  SEC DW ?</b></p><p>  STO DB ?</p><p>  COUNT DB ?</p><p>  DATA ENDS</p><p>  CODE SEGMENT USE16 </p><p>  ASSUME

14、 CS:CODE,DS:DATA</p><p>  ORG 1500H </p><p>  BEG: JMPSTART</p><p>  TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,00H ;0~F的共陰極七段譯碼表 00H表示不顯示任何東西</p><p&g

15、t;  KEYCOD DB 0EEH,0DEH,0BEH,0EDH,0DDH,0BDH,0EBH,0DBH,0BBH,0E7H,0D7H,0B7H ;行列編碼值</p><p>  KEYVAL DB 0,1,2,3,4,5,6,7,8,9,0AH,0BH ;所有鍵的鍵面值</p><p>  PORT1 EQU340H ;數(shù)碼管段選端口</p><p>

16、;  PORT2 EQU360H ;數(shù)碼管位選端口,鍵盤矩陣的行列端口</p><p>  START: MOVEAX,60000000H</p><p>  MOV CR0,EAX </p><p>  MOV AX,DATA</p><p>  MOV DS,AX</p><p>  MOV HO

17、UR,0203H ;小時分鐘以及秒的初始化</p><p>  MOV MIN,0509H</p><p>  MOV SEC,0502H</p><p>  LEA BX,TAB</p><p>  MOV STO,0 ;開始暫停標(biāo)志位置0&

18、lt;/p><p>  MOV COUNT ,0 ;中斷次數(shù)計數(shù)初始值為0</p><p>  ;8255初始化 ,用于產(chǎn)生報時的脈沖 </p><p>  MOV DX,20FH ;利用左四的8255,控制口為20F

19、H</p><p>  MOV AL,10000000B ;C口輸出</p><p>  OUT DX,AL</p><p>  MOV DX,20BH ;C0輸出1,蜂鳴器不響</p><p>  MOV AL,0FFH</p><

20、p>  OUT DX,AL </p><p>  ;8254初始化,用于產(chǎn)生周期為25ms的中斷</p><p>  MOV AL,00110110B ;計數(shù)器0,先低后高,方式三,二進(jìn)制</p><p>  MOV DX,32cH ;寫往控制口</p>&l

21、t;p>  OUT DX,AL</p><p>  MOV DX,320H ;計數(shù)器0寫初值:47KHz*25ms</p><p>  MOV AX,1175</p><p>  OUT DX,AL</p><p>  MOV AL,AH</p><p>  O

22、UT DX,AL</p><p><b>  ;8259初始化</b></p><p>  CLI :關(guān)中斷</p><p>  MOV DX,300H ;ICW1</p><p>  MOV AL,00010

23、011B</p><p>  OUT DX,AL</p><p>  MOV DX,308H ;ICW2</p><p>  MOV AL,08H ;IR0中斷類型號為08H</p><p>  OUT DX,AL</p><p&

24、gt;  MOV AL,00000001B ;ICW4</p><p><b>  OUT DX,AL</b></p><p>  MOV AL,0FEH ;IR0開屏蔽</p><p><b>  OUT DX,AL</b></p>

25、<p>  XOR AX,AX ;裝載中斷向量</p><p><b>  MOV ES,AX</b></p><p>  MOV DI,08H*4</p><p>  MOV AX,OFFSET INTSR</p><p>  MOV ES:[DI],AX<

26、;/p><p>  MOV AX,SEG INTSR</p><p>  MOV ES:[DI+2],AX</p><p>  STI ;開中斷</p><p><b>  JMP $</b></p><p>  INTSR PROC

27、 ;中斷服務(wù)程序</p><p>  CMP MIN,0509H ;比較當(dāng)前時間是否在59分55秒~00分00秒之間</p><p>  JL NEXT1</p><p>  CMP SEC,0505H</p><p>  JL NEXT1</p><

28、;p>  MOV DX,20BH</p><p>  MOV AL,00H ;蜂鳴器低有效,報時</p><p>  OUT DX,AL</p><p>  JMP NEXT2</p><p>  NEXT1: CMP MIN,0</p><p>  JNE NEXT3&

29、lt;/p><p>  CMP SEC,0</p><p>  JNE NEXT3</p><p>  MOV DX,20BH</p><p>  MOV AL,00H ;蜂鳴器低有效,報時</p><p>  OUT DX,AL</p><p>  JMP NE

30、XT2</p><p>  NEXT3: MOV DX,20BH </p><p>  MOV AL,0FFH</p><p>  OUT DX,AL</p><p>  NEXT2: CMP COUNT,20 ;用8255產(chǎn)生0.5ms的蜂鳴</p><p>  JLE N

31、EXT4</p><p>  MOV DX,20BH</p><p>  MOV AL,0FFH</p><p>  OUT DX,AL</p><p>  NEXT4: CALL KEYCHECK ;檢測有無鍵按下</p><p>  CMP AL,0AH ;啟停鍵

32、按下,調(diào)用啟停程序</p><p>  JNZ NEXT5</p><p>  CALL TSTART</p><p>  JMP NEXT6</p><p>  NEXT5: CMP AL,0BH ;設(shè)置鍵按下,調(diào)用設(shè)置時間程序</p><p>  JNZ NEXT6</

33、p><p>  CALL SETTIME</p><p>  NEXT6: INC COUNT ;當(dāng)COUNT直為40時,加一秒,之后置0</p><p>  CMP COUNT,40 ;25ms*40=1s</p><p>  JB NEXT7</p><p&g

34、t;  CALL ADDONE</p><p>  MOV COUNT,0</p><p>  NEXT7: CALL SHOW ;顯示時間</p><p>  MOV AL,20H ;發(fā)EOI命令,結(jié)束中斷</p><p>  MOV DX,300H</p><p>

35、;  OUT DX,AL</p><p><b>  IRET</b></p><p>  INTSR ENDP</p><p>  TSTART PROC ;控制暫停和開始</p><p>  CMP STO,00H</p><p><b&

36、gt;  JNE LL1</b></p><p><b>  DEC STO</b></p><p><b>  JMP LL2</b></p><p>  LL1: INC STO</p><p>  LL0: CALL KEYCHECK</p>

37、<p>  CMP AL,0AH</p><p><b>  JZ LL2</b></p><p>  CALL SHOW</p><p><b>  JMP LL0</b></p><p>  LL2: RET</p><p>  TSTART

38、ENDP</p><p>  ADDONE PROC ;加1秒子程序</p><p>  MOV AX,SEC ;當(dāng)前秒個位為9,加1后變0,十位加1</p><p><b>  CMP AL,9</b></p><p><b>  JE N1<

39、/b></p><p><b>  INC AL</b></p><p>  MOV SEC,AX</p><p><b>  JMP N6</b></p><p>  N1: INC AH</p><p>  MOV AL,0 </p>

40、;<p>  CMP AH,6 ;十位加1后為6,則秒變?yōu)?0,分鐘個位加1</p><p><b>  JE N2</b></p><p>  MOV SEC,AX</p><p><b>  JMP N6</b></p><p>  N2:

41、 MOV AX,0</p><p>  MOV SEC,AX</p><p>  MOV AX,MIN ; 當(dāng)前分鐘個位為9,加1后變0,十位加1</p><p><b>  CMP AL,9</b></p><p><b>  JE N3</b></p>&l

42、t;p><b>  INC AL</b></p><p>  MOV MIN,AX</p><p><b>  JMP N6</b></p><p>  N3: INC AH</p><p><b>  MOV AL,0</b></p>&l

43、t;p>  CMP AH,6 ;十位加1后為6,則分鐘變?yōu)?0,小時個位加1</p><p><b>  JE N4</b></p><p>  MOV MIN,AX</p><p><b>  JMP N6</b></p><p>  N4: MOV

44、 AX,0</p><p>  MOV MIN,AX</p><p>  MOV AX,HOUR</p><p><b>  INC AL</b></p><p>  CMP AX,0204H ;小時加1后與24比,相等,則變?yōu)?</p><p><b>

45、;  JE N5</b></p><p>  MOV HOUR,AX</p><p><b>  JMP N6</b></p><p>  N5: MOV AX,0</p><p>  MOV HOUR,AX</p><p>  N6: RET</p

46、><p>  ADDONE ENDP</p><p>  SETTIME PROC ;設(shè)置時間子程序</p><p>  LEA BX,TAB</p><p>  MOV HOUR,0</p><p>  MOV MIN,0</p><p>  

47、MOV SEC,0</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  L1: CALL KEYCHECK ;調(diào)用KEYCHECK,無鍵按下時,AL中值為0CH</p><p>  CALL DELAY</p&g

48、t;<p>  CMP AL,0CH</p><p><b>  JNZ L2</b></p><p><b>  JMP L1</b></p><p>  L2: CMP AL,02H</p><p>  JG L1 ;設(shè)置小時十位時,將其他各位數(shù)

49、碼管滅掉及對應(yīng)的七段譯碼表0CH</p><p>  MOV AH,AL</p><p>  MOV BYTE PTR[HOUR+1],AL</p><p>  MOV BYTE PTR[HOUR],0CH</p><p>  MOV MIN,0C0CH</p><p>  MOV SEC,0C0CH<

50、/p><p>  L3: CALL SHOW</p><p>  CALL KEYCHECK ;設(shè)置小時的個位</p><p>  CALL DELAY</p><p>  CMP AL,0CH</p><p><b>  JZ L3</b></p><

51、p>  MOV AH,BYTE PTR[HOUR+1]</p><p>  L4: CMP AX,0204H </p><p><b>  JGE L1</b></p><p>  MOV HOUR,AX</p><p>  L5: CALL SHOW</p&g

52、t;<p>  CALL KEYCHECK ;設(shè)置分鐘的十位</p><p>  CALL DELAY</p><p>  CMP AL,0CH</p><p><b>  JZ L5</b></p><p>  L6: CMP AL,06H</p><p>

53、;<b>  JGE L1</b></p><p>  MOV AH,AL</p><p>  MOV BYTE PTR[MIN+1],AL</p><p>  L7: CALL SHOW</p><p>  CALL KEYCHECK ;設(shè)置分鐘的個位</p><p&

54、gt;  CALL DELAY</p><p>  CMP AL,0CH</p><p><b>  JZ L7</b></p><p>  MOV AH,BYTE PTR[MIN+1]</p><p>  L8: CMP AX,0509H</p><p><b>

55、;  JG L1</b></p><p>  MOV MIN,AX</p><p>  L9: CALL SHOW</p><p>  CALL KEYCHECK ;設(shè)置秒的十位</p><p>  CALL DELAY</p><p>  CMP AL,0CH</p&

56、gt;<p>  JZ L9 </p><p>  L10: CMP AL,06H</p><p><b>  JGE L1</b></p><p>  MOV AH,AL</p><p>  MOV BYTE PTR[SEC+1],AL</p><

57、p>  L11: CALL SHOW</p><p>  CALL KEYCHECK ;設(shè)置秒的個位</p><p>  CALL DELAY</p><p>  CMP AL,0CH</p><p><b>  JZ L11</b></p><p>  MOV

58、 AH,BYTE PTR[SEC+1]</p><p>  L12: CMP AX,0509H</p><p><b>  JG L1</b></p><p>  MOV SEC,AX</p><p>  L13: CALL SHOW </p><p&

59、gt;  CALL KEYCHECK ;再次按鍵,啟動計時</p><p>  CALL DELAY</p><p>  CMP AL,0CH</p><p><b>  JZ L13</b></p><p><b>  RET</b></p><p>  

60、SETTIME ENDP</p><p>  KEYCHECK PROC ;判斷有無鍵按下子程序</p><p><b>  PUSH BX</b></p><p>  CALL CLEAR</p><p>  MOVDX,PORT2 </p>

61、;<p>  INAL,DX </p><p>  ANDAL,0FH</p><p>  CMPAL,0FH </p><p>  JZEXIT ;有按鍵按下,延時消抖</p><p><b>  NOP</b></p><p>  NO

62、P </p><p>  ;再次確認(rèn)是否有鍵按下</p><p><b>  INAL,DX</b></p><p>  ANDAL,0FH</p><p>  CMP AL,0FH</p><p><b>  JZEXIT</b&g

63、t;</p><p>  ;開始對每一列進(jìn)行逐行掃描</p><p>  MOVCX,3 </p><p>  MOVBL,0FEH</p><p>  NEXT:MOVAL,BL</p><p>  MOVDX,PORT2</p><p><b>  OUTDX

64、,AL</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  INAL,DX</b></p><p>  AND AL,0FH</p><p>  CMP

65、 AL,0FH</p><p>  JNZ KEY</p><p><b>  ROLBL,1 </b></p><p>  LOOP NEXT </p><p>  JMP EXIT</p><p>  KEY: SHL BL,4 </p>&l

66、t;p>  OR AL,BL ;形成一個字節(jié)的鍵碼信息存入AL,高4位為列信息低4位為行信息</p><p>  LEA SI,KEYCOD</p><p>  LEA DI,KEYVAL </p><p>  MOV CX,12</p><p>  NEXT11: CMP AL,[SI]&l

67、t;/p><p>  JZ FIND</p><p>  INC SI</p><p>  INC DI</p><p>  LOOP NEXT11 </p><p>  JMP EXIT</p><p>  FIND: MOV AL,[DI]

68、;AL中內(nèi)容為所按鍵的鍵面值 </p><p><b>  PUSH AX</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  WAIT1: IN AL,DX ;判斷按鍵是否已釋放,若無則等

69、待</p><p>  AND AL,0FH</p><p>  CMP AL,0FH</p><p>  JNZ WAIT1</p><p>  POP AX</p><p>  JMP EXIT2</p><p>  EXIT:MOV AL

70、,0CH</p><p><b>  EXIT2:NOP</b></p><p>  POP BX </p><p><b>  RET</b></p><p>  KEYCHECK ENDP</p><p>  SHOW PROC ;顯示時間&l

71、t;/p><p>  MOV AX,HOUR</p><p><b>  XLAT</b></p><p>  MOV DX,PORT1 ;段選輸出數(shù)據(jù)</p><p>  OUT DX,AL</p><p>  MOV DX,PORT2 ;位選輸出小時的個

72、位</p><p>  MOV AL,0C2H</p><p>  OUT DX,AL</p><p>  CALL DELAY</p><p>  CALL CLEAR </p><p>  MOV AL,AH </p><p><b&g

73、t;  XLAT</b></p><p>  MOV DX,PORT1 ;段選輸出數(shù)據(jù)</p><p>  OUT DX,AL</p><p>  MOV DX,PORT2 ;位選輸出小時的十位</p><p>  MOV AL,0C1H</p><p>  

74、OUT DX,AL</p><p>  CALL DELAY</p><p>  CALL CLEAR</p><p>  MOV AX,MIN</p><p><b>  XLAT</b></p><p>  MOV DX,PORT1 ;段選輸出數(shù)據(jù)</p>

75、;<p>  OUT DX,AL </p><p>  MOV DX,PORT2 ;位選輸出分鐘的個位</p><p>  MOV AL,0C8H</p><p>  OUT DX,AL</p><p>  CALL DELAY</p><p>  C

76、ALL CLEAR</p><p>  MOV AL,AH</p><p><b>  XLAT</b></p><p>  MOV DX,PORT1 ;段選輸出數(shù)據(jù)</p><p>  OUT DX,AL</p><p>  MOV DX,PORT2 ;

77、位選輸出分鐘的十位</p><p>  MOV AL,0C4H</p><p>  OUT DX,AL</p><p>  CALL DELAY</p><p>  CALL CLEAR</p><p>  MOV AX,SEC</p><p><b>  XLAT</b

78、></p><p>  MOV DX,PORT1 ;段選輸出數(shù)據(jù)</p><p>  OUT DX,AL </p><p>  MOV DX,PORT2 ;位選輸出秒的個位</p><p>  MOV AL,0E0h</p><p><b>  OUT DX,AL

79、</b></p><p>  CALL DELAY</p><p>  CALL CLEAR</p><p>  MOV AL,AH</p><p><b>  XLAT </b></p><p>  MOV DX,PORT1 ;段選輸出數(shù)據(jù)</p&g

80、t;<p>  OUT DX,AL</p><p>  MOV DX,PORT2 ;位選輸出秒的十位</p><p>  MOV AL,0D0H</p><p>  OUT DX,AL</p><p>  CALL DELAY</p><p>  CALL CLEAR<

81、;/p><p><b>  RET</b></p><p>  SHOW ENDP</p><p>  DELAY PROC ;延時子程序</p><p><b>  PUSH CX</b></p><p>  MOV CX,1000&

82、lt;/p><p><b>  LOOP $</b></p><p><b>  POP CX</b></p><p><b>  RET</b></p><p>  DELAY ENDP</p><p>  CLEAR PROC

83、 ;使七段譯碼管全滅子程序</p><p>  MOV AL,00H</p><p>  MOV DX,PORT1</p><p>  OUT DX,AL</p><p>  MOV DX,PORT2</p><p>  OUT DX,AL</p><p><b&

84、gt;  NOP</b></p><p><b>  NOP</b></p><p><b>  RET</b></p><p>  CLEAR ENDP</p><p><b>  CODEENDS</b></p><p><b&

溫馨提示

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

評論

0/150

提交評論