微机原理8253,8253实现LED一秒亮一秒灭,CLK0接31.25khz时钟信号,计数初值怎么求?

更多“设定时/计数器8253的通道2工作于方式3(方波发生器),若计数初值采用BCD码计数,数值为100H,GATE2=1,输入时钟频率为10KHz,则…”相关的问题

A.计数器0工作在方式5

B.计数器1工作在方式3

C.计数器2工作在方式5

D.计数器2工作在方式3

某一测控系统要使用一个连续方波信号,如果使用8253可编程定时/计数器来实现此功能,则8253应工作于

某测控系统要产生一单稳信号,若使用8253可编程定时/计数器来实现此功能,则8253应工作在

让8253的定时器/计数器0工作于方式3,产生方波输出。设CLK的时钟频率为1MHz,为了得到1KHz的方波,则时间常数的值应为(计数值为BCD码格式)__________

使用定时器/计数器1设置串行通信的波特率时,应把定时器/计数器1设定作方式2

计数器通道0工作在方式2,计数的初值为1000H,当计数值计到0后,计数器的值为

8253计数器计数时,最大计数初始值为

若要读8253定时器/计数器0的计数值,正确的操作是_______

A.向控制口送锁存命令,读计数器0

B.向计数器0通道送锁存命令,读计数器0

D.读计数器0,向计数器0送锁存命令

当SCON=0x80时,串行接口工作于

设8254计数器1工作于方式2,输出信号高电平与低电平宽度的比值为8,则计数器1的计数初值为()

设8254计数器1工作于方式2,输出信号高电平与低电平宽度的比值为8,则计数器1的计数初值为()

}

《微机原理-8253.》由会员分享,可在线阅读,更多相关《微机原理-8253.(28页珍藏版)》请在人人文库网上搜索。

1、学习接口电路的要点 结构:有几个端口,端口地址的设置数据寄存器端口命令寄存器端口状态寄存器端口 引脚:如何与CPU 和外设连接。有几种工作方式,每种工作方式的应用场合工作方式控制字、状态字如何定义的。 如何写入控制字,如何读出状态字。应用举例中的硬件连接、软件编程。一、8253的结构及引脚RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2VCCGND内部数据总线 是一个三态、双向8位寄存器,用于将8253与系统总线D7D0 相连。 它有三个基本功能: 1、CPU 通过数据总线缓冲器向8253写入确定工作方式的命令字。 2、向某一计数器写入计数初值

2、。 3、从某一计数器读取当前的计数值。 它是8253内部的控制电路,当片选信号CS =0 时,由A1、A0信号 选择内部寄存器,由读信号 RD 和写信号 WR 完成对 选定寄存器 的读写操作。 当片选信号 CS =1 时,数据总线缓冲器与系统数据线脱开。 通常 RD 接 系统总线 IOR WR 接 系统总线 IOW 端口地址选择线 A0、A1 接系统总线 A0、A1。 D7

3、计数器001计数器110计数器211控制寄存器00锁存计数器的当前值,以便读出检查01只读/写 低8位计数值10只读/写 高8位计数值11先读/写低8位,后读/写高8位计数值000方式0001方式1010方式2011方式3100方式4101方式5写入数的范围最大值00二进制数0000HFFFFH655361十进制数BCD 码002、8253 初始化编程 步骤 向控制字寄存器写入控制字,对使用的计数器规定工作方式。 向使用的计数器 写入计数初值。例题:设计计数器1 工作在方式1,按BCD码计数计数值为4000。设8253的端口地址为 E0HE3H。试写出初始化程序段。 控

1、计数器0:用于系统的报时和磁盘驱动器的马达定时。选择工作方式3,每55ms向中断控制器的 IRQ0端发一次中断请求信号。初始化程序如下: 2、计数器1:用于动态存储器的刷新 ,占用DMA 的0通道。选择工作方式2,每15.2 向DMA发一次DMA请求信号。初始化程序如下:8253 的计数器 0 的初始化程序8253 的计数器 1 的初始化程序8253 的计数器2 的应用3、计数器2:用于产生 近似 1KHZ 的方波,由OUT2 端送到扬声器。由图可知,门控位 GATE2 受8255 PB0的控制,PB0=1时,OUT2 输出 1KHZ 的方波至扬声器。发声还受8255 PB1 的控制。声响子程序过程名为 BEEP,入口地址为FFA08H。入口参数:BL=6 发长声,BL=1 发短声。8255 PB 口地址为61H。计数器2 的控制字 CW =

}

