当前位置:首页 > 微机原理-数字频率计
器2装入初值65535。8259的IR7作为中断入口。中断时先发读回命令,读回定时器2的计数值,即终值。由于8253计数器是从初值开始作减1计数的,所以当读取计数完成的计数器值后,应将计数初值减去计数终值才是真正的计数值。并且在读了之后还需重新赋初值,之后返回主程序进行显示,等待下一次中断。 3.关键程序段说明
1) 中断程序:先保护断点,每次中断发读回命令,读回终值用初值
减得之差,将其转换成十进制,恢复断点后返回。
2) 二进制转十进制程序:二进制数除以10所得余数即为十进制的低
位,并将其存入BUF。利用循环可一一将二进制数转换成相应几位十进制数。
3) 显示程序:六位数码管,先取字位偏移地址,找到要显示的数,
利XLAT命令找到数对应的字型码,输出字型、字位,延时,在显示下一个数码管数值。如此循环显示完六个数码管。 4.源程序清单
;============= 数字频率计的设计============= CODE SEGMENT
ASSUME CS:CODE, DS:CODE, ES:CODE ORG 3400H H8: JMP P8259 ZXK EQU 0FFDCH
;数码管字型口
ZWK EQU 0FFDDH ;数码管字位口
LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0~9 BUF DB ?,?,?,?,?,? ;六位数码管
Port0 EQU 0FFE0H ;8259芯片地址 ,A0=0
- 8 -
Port1 EQU 0FFE1H ;A0=1 P8259: CLI
CALL WP ;初始化显示“000000” MOV AX,OFFSET INT8259
;中断IR7入口地址
MOV BX,003CH ;IR7偏移地址 MOV [BX],AX MOV BX,003EH
MOV AX,0000H ;IR7段地址 MOV [BX],AX CALL FOR8259 CALL FOR8253 CALL FOR8253X STI PPP: CALL DIS JMP PPP
;============================================== ;对8259进行初始化 ;--------------------------------
FOR8259: MOV AL,13H ;写入ICW1,边沿触发,间隔8,单片,需要ICW4 MOV DX,Port0 ;上升沿产生中断 OUT DX,AL
MOV AL,08H ;ICW2,中断向量码 MOV DX,Port1 OUT DX,AL
MOV AL,09H ;ICW4, 一般全嵌套,缓冲,非自动结束
;循环显示等待中断
;对8259初始化设置 ;对8253初始化设置 ;对频率范围进行设置
- 9 -
OUT DX,AL
MOV AL,07FH ;IR7为中断入口,屏蔽其他 OUT DX,AL RET
;============================================== ;对8253进行初始化(产生一秒脉冲信号) ;--------------------------------------------------------- FOR8253: MOV DX,0FFFBH
MOV AL,36H ;T0,高->低,方式3,二进制 OUT DX,AL
MOV DX,0FFF8H ;T0产生1秒脉冲信号 MOV AL,100 OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,0FFFBH MOV AL,76H
;T1, 高->低,方式3,二进制
OUT DX,AL ;写控制字 MOV DX,0FFF9H MOV AX,18432 OUT DX,AL MOV AL,AH OUT DX,AL RET
;==============================================
;T1产生10毫秒方波
- 10 -
;对频率范围设置 ;-------------------------
FOR8253X: MOV DX,0FFFBH ;设置T2,高->底,方式0,二进制 MOV AL,0B0H OUT DX,AL
MOV DX,0FFFAH ;T2计数的最大值 MOV AX,65535 OUT DX,AL MOV AL,AH OUT DX,AL
MOV CX,10 ;延时 WAIT1: LOOP WAIT1 RET
;============================================== ;二 ——十进制转化
;---------------------------------------
BTRO: MOV CL,5 XOR CH,CH XOR DX,DX
MOV BX,10 MOV SI,OFFSET BUF
ADD SI,5 ;由低位到高位存储 NEXT: DIV BX
MOV [SI],DL ;除以10的余数存放低位 DEC SI
- 11 -
共分享92篇相关文档