微機編程題
『壹』 微機原理的一道題,求過程
根據題目中的信息,計數器的時鍾頻率為2MHz,也就是說,計數器每計數1次所需的時間為1/2MHz=0.5us。如果要在計數到0時發出中斷請求信號,則需要設置計數器的初值為計數器計數到0所需的計數次數,即所需的時間除以計數器的時鍾頻率,即:
計數次數 = 所需的時間 / 計數器的時鍾頻率
程序中使用了二進制的控制字,控制字中的低8位表示計數器的初值,因此需要將計數次數轉換為計數器的初值,並將初值分別寫入計數器的低8位和高8位寄存器中,即:
初值 = 計數次數 / 0.5us = 2000 × 所需的時間
低8位 = 初值 mod 256
高8位 = 初值 / 256
因此,程序中的計算周期的代碼如下:
MOV AL, 00110110B ; 控制字,選擇計數器0、工作方式3(二進制),計數器初值使用計數器本身
OUT 43H, AL ; 將控制字寫入控制字寄存器
MOV AX, 2000 ; 計數次數 = 所需的時間 / 計數器的時鍾頻率
MOV CX, AX ; 將計數次數存入CX寄存器
MOV AL, AH ; 將初值的高8位存入AL寄存器
OUT 40H, AL ; 將初值的高8位寫入計數器高8位寄存器
MOV AL, CL ; 將初值的低8位存入AL寄存器
OUT 40H, AL ; 將初值的低8位寫入計數器低8位寄存器
; 計算周期
MOV AX, CX
MUL 500 ; 將計數次數乘以0.5us得到所需的時間
DIV 1000 ; 將時間轉換為毫秒
因此,中斷請求信號的周期為所需的時間除以計數器計數1次所需的時間,即:
周期 = 所需的時間 / 0.5us = (2000 × 所需的時間) / 0.5us = 4000 × 所需的時間
程序中計算周期的代碼已將所需的時間轉換為毫秒,因此,中斷請求信號的周期為4000乘以計算出的時間,即:
周期 = 4000 × (所需的時間,單位為ms)
需要注意的是,程序中沒有給出計算所需的時間的代碼,因此需要根據具體情況進行計算。