西科大微机原理实验四(定时器程序设计)

实验目的: 1.掌握 8253 的工作原理及其应用编程。

实验步骤与任务: 定时器控制原理(预习)

8253 的地址为:40H~43H;通道 0 地址 40H,控制口地址 43H。

PC 中 8253 通道 0 的输出将触发 INT08H,可利用此中断实现秒表应用。设计数初值为 0
(相当于将 1193181.6Hz 进行 65536 分频),则每秒将产生 18.2065 个中断。程序累计中断的
次数,则可精确实现秒延时,在屏幕上以秒表的形式显示时间。若改变计数初值(分频因子),
秒表显示则相应改变。
f 频率:1.1931816*1000000=12 34DE H
若要使中断频率为 18.2065Hz,则 8253 计数初值为 0000H。
对于 18.2065Hz,N=计数初值=1193181.6/18.2065=65536=0000H。
对于 1000Hz,N=计数初值=1193181.6/1000=1193。
改变 8253 的输出频率,即改变中断频率,秒表计时及显示刷新将改变。
初始化 8253
MOV AL, 00110110B ;初始化,8253 计数器 0,模式 3,初值 16 位,二进制
OUT 43H, AL ;8253 的控制口地址 43H
MOV AX, 0000H ;计数初值
OUT 40H, AL ;送计数初值低位字节,8253 的计数器 0 的地址 40H
MOV AL, AH
OUT 40H, AL ;送计数初值高位字节

任务一(占总分 30%): 
1.编辑
利用编辑器(记事本,也可采用其它编辑器)建立一个名为 ASM41.ASM 的文本文件,内容
如下:
;说明在本模块中将用到的由外部(LIB_TIM 模块)定义的过程和变量
EXTRN TIM_INIT:PROC ;外部过程,其完成秒表的初始化操作
EXTRN TIM_DISP:PROC ;外部过程,其完成秒表的刷新显示
EXTRN TIM_DEINIT:PROC ;外部过程,其完成恢复到秒表初始化前的状态
EXTRN SEC_VAL:BYTE ;外部变量,其值非 0 表示延时间到
;定义访问键盘的宏
IR0 INT
INT08H 中断
CLK0
OUT0
GATE0
; 1.判断键盘是否有输入(ZF=0 有,ZF=1 无)
TEST_KEY MACRO
MOV AH,01H
INT 16H
ENDM
; 2.读键盘输入(AL=键 ASCII 码)
GET_KEY MACRO
MOV AH,00H
INT 16H
ENDM
;定义数据段
DATA SEGMENT PARA PUBLIC 'DATA'
DATA ENDS
;定义堆栈段
STACK SEGMENT PARA STACK 'STACK'
DB 200H DUP(?)
STACK ENDS
;定义代码段
CODE SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA
START: MOV AX,DATA ;初始化段值
MOV DS,AX
MOV ES,AX
CALL TIM_INIT ;初始化秒表
MAIN_LOOP:
;--------------键盘控制-------------------
TEST_KEY ;判断键盘是否按键?
JZ CHECK_SEC_VAL

猜你喜欢

转载自blog.csdn.net/Myon5/article/details/135013785