汇编语言--8254定时/计数器实验
生活随笔
收集整理的這篇文章主要介紹了
汇编语言--8254定时/计数器实验
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實驗題目
計數應用實驗
編寫程序,應用8254的計數功能,使用單次脈沖模擬計數,使每當按下‘KK1+’5次后,產生一次計數中斷,并在屏幕上顯示一個字符‘M’;
認識8254
8254是Intel公司生產的可編程間隔定時器。是8253的改進型,比8253具有更優良的性能。8254具有以下基本功能:
- 有三個16位計數器
- 每個計數器可按二進制或十進制(BCD)計數
- 每個計數器可編程工作于6種不同的工作方式
- 8254每個計數器允許的最高計數頻率為10MHz(8253為2MHz)
- 8254有讀回命令(8253,沒有),除了可以讀出當前計數單元的內容外,還可以讀出狀態寄存器的內容
- 計數脈沖可以是有規律的時鐘信號,也可以是隨機信號。
8254的內部結構框圖和引腳圖
由與CPU的接口,內部控制電路和三個計數器組成
8254的工作方式如下
- 方式0:計數到0結束輸出正躍變信號方式
- 方式1:硬件可重觸發單穩方式
- 方式2:頻率發生器方式
- 方式3:方波發生器
- 方式4:軟件觸發選通方式
- 方式5:硬件觸發選通方式
8254的控制字
注意:兩個控制字共用一個地址,由標示位來區分
方式控制字格式
讀回控制字格式
實驗電路連接
實驗流程圖
實驗代碼
;8254的編址空間起點是0600H IOYO EQU 0600H A8254 EQU IOYO+00H*2 B8254 EQU IOYO+01H*2 C8254 EQU IOYO+02H*2 CON8254 EQU IOYO+03H*2SSTACK SEGMENT STACKDW 32 DUP(?) SSTACK ENDSCODE SEGMENTASSUME CS:CODE, SS:SSTACK START: PUSH DSMOV AX,0000HMOV DS,AXMOV AX,OFFSET IRQ7MOV SI,003CHMOV [SI],AXMOV AX,CSMOV SI,003EHMOV [SI],AXCLIPOP DS;初始化主片8259MOV AL,11H ;初始化ICW1OUT 20H,ALMOV AL,08H ;初始化ICW2OUT 21H,ALMOV AL,04H ;初始化ICW3OUT 21H,ALMOV AL,01H ;初始化ICW4OUT 21H,ALMOV AL,6FH ;初始化OCW1OUT 21H,AL;初始化8254MOV DX,CON8254MOV AL,10H;方式控制字 00010000OUT DX,ALMOV DX,A8254MOV AL,04H;把計數初值4送入計數器A,每5次,送4OUT DX,ALSTI AA1: JMP AA1IRQ7: ;執行一次中斷后,原來8254A計數器的初值為0,為了重復該中斷,需要再輸入一次計數初值MOV DX,A8254MOV AL,04HOUT DX,ALMOV AX,014DH ;字符MINT 10HMOV AX,0120H ; 空格INT 10H;中斷結束命令 往地址20H送入20HMOV AL,20HOUT 20H,ALIRET ;返回中斷 CODE ENDSEND START補充
更多
獲取更多資料、代碼,微信公眾號:海轟Pro
回復 海轟 即可
總結
以上是生活随笔為你收集整理的汇编语言--8254定时/计数器实验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Lenovo G470 windows
- 下一篇: 疯狂的企鹅 CSU - 2147 (队列