实验6_8254定时器计数器应用实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六8253/4定时器/计数器应用实验

实验目的

(1) 掌握8254的工作方式及应用编程(参考教材)

(2) 掌握8254的典型应用电路的接法

(3) 学习8254在PC系统中的典型应用方法

实验设备 PC机一台,TD-PIT-B实验装置一套。

实验内容及说明

1)计数应用实验。2)定时应用实验。3)电子发声实验

注意:在断电情况,连接好实验线路,检查无误后,通电进行实验。实验完毕,先断电,再拆线,并将导线整理好。

1. 计数应用实验:

编写程序,将8254的计数器0设置为方式3,计数值为十进制5,用微动开关KK1-作为CLK0时钟,OUT0连接IRQ,每当KK1-按动5次后产生中断请求,在屏幕上显示字符“M”。8254计数应用参考连接线图如图6-1。

总线接口

+5V

KK1--

IRQ 图6-1 8254计数应用实验参考接线图

;; 计数应用实验

;;filename :

;; ----PCI卡分配的第3个I/O空间MY8254_COUNT0 EQU 0E440H

MY8254_COUNT1 EQU 0E441H

MY8254_COUNT2 EQU 0E442H

MY8254_MODE EQU 0E443H

;;--PCI卡分配的第1个I/O空间INTCSR_BYTE0 EQU 0DC38H INTCSR_BYTE1 EQU 0DC39H

INTCSR_BYTE2 EQU 0DC3AH

INTCSR_BYTE3 EQU 0DC3BH

IMB4_BYTE3 EQU 0DC1FH

DATA SEGMENT

CSBAK DW

IPBAK DW

MKBAK DB

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: CLI

MOV AX,DATA

MOV DS,AX

MOV DX,INTCSR_BYTE0

;; 设置pci卡

MOV AL,00H

OUT DX,AL

MOV DX,INTCSR_BYTE1

MOV AL,1FH

OUT DX,AL

MOV DX,INTCSR_BYTE2

MOV AL,3FH

OUT DX,AL

MOV DX,INTCSR_BYTE3

MOV AL,00H

OUT DX,AL

MOV AX,0000H

MOV ES,AX

;---------------------------------------------------MOV DI, 01C4H

; irq 9 , INT 71h, 01c4= 71h*4

;--------------------------------------------------- MOV AX,ES:[DI]

MOV IPBAK,AX ;IP

MOV AX,OFFSET MYINT

CLD

STOSW

MOV AX,ES:[DI] ;CS

MOV CSBAK,AX

MOV AX,SEG MYINT

STOSW

IN AL,0A1H

MOV MKBAK,AL

;---------------------------------------------------

AND AL,0fdh ; irq9

;---------------------------------------------------

OUT 0A1H,AL

STI

MOV DX,MY8254_MODE

;CLK=KK1- 定时应用实验

编写程序,将8254的计数器0设置为方式2,用信号源10kHz作为CLK0时钟,计数值为十进制0(即最大计数值10000),OUT0连接IRQ,这样每计时1s后产生中断请求,制作一个秒表显示,每计时60秒自动归零。8254定时应用实验参考连线图:

总线接口

+5V

10KHZ

(接信号源)

IRQ

图6-2 8254定时应用实验参考接线图

; 8254定时应用实验

;filename :

;; PCI卡分配的第3个I/O空间MY8254_COUNT0 EQU 0E440H MY8254_COUNT1 EQU 0E441H MY8254_COUNT2 EQU 0E442H MY8254_MODE EQU 0E443H

;; PCI卡分配的第1个I/O空间INTCSR_BYTE0 EQU 0DC38H INTCSR_BYTE1 EQU 0DC39H INTCSR_BYTE2 EQU 0DC3AH INTCSR_BYTE3 EQU 0DC3BH

IMB4_BYTE3 EQU 0DC1FH

DATA SEGMENT

CSBAK DW

IPBAK DW

MKBAK DB

SEC1 DB 30H ; 显示秒的个位SEC0 DB 31H ; 显示秒的十位DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: CLI

MOV AX,DATA

MOV DS,AX

MOV DX,INTCSR_BYTE0

MOV AL,00H

OUT DX,AL

MOV DX,INTCSR_BYTE1

MOV AL,1FH

OUT DX,AL

MOV DX,INTCSR_BYTE2

MOV AL,3FH

OUT DX,AL

MOV DX,INTCSR_BYTE3

MOV AL,00H

OUT DX,AL

MOV AX,0000H

MOV ES,AX

;---------------------------------------------------

MOV DI, 01C4H

; irq 9 , INT 71h, 01c4= 71h*4

;---------------------------------------------------

MOV AX,ES:[DI]

MOV IPBAK,AX ;IP

MOV AX,OFFSET MYINT

CLD

STOSW

MOV AX,ES:[DI] ;CS

MOV CSBAK,AX

MOV AX,SEG MYINT

STOSW

IN AL,0A1H

MOV MKBAK,AL

;---------------------------------------------------

AND AL,0fdh ; irq9

;---------------------------------------------------

OUT 0A1H,AL

MOV AX,0E30H

; 显示00回车,注意没有换行,同在一行显示

INT 10H

MOV AX,0E30H

INT 10H

MOV AX,0E0DH

INT 10H

MOV DX,MY8254_MODE

; CLK=10K

MOV AL, 35H

; 0011, 0101B 计数器0,读写低/高位方式2 ;十进制计数方式

OUT DX, AL

MOV DX,MY8254_COUNT0

; 写入计数值10000

MOV AL,0

OUT DX,AL

OUT DX,AL

STI

A1: NOP

CALL BREAK

JMP A1

MYINT: PUSH DS

PUSH AX

PUSH DX

MOV AX,DATA

MOV DS,AX

MOV DX,IMB4_BYTE3

;; 清PCI卡中断标志

IN AL,DX

MOV DX,INTCSR_BYTE2

MOV AL,3FH

OUT DX,AL

;---------------------------------------------------

相关文档
最新文档