实验68254定时器计数器应用实验.docx

上传人:b****8 文档编号:28076755 上传时间:2023-07-08 格式:DOCX 页数:21 大小:87.56KB
下载 相关 举报
实验68254定时器计数器应用实验.docx_第1页
第1页 / 共21页
实验68254定时器计数器应用实验.docx_第2页
第2页 / 共21页
实验68254定时器计数器应用实验.docx_第3页
第3页 / 共21页
实验68254定时器计数器应用实验.docx_第4页
第4页 / 共21页
实验68254定时器计数器应用实验.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

实验68254定时器计数器应用实验.docx

《实验68254定时器计数器应用实验.docx》由会员分享,可在线阅读,更多相关《实验68254定时器计数器应用实验.docx(21页珍藏版)》请在冰豆网上搜索。

实验68254定时器计数器应用实验.docx

实验68254定时器计数器应用实验

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

6.1实验目的

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

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

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

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

6.3实验内容及说明

1)计数应用实验。

2)定时应用实验。

3)电子发声实验

注意:

在断电情况,连接好实验线路,检查无误后,通电进行实验。

实验完毕,先断电,再拆线,并将导线整理好。

1.计数应用实验:

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

8254计数应用参考连接线图如图6-1。

图6-18254计数应用实验参考接线图

;;计数应用实验

;;filename:

8254-1.asm

;;----PCI卡分配的第3个I/O空间

MY8254_COUNT0EQU0E440H

MY8254_COUNT1EQU0E441H

MY8254_COUNT2EQU0E442H

MY8254_MODEEQU0E443H

;;--PCI卡分配的第1个I/O空间

INTCSR_BYTE0EQU0DC38H

INTCSR_BYTE1EQU0DC39H

INTCSR_BYTE2EQU0DC3AH

INTCSR_BYTE3EQU0DC3BH

IMB4_BYTE3EQU0DC1FH

DATASEGMENT

CSBAKDW?

IPBAKDW?

MKBAKDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

CLI

MOVAX,DATA

MOVDS,AX

MOVDX,INTCSR_BYTE0

;;设置pci卡

MOVAL,00H

OUTDX,AL

MOVDX,INTCSR_BYTE1

MOVAL,1FH

OUTDX,AL

MOVDX,INTCSR_BYTE2

MOVAL,3FH

OUTDX,AL

MOVDX,INTCSR_BYTE3

MOVAL,00H

OUTDX,AL

MOVAX,0000H

MOVES,AX

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

MOVDI,01C4H

;irq9,INT71h,01c4=71h*4

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

MOVAX,ES:

[DI]

MOVIPBAK,AX;IP

MOVAX,OFFSETMYINT

CLD

STOSW

MOVAX,ES:

[DI];CS

MOVCSBAK,AX

MOVAX,SEGMYINT

STOSW

INAL,0A1H

MOVMKBAK,AL

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

ANDAL,0fdh;irq9

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

OUT0A1H,AL

STI

MOVDX,MY8254_MODE

;CLK=KK1-//实际接线kk1-

MOVAL,17H

;0001,0111b:

计数器0,读/写低8位;方式3,十进制数

OUTDX,AL

MOVDX,MY8254_COUNT0

MOVAL,5

;;写入计数初值3个高电平,2个低电平

OUTDX,AL

A1:

NOP

CALLBREAK

JMPA1

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

MYINT:

PUSHDS

PUSHAX

PUSHDX

MOVDX,IMB4_BYTE3

;清PCI卡中断标志

INAL,DX

MOVDX,INTCSR_BYTE2

MOVAL,3FH

OUTDX,AL

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

MOVAL,61H

;irq9从片D1,主片D2

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

OUT0A0H,AL

MOVAL,62H

OUT20H,AL

MOVAX,0E4DH

;显示字母M加一空格

INT10H

MOVAX,0E20H

INT10H

POPDX

POPAX

POPDS