《微机原理与接口技术》课程设计

一、课程设计的任务和目的

课程设计题目:音乐播放器

课程设计的实现目的:本课程设计主要是通过汇编语言用软件编程的方法实现简单的音乐播放功能。通过在《微机原理与接口技术》课程上所学的汇编知识和芯片相关知识,来完成本课程设计;用汇编程序完成键控音乐播放器的,用定时器来产生声音。该播放器有若干首歌曲可以选择,开始时输出说明,要用户选择要播放的歌曲,然后根据用户按键进行播放、退出或出错提示。通过课程设计环节来加强对所学知识的理解和应用。

在微机及控制系统中,经常要用到定时信号。如系统的日历时钟,动态存储器刷新。对外部执行机构控制时也需要定时中断、定时检测、定时查询等。定时的方法主要是两种:

软件定时:利用指令的执行时间设计循环程序,使CPU 执行延迟子程序的时间就是定时时间。缺点:执行延迟时,CPU 一直被占用,降低了CPU 的效率。

硬件定时:用计数器/定时器作为主要硬件,在软件简单指令的控制下产生精确的时间延迟。突出优点为计数时不占用CPU 时间,如利用定时器/计数器产生中断信号,可建立多作业环境,提高了CPU 效率。

作为定时器可用8253或者8254,二者功能基本相同,知识工作的最高频率不一样。本实验就采用了8254,其主要功能为:

(1)每片上有3 个独立的16 位的减计数器通道。

(2)对于每个计数器,都可以单独作为定时器或计数器使用,并且都可以按照二进制或十进制来计数。

(3)每个通道都有6 种工作方式,都可以通过程序设置或改变。(4)每个计数器的速率可高达10MHz。

主要部分有:数据总线缓冲器、读/写控制逻辑、控制字寄存器、计数通道0#、1#、2#: 内部结构如下图:

《微机原理与接口技术》课程设计

8254芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图所示。8254芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各个引脚及其所传送信号的情况,介绍如下:

(1)D7~D0:双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态信息。

(2)RD:来自于CPU的读控制信号输入引脚,低电平有效。(3)WR:来自于CPU的写控制信号输入引脚,低电平有效。(4)CS:芯片选择信号输入引脚,低电平有效。

(5)A1、A0:地址信号输入引脚,用以选择8254芯片的通道及控制字寄存器。(6).VCC及GND:+5V电源及接地引脚。

(7)CLKi: i=0,1,2,第i个通道的计数脉冲输入引脚,8254规定,加在CLK引脚的输入时钟信号的频率不得高于2.6MHZ,即时钟周期不能小于380ns。

《微机原理与接口技术》课程设计

(8)GATEi: i=0,1,2,第i个通道的门控信号输入引脚,门控信号的作用与通道的工作方式有关。

(9)OUTi:i=0,1,2,第i个通道的定时/计数到信号输出引脚,输出信号的形式由通道的工作方式确定,此输出信号可用于触发其它电路工作,或作为向CPU发出的中断请求信号。

说明 :(1)8254每个通道对输入CLK按二进制或二十进制从预置值开始减1计数,减到0时从OUT输出一个信号。

(2)8254编程时先写控制字,再写时间常数。

《微机原理与接口技术》课程设计

(1)方式0:计数结束产生中断方式

当写入控制字后,OUT变为低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。

(2)方式1:可编程单次脉冲方式

当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。(3)方式2:频率发生器方式

当初值装入时,OUT变为高;计数结束,OUT变为低。该方式下如果计数未结束,但GATE为低时,立即停止计数,强制OUT变高,当GATE再变高时,便启动一次新的计数周期。

(4)方式3:方波发生器

当装入初值后,在GATE上升沿启动计数,OUT 输出高电平; 当计数完成一半时,OUT输出低电平。方式3与方式2的工作方式类似,也是在初始化完成后能重复循环计数,只是输出的波形不同。

(5)方式4:软件出发选通方式

