利用8253 8255芯片实现频率计功能 源代码已写好在工程中 可正确运行
单片机源程序如下:
- LEDOUT EQU 0A000h ; 数码管
- P8253_0 EQU 8000H
- P8253_1 EQU 8002H
- C8253 EQU 8006H
- MODE0 EQU 34H
- MODE1 EQU 70H
- ICW1 EQU 00010011b ; 单片8259, 上升沿中断, 要写ICW4
- ICW2 EQU 01100000b ; 中断号为60H
- ICW4 EQU 00000011b ; 工作在8086/88 方式,自动结束
- OCW1 EQU 11111110b ; 中断屏蔽字,只响应INT0 中断
- CS8259A EQU 9000h ; 8259地址
- CS8259B EQU 9002h
- DATA SEGMENT
- R_cnt1 DW 2000
- R_cnt0 DW 1000
- ;Fre DW 0
- DATA ENDS
- CODE SEGMENT
- ASSUME CS:CODE,DS:DATA,ES:DATA
- BEGIN:
- MOV AX, DATA
- MOV DS, AX
- CALL P8259INIT
- CALL P8253INIT
- ;***********************************************
- P8259INIT PROC
- 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
- P8259INIT ENDP
- ;***********************************************
- P8253INIT PROC
- MOV DX,C8253
- MOV AL,MODE0
- OUT DX,AL
- MOV DX,P8253_0
- MOV AX, R_cnt0
- OUT DX,AL
- MOV AL,AH
- OUT DX,AL
-
- MOV DX,C8253
- MOV AL,MODE1
- OUT DX,AL
- MOV DX,P8253_1
- MOV AX, R_cnt1
- OUT DX,AL
- MOV AL,AH
- OUT DX,AL
- sti
- LP:
- nop
- jmp LP
-
- P8253INIT ENDP
- ;**********************************************
- INT0 PROC
- cli
- MOV DX,P8253_1
- IN AL,DX
- XCHG AL,AH
- IN AL,DX
- XCHG AL,AH
- MOV BX, R_cnt1
- SUB BX,AX
- MOV AX,BX
- MOV DX,LEDOUT
- MOV AH,0
- MOV BL,10
- DIV BL ;除之后al为商,ah为余数
- MOV CX,4
- LP:
- RCL AL,1
- LOOP LP
- OR AL,AH
- OUT DX,AL
- MOV DX,P8253_1
- MOV AX, R_cnt1
- OUT DX,AL
- MOV AL,AH
- OUT DX,AL
- sti
- iret
- INT0 ENDP
- CODE ENDS
- END BEGIN
复制代码
所有资料51hei提供下载:
8253频率计.rar
(29.46 KB, 下载次数: 44)
|