IRET

BREAKPROCNEAR

PUSHDS

MOVAH,06H

MOVDL,0FFH

INT21H

JERETURN

POPDS

CLI

MOVAL,MKBAK

OUT0A1H,AL

MOVAX,0000H

MOVES,AX

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

MOVDI,01C4H

;irq9INT71H,01C4H=71H*4

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

MOVAX,IPBAK

CLD

STOSW

MOVAX,CSBAK

STOSW

MOVDX,INTCSR_BYTE1

;pci卡设置

MOVAL,00H

OUTDX,AL

STI

MOVAX,4C00H

INT21H

RETURN:

POPDS

RET

BREAKENDP

CODEENDS

ENDSTART

2.定时应用实验

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

8254定时应用实验参考连线图:

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

;8254定时应用实验

;filename:

8254-2.asm

;;PCI卡分配的第3个I/O空间

MY8254_COUNT0EQU0E440H

MY8254_COUNT1EQU0E441H

MY8254_COUNT2EQU0E442H

MY8254_MODEEQU0E443H

;;PCI卡分配的第1个I/O空间

INTCSR_BYTE0EQU0DC38H

INTCSR_BYTE1EQU0DC39H

INTCSR_BYTE2EQU0DC3AH

INTCSR_BYTE3EQU0DC3BH

IMB4_BYTE3EQU0DC1FH

DATASEGMENT

CSBAKDW?

IPBAKDW?

MKBAKDB?

SEC1DB30H;显示秒的个位

SEC0DB31H;显示秒的十位

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

CLI

MOVAX,DATA

MOVDS,AX

MOVDX,INTCSR_BYTE0

MOVAL,00H

OUTDX,AL

MOVDX,INTCSR_BYTE1

MOVAL,1FH

OUTDX,AL

MOVDX,INTCSR_BYTE2

MOVAL,3FH

OUTDX,AL

MOVDX,INTCSR_BYTE3

MOVAL,00H

OUTDX,AL

MOVAX,0000H

MOVES,AX

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

MOVDI,01C4H

;irq9,INT71h,01c4=71h*4

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

MOVAX,ES:

[DI]

MOVIPBAK,AX;IP

MOVAX,OFFSETMYINT

CLD

STOSW

MOVAX,ES:

[DI];CS

MOVCSBAK,AX

MOVAX,SEGMYINT

STOSW

INAL,0A1H

MOVMKBAK,AL

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

ANDAL,0fdh;irq9

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

OUT0A1H,AL

MOVAX,0E30H

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

INT10H

MOVAX,0E30H

INT10H

MOVAX,0E0DH

INT10H

MOVDX,MY8254_MODE

;CLK=10K

MOVAL,35H

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

;十进制计数方式

OUTDX,AL

MOVDX,MY8254_COUNT0

;写入计数值10000

MOVAL,0

OUTDX,AL

OUTDX,AL

STI

A1:

NOP

CALLBREAK

JMPA1

MYINT:

PUSHDS

PUSHAX

PUSHDX

MOVAX,DATA

MOVDS,AX

MOVDX,IMB4_BYTE3

;;清PCI卡中断标志

INAL,DX

MOVDX,INTCSR_BYTE2

MOVAL,3FH

OUTDX,AL

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

MOVAL,61H

;;irq9从片D1,主片D2

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

OUT0A0H,AL

MOVAL,62H

OUT20H,AL

MOVAH,0EH

MOVAL,SEC1

INT10H

MOVAH,0EH

MOVAL,SEC0

INT10H

MOVAX,0E0DH

;只回车,不换行,还在原处

INT10H

INCSEC0

;秒的个位+1

CMPSEC0,3AH

;个位计数到10

JZB3

JMPB1

B3:

INCSEC1

MOVSEC0,30H

CMPSEC1,36H;十位计数到6

JZB4

JMPB1

B4:

MOVSEC1,30H;计到60,重新到零