进入工作方式4,OUTi输出高电平。装入计数值n后,如果GATE为高电平,则立即开始减“1”计数,直到计数值减到“0”为止,OUTi输出宽度为一个CLKi周期的负脉冲。由软件装入的计数值只有一次有效,如果要继续操作,必须重新置入计数初值n。如果在操作的过程中,GATE变为无效,则停止减“1”计数,到GATE再次有效时,重新从初值开始减“1”计数。

(6)方式5:硬件触发方式计数

进入工作方式5,OUTi输出高电平,硬件触发信号由GATE端引入。因此,开始时GATE应输入为0,装入计数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”,OUTi将输出负脉冲,其宽度固定为一个CLKi周期,表示定时时间到或计数次数到。

所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。

CPU通过对定时器的通道2(端口地址为42)进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低控制通道2门控的开断。以产生特殊的音响。当定时器接收的计数值为533H时,能产生896Hz的声音,因此产生其他频率的计数值就可算出来:

《微机原理与接口技术》课程设计

在送出频率计数值之前,还要给方式寄存器送一个方式值,该数决定对哪一个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制码还是BCD码。其位组合的格式如下:

当通道2用于发声时,采用的是模式3,在模式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。

产生指定频率声音的程序段如下:

从定时器输出的方波信号,经功率放大和滤波后驱动扬声器。送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PA1位和定时器的输出信号同时作为与门的输入,PA0和PA1位可由程序决定为0还是为1。显然只有PA0和PA1都是1时,才能使扬声器发出声音。控制音长的时间可以简单地通过反复执行指令来得到。我们知道执行2801次LOOP指令约需要10MS的时间。因此用10MS的倍数值来控制扬声器开关的时间间隔,就可控制发声的音长了。实现程序如下:

《微机原理与接口技术》课程设计

四、功能流程图及子程序说明

MAIN程序:MAIN程序是总程序,输出说明,等待用户按键并读取键值。根据不同的按键选择调用播音子程序播放不同的歌曲。

开始输出说明读取按键是‘1’?N是‘2’?Y播放曲1Y播放曲2N是‘3’?Y播放曲3N是‘0’?Y结束Y选择无效程序总流程图

2、音乐播放子程序流程图

PLAY子程序:PLAY子程序是播音子程序,SI指向音节表中的频率,BP指向音节表中的时间。从SI的指向的音节表中取一个频率,只要不是-1,即有效就再读取时间,然后计算计数初值送入计数器,产生各种频率。开启扬声器,根据所取的时间调用若干次延时子程序。这段时间扬声器就发出该频率的声音,延时结束,就关闭扬声器,调用音节之间的小延时程序。最后修改SI和BP,指向下一个频率,重复上面的工作

DELAY子程序和DELAY_OFF子程序:两个都是子程序,采用空操作循环多次的方法,只是第二个延时时间较短,大概为5ms。

《微机原理与接口技术》课程设计

开始保护现场曲N各音符频率设置曲N各音符时间设置读取频率F频率是-1 ?Y恢复现场N读取时间T结束返回计算机计数次数送计数器,产生该频率F信号启动喇叭延时T关闭喇叭音符间延时播音流程图

如果按错了键,会出现如下界面:

《微机原理与接口技术》课程设计

如果选择正确,将出现如下界面:

【1】李长青.微机原理与接口技术.徐州:中国矿业大学出版社,2006 【2】沈美明.汇编语言程序设计实验教程.北京:清华大学出版社,2002年 【3】周明德.微机原理与接口技术.北京:人民邮电出版社,2002年

在本次设计中,可以说是一次成功的经验。在我们学完了《微型计算机原理与接口技术》这门课的基础上来做这个设计,通过设计后,使我们对这门课的理论知识的理解有很大程度上的加强。微机原理这门课程本身是一门实验性和工程性很强的专业技术课,因此不仅要重视理论教学,更应注意实践技能的培养和训练。课程设计是这门课程的一个重要环节,通过课程设计,巩固、加深和拓宽了学习的理解,本课程设计的重点目标是使用汇编语言,而不过多涉及硬件方面的太多知识。

《微机原理与接口技术》课程设计

