用汇编实现8253定时计数器应用实验

用汇编实现8253定时计数器应用实验

要求

目的:
(1)掌握8253可编程定时器/计数器定时方法;
(2)掌握8253多级串联实现大时间常数的定时方法;
(3)掌握8086与8253的连接方法与控制方法。
内容:
(1)利用8086外接8253可编程定时器/计数器,通道0方式0实现对外部事件进行计数并显示;
(2)实现频率计功能,8253通道0通过标准脉冲信号(2000HZ)实现1秒定时中断(8259),
在8253通道1实现对外部频率信号进行计数,测得的计数值用2位数码管显示,测量范围0~99HZ。硬件电路已经搭建好。

要求1

C8253       	EQU 	9006H
P8253_0   	EQU  	9000H
LEDOUT		EQU		8000H
DATA SEGMENT
DATA  ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN: 
	    mov dx,c8253
	    mov al,00010000B
	    out dx,al
	    mov dx,P8253_0
	    mov al,0Fh
	    out dx,al
start:
	    mov dx,P8253_0
	    in al,dx
	    mov dx,LEDOUT
	    out dx,al
	    mov dx,P8253_0
	    in al,dx
	    jmp start
CODE ENDS
END BEGIN

要求2

P8253_0		EQU 	8000H			;8253地址
P8253_1		EQU 	8002H
C8253			EQU 	8006H


ICW1    	equ   00010011b     ; 单片8259, 上升沿中断, 要写ICW4
ICW2    	equ   01100000b     ; 中断号为60H
ICW4    	equ   00011001b     ; 工作在8086/88 方式
OCW1    	equ   11111110b     ; 中断屏蔽字,只响应INT0 中断

CS8259A  	EQU		9000h          ; 8259地址
CS8259B  	EQU		9002h

LEDOUT   	EQU 	0A000H  		; 数码管显示地址

DATA   SEGMENT


DATA   ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:CODE,DS:DATA,ES:DATA
BEGIN:
			MOV	AX,  DATA
			MOV	DS,  AX
			MOV	ES,  AX
			CLI
			MOV	SI,ICW2*4;中断控制程序地址
			LEA		AX,INT0
			MOV	[SI],AX
			MOV	AX,CS
			MOV	[SI+2],AX

			MOV	AL,ICW1
			MOV 	DX,CS8259A
			OUT		DX,AL
			MOV	AL,ICW2
			MOV	DX,CS8259B
			OUT 	DX,AL
			MOV	AL,ICW4
			OUT 	DX,AL
			MOV 	AL,OCW1
			OUT 	DX,AL
start:	;初始化通道0和通道1
			mov dx,c8253
			mov al,00110000B
			out dx,al
			MOV DX,C8253
			MOV AL,36H;00110110B
			OUT DX,AL
			MOV DX,P8253_0
			MOV  AL,0D0H
			OUT DX,AL			
			MOV AL,07H
			OUT	 DX,AL
			mov dx,c8253
			mov al,01110000B
			out dx,al
			mov dx,P8253_1
			mov al,64H
			out dx,al
			mov dx,P8253_1
			mov al,00H
			out dx,al
			sti
LI:			
			nop
			jmp LI
;中断服务程序
int0 proc
			cli    ;频率检测
			mov dx,P8253_1
			in al,dx
			xchg al,ah
			in al,dx
			xchg al,ah
			mov ah,64H
			sub ah,al
			mov dx,LEDOUT
			mov al,ah
			mov ah,0   ;进制转换
			mov bl,10 
			div bl  ;;div之后al为商,ah为余数
			mov cx,4  ;针对这个范围,商和余数均只占al和ah的低四位
lp:                                    ;把al的低四位变成al的高四位,在与ah相加即可
			rcl al,1
			loop lp
			add al,ah
			out dx,al
			mov dx,P8253_1

			mov dx,P8253_1
			mov al,64H
			out dx,al
			mov dx,P8253_1
			mov al,00H
			out dx,al
			
			mov dx,CS8259A  ;非自动结束方式,发送结束EOI命令
			mov al,20h
			out dx,al
			sti
			iret
int0 endp
CODE ENDS
END BEGIN


小结

感谢大佬们的帮助,感谢老师,顺便说一下,老师的记性是真的好。。。
本文章儿童节之前不允许抄袭转载

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章