B1:

POPDX

POPAX

POPDS

IRET

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

BREAKPROCNEAR

PUSHDS

MOVAH,06H

MOVDL,0FFH

INT21H

JERETURN

POPDS

CLI

MOVAL,MKBAK

OUT0A1H,AL

MOVAX,0000H

MOVES,AX

MOVDI,01C4H

;irq9INT71H,01C4H=71H*4

MOVAX,IPBAK

CLD

STOSW

MOVAX,CSBAK

STOSW

MOVDX,INTCSR_BYTE1

MOVAL,00H

OUTDX,AL

STI

MOVAX,4C00H

INT21H

RETURN:

POPDS

RET

BREAKENDP

CODEENDS

ENDSTART

3.电子发声实验:

1)用实验系统扬声器做发声实验

用信号源1MHz作为扬声器发声基准时钟,计数器0设置为工作方式3,由表格查出每个音符对应的时间常数送给计数器0,以确定音调,驱动扬声器产生音乐。

8254电子发声实验参考图如图6-3所示。

(发声频率已设定,但发声时间是通过软件延时控制的,因此发声时间随不同档次PC机而变化,可以通过调节延时子程序参数来调节发声时间)

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

;用实验系统扬声器做发声实验

MY8254_COUNT0EQU0E440H

MY8254_COUNT1EQU0E441H

MY8254_COUNT2EQU0E442H

MY8254_MODEEQU0E443H

DATASEGMENT

DTABLEDB33H,33H,3DH,33H,26H,26H,26H,26H,2DH,2DH,26H,2DH,33H

DB33H,33H,33H,33H,33H,4DH,45H,3DH,3DH,3DH,45H,4DH,45H

DB45H,45H,45H,45H,45H,45H,45H,33H,33H,3DH,33H,26H,26H

DB26H,28H,2DH,2DH,26H,26H,33H,33H,33H,33H,45H,3DH,39H

DB39H,39H,52H,4DH,4DH,4DH,4DH,4DH,4DH,4DH,4DH,2DH,2DH

DB26H,26H,26H,26H,26H,26H,28H,28H,2DH,28H,26H,26H,26H

DB26H,2DH,28H,26H,2DH,2DH,33H,3DH,4DH,45H,45H,45H,45H

DB45H,45H,45H,45H,33H,33H,3DH,33H,26H,26H,26H,28H,2DH

DB2DH,26H,2DH,33H,33H,33H,33H,33H,33H,45H,3DH,39H,39H

DB39H,52H,4DH,4DH,4DH,4DH,4DH,4DH,4DH,4DH,00H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETDTABLE

MOVAL,[BX]

MOVAH,00H

A1:

MOVDL,0AH;CLK=1MHz

MULDL

PUSHAX

MOVDX,MY8254_MODE

MOVAL,36H

;;0011,0110B计数器0,读写低高字节,

;;方式3,二进制

OUTDX,AL

POPAX

MOVDX,MY8254_COUNT0

OUTDX,AL

MOVAL,AH

OUTDX,AL

INCBX

MOVAH,00H

MOVAL,[BX]

TESTAL,0FFH

JZA2

PUSHAX

CALLDALLY

CALLBREAK

POPAX

JMPA1

A2:

MOVBX,OFFSETDTABLE

MOVAL,[BX]

MOVAH,00H

JMPA1

DALLY:

MOVCX,0F7FFH;根据不同机器配置修改此值

D1:

MOVAX,0D00H

D2:

DECAX

JNZD2

LOOPD1

BREAKPROCNEAR;检测是否有键按下

MOVAH,06H

MOVDL,0FFH

INT21H

JERETURN

MOVAX,4C00H

INT21H

RETURN:

RET

BREAKENDP

CODEENDS

ENDSTART

2)用PC机扬声器做发声实验

有三个计数器在PC机中集成,它们的功能、操作完全与8254兼容。