在编程方面我通过本次课程设计学到了很多。一开始面对很长的程序往往有畏难情绪,感觉无法下手,没办法只能硬着头皮啃下去,多看几个和音乐播放有关的汇编程序,然后我就能慢慢看懂了并理解了别的作者的设计思路。然后再根据自己的思路,对照本人在图书馆借的汇编语言指导书慢慢编写符合自己思路的程序。一次写出来的程序肯定不会是正确的,还需要进一步调试它。检查程序过程中,在充分思考的基础上多次实验是检查改正程序的良方。编写程序的过程中,体会最深的是子程序的调用和程序的条理问题,一个程序就算功能实现了,但是也要使主程序和子程序的条理分明,易读性高,才能算一个比较好的程序。调试程序中,学习了DEBUG 的使用,DEBUG对检查程序的错误作用很大。同时,也要灵活使用各种调试方法,来缩小寻找错误的范围。

书到用时方恨少。在课程设计过程中,我才体会到这句话的深意。课堂上学的8254的知识和汇编语言都太少,还不足以完成本次课设,为此我经常跑图书馆借了各种各样的工具书。有的书用处较大,有的书仅能用到一小块知识,就是这样,一步步在知识的海洋里我寻觅着自己需要的东西,确实克服了不少困难,解决了不少问题。或许坎坷才能更好的使人成长。在这次的课程设计中,我的收获是不但做出了一个符合要求的音乐播放器,而且为自己积累了一些宝贵的经验。同时我也对音乐方面的频率知识有了一些认识,我想如果不是本次课程设计中用到这方面知识,我这辈子可能没有机会去接触这方面的知识了。这,或许也是我比别的同学多出的一点收获吧!

《微机原理与接口技术》课程设计

《微机原理与接口技术》课程设计

;根据不同的按键播放不同的曲子

;无效选择,输出错误提示

;指向曲1的表;指向曲2的表;指向曲3的表;关闭扬声器

《微机原理与接口技术》课程设计

;输出欢迎使用信息,增加界面友好度

;PLAY子程序,功能上面介绍过

;计算计数初值,1M的十六进制为0F4240H

《微机原理与接口技术》课程设计

《微机原理与接口技术》课程设计

2、各个音符的对应频率表:

1.通过D/A装换器产生模拟信号,使PC机作为简易音乐播放器。2.了解利用数模转换器产生音乐的基本方法。

设计并实现一个键控音乐播放器。要求:

(1)自己选用合适的芯片,不少于两种。

(2)自行设计电路并使用汇编语言编写程序完成键控音乐播放器功能。

(3)该播放器有若干首歌曲可以选择,开始时输出说明,要用户选择要播放的歌曲,然后根据用户按键进行播放、退出或出错提示。

所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。而我们学过的有计数器可以产生各种频率,所以我们主要采用计数器8253产生各音符,用8255并行接口来控制扬声器的开关,达到播放音乐的功能。

可以使用0832(数模转换器)来产生频率,原理图:

提出这个方案是因为我想产生模拟信号,来驱动扬声器,这样产生的声音更加圆润感觉我们想把一个周期的波形分成32份,然后每份给8253一个值让他转换成模拟信号,不同的频率可以用8253计数器控制,比如要产生261Hz的频率,使用1MHz的话,周期就为1/261=3.83ms,分成32份,每份间隔时间就是3.83ms/32=0.12ms,换句话说就是送计数器0的初值为1M/261/32=120次。

3、各个音符的对应频率表:

四.部分电路设计及功能解说

使用8253产生音符频率。8253采用方式3,产生方波信号,根据输入计数初值的不同产生不同频率的方波信号来驱动扬声器。

2、扬声器开关控制电路

使用8255并行接口芯片来控制扬声器的开和关,PC0始终接低电平,PA0和8253的OUT0接在与门上,这样只有PA0=1时扬声器才有可能开通,否则不发声。关闭的方法是,从PC口读入数据再从PA口输出;而开扬声器时只要在输出PA口数据前对数据进行一个取反操作就可以了。

设某音符频率为fHz,而CLK脉冲是1MHz,则计数初值N=1M/f。8253的控制端口为28BH,控制字为36H。五.硬件接线图

开始输出说明读取按键是‘1’?N是‘2’?Y播放曲1Y播放曲2N是‘3’?Y播放曲3N是‘0’?Y结束Y选择无效程序总流程图

