微型计算机课程设计论文—通用微机发声程序的汇编设计 本文讲述了在微型计算机中利用可编程时间间隔定时器的通用发声程序设计,重点讲述了程序的发声原理,节拍的产生,按节拍改变的动画程序原理,并以设计一个简单的乐曲评分程序为引子,分析程序设计的细节。关键字:微机 8253 通用发声程序 动画技术 直接写屏 1. 可编程时间间隔定时器8253在通用个人计算机中,有一个可编程时间间隔定时器8253,它能够根据程序提供的计数值和工作方式,产生各种形状和各种频率的计数/定时脉冲,提供给系统各个部件使用。本设计是利用计算机控制发声的原理,编写演奏乐曲的程序。 在8253/54定时器内部有3个独立工作的计数器:计数器0,计数器1和计数器2,每个计数器都分配有一个断口地址,分别为40H,41H和42H.8253/54内部还有一个公用的控制寄存器,端地址为43H.端口地址输入到8253/54的CS,AL,A0端,分别对3个计数器和控制器寻址. 对8353/54编程时,先要设定控制字,以选择计数器,确定工作方式和计数值的格式.每计数器由三个引脚与外部联系,见教材第320页图9-1.CLK为时钟输入端,GATE为门控信号输入端,OUT为计数/定时信号输入端.每个计数器中包含一个16位计数寄存器,这个计数器时以倒计数的方式计数的,也就是说,从计数初值逐次减1,直到减为0为止. 8253/54的三个计数器是分别编程的,在对任一个计数器编程时,必须首先讲控制字节写入控制寄存器.控制字的作用是告诉8253/54选择哪个计数器工作,要求输出什么样的脉冲波形.另外,对8253/54的初始化工作还包括,向选定的计数器输入一个计数初值,因为这个计数值可以是8为的,也可以是16为的,而8253/5的数据总线是8位的,所以要用两条输出指令来写入初值.下面给出8253/54初始化程序段的一个例子,将计数器2设定为方式3,(关于计数器的工作方式参阅教材第325—330页)计数初值为65536. MOV AL,10110110B ;选择计数器2,按方式3工作,计数值是二进制格式 OUT 43H,AL ; j将控制字送入控制寄存器 MOV AL,0 ;计数初值为0 OUT 42H,AL ;将计数初值的低字节送入计数器2 OUT 42H,AL ;将计数初值的高字节送入计数器2 在IBM PC中8253/54的三个时钟端CLK0,CLK1和CLK2的输入频率都是1.1931817MHZ. PC机上的大多数I/O都是由主板上的8255(或8255A)可编程序外围接口芯片(PPI)管理的.关于8255A的结构和工作原理及应用举例参阅教材第340—373页.教材第364页的”PC/XT机中的扬声器接口电路”一节介绍了扬声器的驱动原理,并给出了通用发声程序.本设计正是基于这个原理,通过编程,控制加到扬声器上的信号的频率,奏出乐曲的.2.发声程序的设计下面是能产生频率为f的通用发声程序:MOV AL, 10110110B ;8253控制字:通道2,先写低字节,后写高字节 ;方式3,二进制计数OUT 43H, AL ;写入控制字MOV DX, 0012H ;被除数高位MOV AX, 35DEH ;被除数低位 DIV ID ;求计数初值n,结果在AX中OUT 42H, AL ;送出低8位MOV AL, AHOUT 42H,AL ;送出高8位IN AL, 61H ;读入8255A端口B的内容MOV AH, AL ;保护B口的原状态OR AL, 03H ;使B口后两位置1,其余位保留OUT 61H,AL ;接通扬声器,使它发声
上传时间: 2013-10-17
上传用户:sunjet
摘 要:用一种新的思路和方法,先计算低通、再计算高通滤波器的有关参数,然后组合成带通滤波器.关键词:滤波器;参数;新思路中图分类号: TN713. 5 文献识别码:B 文章编号:1008 - 1666 (1999) 04 - 0089 - 03A New Consideration of the Band Filter’s CalculationGuo Wencheng( S hao Yang B usiness and Technology school , S haoyang , Hunan ,422000 )Abstract :This essay deals with a new method of calculating the band filters - first calculatingthe relevant parameters of low - pass filters ,then calculating the ones of high - pass filters.Key words :filter ; parameters ;new considercation八十年代后,信息产业得到了迅猛发展. 带通滤波器在微波通信、广播电视和精密仪器设备中得到了广泛应用. 带通滤波器性能的优劣,对提高接收机信噪比,防止邻近信道干扰,提高设备的技术指标,有着十分重要的意义.我在长期的教学实践中,用切比雪夫型方法设计、计算出宽带滤波器集中参数元件的数据. 该滤波器可运用在检测微波频率的仪器和其他设备中. 再将其思路和计算方法介绍给大家,供参考.
上传时间: 2014-12-28
上传用户:Yukiseop
电子发烧友网:本资料是关于单片机及接口技术这门课程的期末考试试卷及答案的详解。 8.当需要从MCS-51单片机程序存储器取数据时,采用的指令为( )。 a)MOV A, @R1 b)MOVC A, @A + DPTR c)MOVX A, @ R0 d)MOVX A, @ DPTR 二、填空题(每空1分,共30分) 1.一个完整的微机系统由 和 两大部分组成。 2.8051 的引脚RST是____(IN脚还是OUT脚),当其端出现____电平时,8051进入复位状态。8051一直维持这个值,直到RST脚收到____电平,8051才脱离复位状态,进入程序运行状态,从ROM H单元开始取指令并翻译和执行。 3.半导体存储器分成两大类 和 ,其中 具有易失性,常用于存储 。
上传时间: 2015-01-03
上传用户:wfl_yy
diStorm64 is an AMD64 disassembler, which is the first public free disassembler library for AMD64 out there.
标签: disassembler AMD 64 diStorm
上传时间: 2015-05-03
上传用户:fnhhs
* Function: * 1. Replace the first oldstr with newstr in srcstr * Arguments: * IN : * srcstr * oldstr * newstr * OUT : * srcstr * Return: * 1. If find and replace one oldstr with newstr in srcstr , return 1 * 2. If find no oldstr in srcstr , return 0 * 3. If error (malloc return NULL) return -1 * Notes: * 1. srcstr should be large size enough.
标签: Arguments Function Replace oldstr
上传时间: 2014-12-20
上传用户:Yukiseop
This section contains a brief introduction to the C language. It is intended as a tutorial on the language, and aims at getting a reader new to C started as quickly as possible. It is certainly not intended as a substitute for any of the numerous textbooks on C. 2. write a recursive function FIB (n) to find out the nth element in theFibanocci sequence number which is 1,1,2,3,5,8,13,21,34,55,…3. write the prefix and postfix form of the following infix expressiona + b – c / d + e * f – g * h / i ^ j4. write a function to count the number of nodes in a binary tr
标签: introduction the contains intended
上传时间: 2013-12-23
上传用户:liansi
Implemented BFS, DFS and A* To compile this project, use the following command: g++ -o search main.cpp Then you can run it: ./search The input is loaded from a input file in.txt Here is the format of the input file: The first line of the input file shoud contain two chars indicate the source and destination city for breadth first and depth first algorithm. The second line of input file shoud be an integer m indicate the number of connections for the map. Following m lines describe the map, each line represents to one connection in this form: dist city1 city2, which means there is a connection between city1 and city2 with the distance dist. The following input are for A* The following line contains two chars indicate the source and destination city for A* algorithm. Then there is an integer h indicate the number of heuristic. The following h lines is in the form: city dist which means the straight-line distance from the city to B is dist.
标签: Implemented following compile command
上传时间: 2014-01-01
上传用户:lhc9102
acm HDOJ 1051WoodenSticks Description: There is a pile of n wooden sticks. The length and weight of each stick are known in advance. The sticks are to be processed by a woodworking machine in one by one fashion. It needs some time, called setup time, for the machine to prepare processing a stick. The setup times are associated with cleaning operations and changing tools and shapes in the machine. The setup times of the woodworking machine are given as follows: (a) The setup time for the first wooden stick is 1 minute. (b) Right after processing a stick of length l and weight w , the machine will need no setup time for a stick of length l and weight w if l<=l and w<=w . Otherwise, it will need 1 minute for setup.
标签: WoodenSticks Description length wooden
上传时间: 2014-03-08
上传用户:netwolf
TLV1544与TMS320VC5402通过串行口连接,此时,A/D转换芯片作为从设备,DSP提供帧同步和输入/输出时钟信号。TLV1544与DSP之间数据交换的时序图如图3所示。 开始时, 为高电平(芯片处于非激活状态),DATA IN和I/OCLK无效,DATAOUT处于高阻状态。当串行接口使CS变低(激活),芯片开始工作,I/OCLK和DATAIN能使DATA OUT不再处于高阻状态。DSP通过I/OCLK引脚提供输入/输出时钟8序列,当由DSP提供的帧同步脉冲到来后,芯片从DATA IN接收4 b通道选择地址,同时从DATAOUT送出的前一次转换的结果,由DSP串行接收。I/OCLK接收DSP送出的输入序列长度为10~16个时钟周期。前4个有效时钟周期,将从DATAIN输入的4 b输入数据装载到输入数据寄存器,选择所需的模拟通道。接下来的6个时钟周期提供模拟输入采样的控制时间。模拟输入的采样在前10个I/O时钟序列后停止。第10个时钟沿(确切的I/O时钟边缘,即上升沿或下降沿,取决于操作的模式选择)将EOC变低,转换开始。
上传时间: 2014-12-05
上传用户:yepeng139
* first open client.cpp and search for that USER_MSG_INTERCEPT(TeamInfo) over it u add this Code: USER_MSG_INTERCEPT(Health) { BEGIN_READ(pbuf,iSize) me.iHealth = READ_BYTE() return USER_MSG_CALL(Health) } * then we search for int HookUserMsg (char *szMsgName, pfnUserMsgHook pfn) and add this Code: REDIRECT_MESSAGE( Health ) *k now we have the health registered and can read it out i stop this hear know cuz i must thanks panzer and w00t.nl that they helped me with it first time! *ok now we go to int HUD_Redraw (float x, int y) and packing this draw code in it Code:
标签: USER_MSG_INTERCEPT TeamInfo client search
上传时间: 2016-01-22
上传用户:ynzfm