三个计数器的端口地址分别是40H,41H,42H。

控制寄存器地址为43H。

PC扬声器发声需要计数器2输出OUT2和端口61H(8255PB口)的D1、D0的控制,只有都为“1”时扬声器才可以发声。

我们可以将61H的D1、D0两位置1,然后改变计数器2的初值,使OUT2输出不同的频率,从而改变扬声器发声的音调。

PC机中定时器结构框图如图6-X所示。

具体实验步骤如下:

(1)编写程序,通过设置PC机内计数/定时器2,实现PC机内扬声器的发声

(2)注意退出时要恢复端口61H原来的值

(3)运行程序,观察发声是否正常

(4)若音乐节拍发声时间较长或较短,可以修改延时子程序中的计数值,调整发声时间到最佳。

图6-4PC机中定时器结构框图

;filename:

8254-3.asm

;用pc扬声器作发声实验

PC8254_COUNT0EQU40H

PC8254_COUNT1EQU41H

PC8254_COUNT2EQU42H

PC8254_MODEEQU43H

DATASEGMENT

BAKDB?

DTABLEDB33H,33H,3DH,33H,26H,26H,26H,26H,2DH,2DH,26H,2DH,33H

DB33H,33H,33H,33H,33H,4DH,45H,3DH,3DH,3DH,45H,4DH,45H

DB45H,45H,45H,45H,45H,45H,45H,33H,33H,3DH,33H,26H,26H

DB26H,28H,2DH,2DH,26H,26H,33H,33H,33H,33H,45H,3DH,39H

DB39H,39H,52H,4DH,4DH,4DH,4DH,4DH,4DH,4DH,4DH,2DH,2DH

DB26H,26H,26H,26H,26H,26H,28H,28H,2DH,28H,26H,26H,26H

DB26H,2DH,28H,26H,2DH,2DH,33H,3DH,4DH,45H,45H,45H,45H

DB45H,45H,45H,45H,33H,33H,3DH,33H,26H,26H,26H,28H,2DH

DB2DH,26H,2DH,33H,33H,33H,33H,33H,33H,45H,3DH,39H,39H

DB39H,52H,4DH,4DH,4DH,4DH,4DH,4DH,4DH,4DH,00H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

INAL,61H

MOVBAK,AL

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETDTABLE

MOVAL,[BX]

MOVAH,00H

A1:

MOVDL,20H

MULDL;将值*20h=32al*dl->ax

PUSHAX

MOVDX,PC8254_MODE

MOVAL,0B6H;1011,0110B定

;;时器2,读写高低字节,方式3,二进制

OUTDX,AL

POPAX

MOVDX,PC8254_COUNT2

OUTDX,AL

MOVAL,AH

OUTDX,AL

MOVAL,BAK

ORAL,03H;端口61H的D1,D0置1

OUT61H,AL

INCBX

MOVAH,00H

MOVAL,[BX]

TESTAL,0FFH;是否结束,到00h

JZA2

PUSHAX

CALLDALLY

CALLBREAK

POPAX

JMPA1

A2:

MOVBX,OFFSETDTABLE

MOVAL,[BX]

MOVAH,00H

JMPA1;重新开始

DALLY:

MOVCX,0F7FFH

;延时,改变延时时间看效果

D1:

MOVAX,0D00H

D2:

DECAX

JNZD2

LOOPD1

BREAKPROCNEAR

MOVAH,06H;是否有键按下?

MOVDL,0FFH

INT21H

JERETURN

ANDAL,0FDH

;61HD1位置0,使扬声器不发声

OUT61H,AL

;d0gate2,d1在与门位置

MOVAL,AH

;这是一个无效语句,被下句冲掉?

MOVAL,BAK;恢复原值。

OUT61H,AL

MOVAX,4C00H

INT21H

RETURN:

RET

BREAKENDP

CODEENDS

ENDSTART

如有侵权请联系告知删除,感谢你们的配合!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1