2、音乐播放子程序流程图

开始保护现场曲N各音符频率设置曲N各音符时间设置读取频率F频率是-1 ?Y恢复现场N读取时间T结束返回计算机计数次数送计数器,产生该频率F信号启动喇叭延时T关闭喇叭音符间延时播音流程图

MAIN程序是总程序,输出说明,等待用户按键并读取键值。根据不同的按键选择调用播音子程序播放不同的歌曲。

PLAY子程序是播音子程序,SI指向音节表中的频率,BP指向音节表中的时间。从SI的指向的音节表中取一个频率,只要不是-1,即有效就再读取时间,然后计算计数初值送入计数器,产生各种频率。开启扬声器,根据所取的时间调用若干次延时子程序。这段时间扬声器就发出该频率的声音,延时结束,就关闭扬声器,调用音节之间的小延时程序。最后修改SI和BP,指向下一个频率,重复上面的工作。

两个都是子程序,采用空操作循环多次的方法,只是第二个延时时间较短,大概为5ms。八.程序清单

;根据不同的按键播放不同的曲子

;无效选择,输出错误提示

;PLAY子程序,功能上面介绍过

;计算计数初值,1M的十六进制为0F4240H

如果按错了键,会出现如下界面

如果选择正确,将出现如下界面:

这是按照方案一做的结果,按1~3分别播放“生日快乐”等歌,但由于本组人对音乐都是外行,各音阶频率的排序和延时时间搭配不好,导致音乐严重走调,但基本能听出不是噪音。

按照方案二做的电路和程序,无论怎么样都不出声,后来我们直接送数据到0832产生三角波信号(程序在我们的一次作业中写的)。还是无法让扬声器发出声音,因此按这个方案失败了。

十.课程设计总结和体会

1.实验过程中碰到了很多的难题和障碍,我认识到平时基础知识的重要性,只有能够熟练的掌握才能在实验过程中得心应手,否则一步错则整个试验都会陷入困境,因而,严谨的态度是试验成功的重要保障!

2.通过这次课程设计,我们对各个芯片有了进一步的了解,对各个芯片的功能有了更深刻的认识和体会,平时上课的理论知识只是停留在理论的层面,只有通过了这样的试验才能更好的体会到,做到了理论和实际的相结合,使理论知识真正运用到了实践中去。在课程设计过程中,同组人员之间相互合作,共同研究使我更加坚信了团体的力量。在团体的共同协作和努力下,任何的难题都可以被解决!

3.我们大家在实验的时候都团结合作,遇到问题时候一起探讨,增强了我们的合作精神。

1、《〈微机原理与接口技术〉学生实验指导书》 扬州大学 罗加奇

2、《微机原理及应用》 机械工业出版社 胡钢 主编

武汉理工大学《微机原理与接口技术》课程设计

武汉理工大学《微机原理与接口技术》课程设计

一、课程设计任务及要求

1.2课程设计任务及要求:

设计一个音乐程序,演奏音乐按大写字母“A”,唱乐曲“玛丽有只小羔羊”;

按大写字母“B”,唱乐曲“太湖船”

按大写字母“C”,唱乐曲“祝福歌”

在微机及控制系统中,经常要用到定时信号。如系统的日历时钟,动态存储器刷新。对外部执行机构控制时也需要定时中断、定时检测、定时查询等。定时的方法主要是两种:

软件定时:利用指令的执行时间设计循环程序,使CPU 执行延迟子程序的时间就是定时时间。缺点:执行延迟时,CPU 一直被占用,降低了CPU 的效率。

硬件定时:用计数器/定时器作为主要硬件,在软件简单指令的控制下产生精确的时间延迟。突出优点为计数时不占用CPU 时间,如利用定时器/计数器产生中断信号,可建立多作业环境,提高了CPU 效率。

作为定时器可用8253或者8254,二者功能基本相同,知识工作的最高频率不一样。本实验就采用了8254,其主要功能为:

(1)每片上有3 个独立的16 位的减计数器通道。

(2)对于每个计数器,都可以单独作为定时器或计数器使用,并且都可以按照二进制或十进制来计数。

武汉理工大学《微机原理与接口技术》课程设计

(3)每个通道都有6 种工作方式,都可以通过程序设置或改变。(4)每个计数器的速率可高达10MHz。

主要部分有:数据总线缓冲器、读/写控制逻辑、控制字寄存器、计数通道0#、1#、2#: 内部结构如下图:

8254芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图所示。8254芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各个引脚及其所传送信号的情况,介绍如下:

(1)D7~D0:双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态信息。

(2)RD:来自于CPU的读控制信号输入引脚,低电平有效。

武汉理工大学《微机原理与接口技术》课程设计

(3)WR:来自于CPU的写控制信号输入引脚,低电平有效。(4)CS:芯片选择信号输入引脚,低电平有效。

(5)A1、A0:地址信号输入引脚,用以选择8254芯片的通道及控制字寄存器。(6).VCC及GND:+5V电源及接地引脚。

(7)CLKi: i=0,1,2,第i个通道的计数脉冲输入引脚,8254规定,加在CLK引脚的输入时钟信号的频率不得高于2.6MHZ,即时钟周期不能小于380ns。

(8)GATEi: i=0,1,2,第i个通道的门控信号输入引脚,门控信号的作用与通道的工作方式有关。

(9)OUTi:i=0,1,2,第i个通道的定时/计数到信号输出引脚,输出信号的形式由通道的工作方式确定,此输出信号可用于触发其它电路工作,或作为向CPU发出的中断请求信号。

8254控制字 武汉理工大学《微机原理与接口技术》课程设计

说明 :(1)8254每个通道对输入CLK按二进制或二十进制从预置值开始减1计数,减到0时从OUT输出一个信号。

(2)8254编程时先写控制字,再写时间常数。

(1)方式0:计数结束产生中断方式

当写入控制字后,OUT变为低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。

(2)方式1:可编程单次脉冲方式

当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。(3)方式2:频率发生器方式

当初值装入时,OUT变为高;计数结束,OUT变为低。该方式下如果计数未结束,但GATE为低时,立即停止计数,强制OUT变高,当GATE再变高时,便启动一次新的计数周期。

(4)方式3:方波发生器

当装入初值后,在GATE上升沿启动计数,OUT 输出高电平; 当计数完成一半时,OUT输出低电平。方式3与方式2的工作方式类似,也是在初始化完成后能重复循环计数,只是输出的波形不同。

(5)方式4:软件出发选通方式

进入工作方式4,OUTi输出高电平。装入计数值n后,如果GATE为高电平,则立即

武汉理工大学《微机原理与接口技术》课程设计

开始减“1”计数,直到计数值减到“0”为止,OUTi输出宽度为一个CLKi周期的负脉冲。由软件装入的计数值只有一次有效,如果要继续操作,必须重新置入计数初值n。如果在操作的过程中,GATE变为无效,则停止减“1”计数,到GATE再次有效时,重新从初值开始减“1”计数。

(6)方式5:硬件触发方式计数

进入工作方式5,OUTi输出高电平,硬件触发信号由GATE端引入。因此,开始时GATE应输入为0,装入计数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”,OUTi将输出负脉冲,其宽度固定为一个CLKi周期,表示定时时间到或计数次数到。

所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。

CPU通过对定时器的通道2(端口地址为42)进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低控制通道2门控的开断。以产生特殊的音响。当定时器接收的计数值为533H时,能产生896Hz的声音,因此产生其他频率的计数值就可算出来:

在送出频率计数值之前,还要给方式寄存器送一个方式值,该数决定对哪一个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制码还是BCD码。其位组合的格式如下:

当通道2用于发声时,采用的是模式3,在模式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。

武汉理工大学《微机原理与接口技术》课程设计

从定时器输出的方波信号,经功率放大和滤波后驱动扬声器。送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PA1位和定时器的输出信号同时作为与门的输入,PA0和PA1位可由程序决定为0还是为1。显然只有PA0和PA1都是1时,才能使扬声器发出声音。控制音长的时间可以简单地通过反复执行指令来得到。我们知道执行2801次LOOP指令约需要10MS的时间。因此用10MS的倍数值来控制扬声器开关的时间间隔,就可控制发声的音长了。实现程序如下:

四、功能流程图及子程序说明

MAIN程序:MAIN程序是总程序,输出说明,等待用户按键并读取键值。根据不同的按键选择调用播音子程序播放不同的歌曲。武汉理工大学《微机原理与接口技术》课程设计

4.2音乐播放子程序流程图

PLAY子程序:PLAY子程序是播音子程序,SI指向音节表中的频率,BP指向音节表中的时间。从SI的指向的音节表中取一个频率,只要不是-1,即有效就再读取时间,然后计算计数初值送入计数器,产生各种频率。开启扬声器,根据所取的时间调用若干次延时子程序。这段时间扬声器就发出该频率的声音,延时结束,就关闭扬声器,调用音节之间的小延时程序。最后修改SI和BP,指向下一个频率,重复上面的工作

DELAY子程序和DELAY_OFF子程序:两个都是子程序,采用空操作循环多次的方法,只是第二个延时时间较短,大概为5ms。武汉理工大学《微机原理与接口技术》课程设计

开始保护现场曲N各音符频率设置曲N各音符时间设置读取频率F频率是-1 ?Y恢复现场N读取时间T结束返回计算机计数次数送计数器,产生该频率F信号启动喇叭延时T关闭喇叭音符间延时播音流程图 武汉理工大学《微机原理与接口技术》课程设计

武汉理工大学《微机原理与接口技术》课程设计

五、调试结果截屏及结果分析

如果按错了键,会出现如下界面:

如果选择正确,将出现如下界面: 武汉理工大学《微机原理与接口技术》课程设计

根据输出结果显示,此次试验设计结果与预想设计方案想要达到的结果相一致,没有出现任何偏差,此次设计较为成功。但在实验过程中对程序不断地进行了调试,将音频频率不断地进行了改变,由原来的低频通过同时扩大其倍数,最终使音频达到预期的效果。武汉理工大学《微机原理与接口技术》课程设计

【1】李长青.微机原理与接口技术.徐州:中国矿业大学出版社,2006 【2】沈美明.汇编语言程序设计实验教程.北京:清华大学出版社,2002年 【3】周明德.微机原理与接口技术.北京:人民邮电出版社,2002年 武汉理工大学《微机原理与接口技术》课程设计

武汉理工大学《微机原理与接口技术》课程设计

设置段寄存器 显示以B开始的字符串宏定义宏结束 提示信息 输入并选择

武汉理工大学《微机原理与接口技术》课程设计

武汉理工大学《微机原理与接口技术》课程设计

在本次设计中,可以说是一次成功的经验。在我们学完了《微型计算机原理与接口技术》这门课的基础上来做这个设计,通过设计后,使我们对这门课的理论知识的理解有很大程度上的加强。微机原理这门课程本身是一门实验性和工程性很强的专业技术课,因此不仅要重视理论教学,更应注意实践技能的培养和训练。课程设计是这门课程的一个重要环节,通过课程设计,巩固、加深和拓宽了学习的理解,本课程设计的重点目标是使用汇编语言,而不过多涉及硬件方面的太多知识。

在编程方面我通过本次课程设计学到了很多。一开始面对很长的程序往往有畏难情绪,感觉无法下手,没办法只能硬着头皮啃下去,多看几个和音乐播放有关的汇编程序,然后我就能慢慢看懂了并理解了别的作者的设计思路。然后再根据自己的思路,对照本人在图书馆借的汇编语言指导书慢慢编写符合自己思路的程序。一次写出来的程序肯定不会是正确的,还需要进一步调试它。检查程序过程中,在充分思考的基础上多次实验是检查改正程序的良方。编写程序的过程中,体会最深的是子程序的调用和程序的条理问题,一个程序就算功能实现了,但是也要使主程序和子程序的条理分明,易读性高,才能算一个比较好的程序。调试程序中,学习了emu8086的使用,emu8086对检查程序的错误作用很大。同时,也要灵活使用各种调试方法,来缩小寻找错误的范围。

书到用时方恨少。在课程设计过程中,我才体会到这句话的深意。课堂上学的8254的知识和汇编语言都太少,还不足以完成本次课设,为此我经常跑图书馆借了各种各样的工具书。有的书用处较大,有的书仅能用到一小块知识,就是这样,一步步在知识的海洋里我寻觅着自己需要的东西,确实克服了不少困难,解决了不少问题。或许坎坷才能更好的使人成长。在这次的课程设计中,我的收获是不但做出了一个符合要求的音乐播放器,而且为自己积累了一些宝贵的经验。同时我也对音乐方面的频率知识有了一些认识,我想如果不是本次课程设计中用到这方面知识,我这辈子可能没有机会去接触这方面的知识了。这,或许也是我比别的同学多出的一点收获吧!

合肥工业大学 计算机与信息学院

程:微机原理与接口技术设计

专业班级:计算机科学与技术班

利用 8259A中断,实现对8253多种计数初值的设定: 1.在中断服务程序中设定8253的计数初值。

2.开关K1用于设定0.5秒方波的计数初值,K2用于设定1秒方波的计数初值,K3用于设定2秒方波的计数初值。

3.用8253的输出信号,控制一个发光二极管,以演示修改效果。

①利用8259A芯片设定IR1、IR2、IR3三个中断,分别用三个开关的高低电平触发中断。

②在三个终端的中断服务子程序里面为8253芯片通道0设定不同频率的方波计数初值,使得在触发不同中断时8253芯片产生周期为0.5秒、1,秒、2秒的方波。③将8253的输出端口与发光二极管连接,通过二极管的亮灭显示出8253内部方波的频率。

①8253芯片方式3初值确定:根据分频电路T(n)=T/2*公式以及0.5s、1s、2s方波的频率计算出初值分别为2580H、4B00H、9600H。

③8259A中断向量表写入以及芯片初始化:根据8259A各个中断在中断向量表中的地址,将IR0、IR1、IR2的中断服务程序入口地址写入向量表中;ICW4设定除中断0、1、2外其他位屏蔽。

④手动设置中断结束:为了不影响各个中断之间的交替响应,在每个中断服务程序结束之前写入中断结束方式,将20H输出到8259端口,将当前中断结束响应后再响应下一个中断。

附录:实验代码:(完整的源程序)

设计一个投票统计器,完成投票、计票统计和票数显示等功能。

在8086最小工作模式下,连接一块8255A芯片。在 8255A的C端口连接8个开关,开关按下表示支持,灯亮,开关不按便是反对,灯不亮,从8255A的C端口输入投票结果,经8086运算统计出结果;在 8255A的A端口连接一块7段LED数码管,将输出结果通过数码管显示出来。电路图:

;进位加CF,以统计出C端口中1的个数

为期一周的微机原理课程实践终于结束了,回过头来,感慨万千。过了一个多月,书本上的好些知识已然忘却,刚开始拿到课题时,看到一大堆传说中的神器,霎时凌乱了,选来选去,从仅剩的课题中挑了“投票统计器”,上网搜索了一下,大体上把设计的方向搞清了,接下来,便是开始设计了。

画模拟图对于我们来说,还是比较困难的,特别是8086那一块儿,大家参考网上的资料,反复讨论,着实花了不少时间。接下来的画图连线就比较简单了,为了节省时间,在做模拟图的同时,其他两个人便开始编写程序了。将设计流程图简略写下来,对照流程图,分块儿编写程序,显得很有条理,简单轻松些。

就这样,三次课之后,设计的图和程序都好了,只剩下调试程序,查看模拟结果了。这是检错和纠错的过程,轻松但也不轻松,因为那么多东西,如果看不仔细了,你就找不到错误,也就没法儿解决问题了,费事费力还一无所获,这是最伤脑筋的事情。还好,运气不错,只是程序出现了小小的问题,改好之后,得到了很满意的结果。

最后的验收,是对书本与实践知识的融汇总结,本以为毫无问题的我们,没想到被程序中的一个问题给秒杀了,大家四处找资料,和别的组的同学讨论,反复演算了半天,终于会了。当然,就算是会了,我们也只是懂得了微机原理中的一点皮毛而已,学的扎实很重要,因为这样才能把理论知识运用到实践中去,不断地提高自己。

五、参考文献 1.周明德.微型计算机系统原理及应用.北京:清华大学出版社

2.张弥左,王兆月,邢立军等.微型计算机接口技术.北京:机械工业出版社 3.戴梅萼,史嘉权.微型计算机技术及应用.北京:清华大学出版社 4.沈美明,温冬婵.IBM-PC汇编语言程序设计.北京:清华大学出版社

}

我要回帖

更多关于 微机原理8253 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信