微型计算机课程设计论文—通用微机发声程序的汇编设计 本文讲述了在微型计算机中利用可编程时间间隔定时器的通用发声程序设计,重点讲述了程序的发声原理,节拍的产生,按节拍改变的动画程序原理,并以设计一个简单的乐曲评分程序为引子,分析程序设计的细节。关键字:微机 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
◆ PIC系列单片机简介 ◆ PIC系列单片机程序设计基础 ◆ PIC 8位单片机的分类和特点(一) ◆ PIC 8位单片机的分类和特点(二) ◆ PIC系列单片机的振荡器配置方法 ◆ PIC 8位单片机的基本组成 ◆ PIC 8位单片机的汇编语言 ◆ PIC 8位单片机16F8X系列简介 ◆ PIC 8位8脚单片机12C5××和12CE5××系列的特点 ◆ PIC 8位单片机的电源和时钟 ◆ 常用PIC系列8位单片机芯片引脚符号的功能 ◆ PIC 8位单片机16C6×系列简介 ◆ PIC 8位单片机汇编语言常用指令的识读(上) ◆ PIC 8位单片机汇编语言常用指令的识读(中) ◆ PIC 8位单片机汇编语言常用指令的识读(下) ◆ 浅谈PIC 8位单片机中的RAM和汇编程序的关系 ◆ 选择PIC单片机存储体0或1的方法 ◆ PIC系列8位单片机源程序的组成 ◆ PIC系列单片机的伪指令 ◆ PIC 8位单片机指令识读技巧 ◆ PIC16C84单片机介绍 ◆ PIC16C54单片机原理及应用 ◆ PIC单片机开发的若干问题 ◆ 小议编写PIC单片机源程序应注意的问题 ◆ PIC16C64单片机外部功能特点 ◆ PIC单片机16F84的内部硬件资源(一) ◆ PIC单片机16F84的内部硬件资源(二) ◆ PIC单片机16F84的内部硬件资源(三) ◆ PIC单片机16F84的内部硬件资料(四) ◆ PIC单片机16F84的内部硬件资源(五) ◆ PIC单片机16F84的内部硬件资源(六) ◆ PIC单片机16F84的内部硬件资源(七) ◆ PIC单片机16F84的内部硬件资源(八) ◆ PIC单片机程序设计的基本格式 ◆ PIC系列单片机数据存储器的特点和功能(上) ◆ PIC系列单片机数据存储器的特点和功能(中) ◆ PIC系列单片机数据存储器的特点和功能(下) ◆ PIC8位单片机新产品的特点和功能 ◆ Windows下PIC8位单片机源程序汇编和固化(一) ◆ Windows下PIC 8位单片机源程序汇编和固化(二) ◆ Windows下PIC 8位单片机源程序汇编和固化(三) ◆ Windows下PIC 8位单片机源程序汇编和固化(四) ◆ Windows下PIC 8位单片机源程序汇编和固化(五) ◆ Windows下PIC 8位单片机源程序汇编和固化(六) ◆ Wineows下PIC 8位单片机源程序汇编和固化(七)
上传时间: 2014-01-21
上传用户:时代电子小智
很多单片机初学者与我交流时总说的一句话是我现在是单片机初学者,我怎样才能更快的学好单片机,我该从哪方便入手。对于这个问题,现在就我自己如何学单片机,如何入门,如何熟练谈谈想法。 先说单片机,现在用的比较多的以51为内核的8位单片机(考虑到成本及引脚资源在实际开发中用的51单片机型号不一),它的学习资料非常多,且学习成本非常低,可能有些初学者会说企业里用的不是51单片机,更多的是松翰、义隆什么,但是我想说的是那些单片机的辅助开发工具你有吗。51单片机对于智能电子技术的入门学习是非常有优势,成本低,开发简单,一线下载程序,ARM太神秘,PLC太高贵,想来想去还是51,曾经有过AVR和PIC,但是现在51也不赖。 那怎样才能更快更好的学好单片机呢? 单片机作为集电子技术与计算机编程技术为一体是一项非常重视动手实践的科目,如果你是单片机高手,那么说明你也是计算机编程和电子技术高手。
上传时间: 2014-03-24
上传用户:丶灬夏天
6.1 存储器概述1、存储器定义 在微机系统中凡能存储程序和数据的部件统称为存储器。2、存储器分类 微机系统中的存储器分为内存和外存两类。3、内存储器的组成 微机系统中的存储器由半导体存储器芯片组成。 单片机内部有存储器,当单片机内部的存储器不够用时,可以外扩存储器。外扩的存储器就是由半导体存储器芯片组成的。 当用半导体存储器芯片组成内存时必须满足个要求:①每个存储单元一定要有8个位。②存储单元的个数满足系统要求。注意:内存的容量是指它所含存储单元的个数(每个存储单元一定要有8个位,可以存储8位二进制信息)。6.2 半导体存储器由于集成工艺水平的限制,一个半导体存储器芯片上所集成的单元个数和每个单元的位数有限,用它构成内存时必须满足:内存容量和一个存储单元有8个位的要求,因此内存常常由多个半导体存储器芯片构成。 半导体存储器芯片的存储容量是指其上所含的基本存储电路的个数,用单元个数×位数表示。掌握:① 已知内存容量和半导体存储器芯片的容量,求用半导体存储器芯片构成内存时需要的芯片个数。② 内存的容量=末地址—首地址+1 半导体存储器芯片分成ROM和RAM两类。6.2.1 ROM芯片6.2.2 RAM芯片6.3 MCS-51单片机存储器扩展 在微机系统中存储器是必不可少。MCS51系列单片机内部的存储器不够用时需要外扩半导体存储器芯片,外扩的半导体存储器芯片与MCS51系列单片机通过三总线交换信息。二者连接时必须考虑如下问题:1.二者地址线、数据线、控制线的连接。2.工作速度的匹配。CPU在取指令和存储器读或写操作时,是有固定时序的,用户要根据这些来确定对存储器存取速度的要求,或在存储器已经确定的情况下,考虑是否需要Tw周期,以及如何实现。3.片选信号的产生。目前生产的存储器芯片,单片的容量仍然是有限的,通常总是要由许多片才能组成一个存储器,这里就有一个如何产生片选信号的问题。4.CPU的驱动能力 。在设计CPU芯片时,一般考虑其输出线的直流负载能力,为带一个TTL负载。现在的存储器一般都为MOS电路,直流负载很小,主要的负载是电容负载,故在小型系统中,CPU是可以直接与存储器相连的,而较大的系统中,若CPU的负载能力不能满足要求,可以(就要考虑CPU能否带得动,需要时就要加上缓冲器,)由缓冲器的输出再带负载。6.3.1 ROM芯片的扩展6.3.2 RAM芯片的扩展
标签: 存储器接口
上传时间: 2013-11-22
上传用户:moerwang
计算机应用中,有时需处理的信息不是数字量,而是一些随时间连续变化的模拟量,甚至是一些非电量,如温度、压力、速度等。模拟量的存储处理困难。首先将非电的模拟信号变成与之对应的模拟电信号,这要通过各种传感器来完成。计算机可处理的信息均是数字量(电脉冲信号)1和0,必须把要处理的模拟电量转换成数字化的电信号,这需要模拟(Analog)与数字(Digital)转换电路。数字到模拟转换:(Digital to Analog Convert, D/A) D/A转换电路是模拟电路加上电子开关。D/A转换电路的核心是一个运算放大器。运算放大器的特性:(Operation Amplifier) K->无穷大, V和->0 传递函数:V0 = -Vi * R0/Ri Ii->0, I和=If梯形R-2R电阻网络D/A转换器Ki受一个8位二进制代码控制 某位为1,对应开关K倒向右边; 某位为0,对应开关K倒向左边。Ki不论倒向哪边,均为接地VA-VH 的电位为: VREF,1/2VREF,..1/128VREFVO= -VREF *(1/2K7+1/4K6+…+1/256K0)V0= -(0-255/256)VREF 8位D/A转换器DAC0830系列器件国家半导体公司(NS)产品,0830、0831、0832。R-2R梯形电阻网络D/A转换器,双缓冲结构。单电源、低功耗、电流建立时间1uS。与微计算机接口方便。8位D/A转换器DAC0830系列器件ILE: 输入锁存允许; WR1#: 加载IN REG; WR2#: 加载DAC REG; XFER#: IN REG传到DAC REG; Iout1,Iout2: 外接OA输入; Rfb: 反馈电阻接OA输出; VREF: 参考电源,控制输出电压变化范围。
标签: AD转换
上传时间: 2013-10-16
上传用户:lu2767
单片机基础知识单片机的外部结构:1、 DIP40双列直插;2、 P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平)3、 电源VCC(PIN40)和地线GND(PIN20);4、 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位)5、 内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍)6、 程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序)7、 P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务)1、 四个8位通用I/O端口,对应引脚P0、P1、P2和P3;2、 两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1)3、 一个串行通信接口;(SCON,SBUF)4、 一个中断控制器;(IE,IP)针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。教科书的160页给出了针对MCS51系列单片机的C语言扩展变量类型。 C语言编程基础:1、 十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。2、 如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。3、 ++var表示对变量var先增一;var—表示对变量后减一。4、 x |= 0x0f;表示为 x = x | 0x0f;5、 TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。6、 While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;}第一章 单片机最小应用系统:单片机最小系统的硬件原理接线图:1、 接电源:VCC(PIN40)、GND(PIN20)。加接退耦电容0.1uF2、 接晶体:X1(PIN18)、X2(PIN19)。注意标出晶体频率(选用12MHz),还有辅助电容30pF3、 接复位:RES(PIN9)。接上电复位电路,以及手动复位电路,分析复位工作原理4、 接配置:EA(PIN31)。说明原因。第二章 基本I/O口的应用第三章 显示驱动第七章 串行接口应用
标签: 单片机
上传时间: 2013-10-30
上传用户:athjac
//遥控解码子程序,LC7461,用户码为11C//external interrupt0void isr_4(){ unsigned char r_count;//定义解码的个数 unsigned long use_data=0;//定义16位的用户码,只用到13位 unsigned long use_code=0;//定义16位的用户反码,只用到13位 unsigned long data=0;//定义16位数据码,包括8位数据码和反码 unsigned char data_h=0;//数据反码 unsigned char data_l=0;//数据码 _clrwdt();// _delay(7000);//7461解码,延时7000// _delay(7000);//7461解码,延时7000//_delay(7000);//7461解码,延时7000 if(remote==1) goto error; while(remote==0);//wait to high //_delay(9744);count_delay=0; while(count_delay<143); if(remote==1) goto error; /////用户码解码use_data//////////add////////////////////////// for(r_count=13;r_count>0;r_count--) { while(remote==0);//wait to high count_delay=0; while(count_delay<24);//_delay(1680); _c=remote; if(_c==1) { _lrrc(&use_data); count_delay=0; while(count_delay<32);//_delay(2200);//wait to low } else _lrrc(&use_data); } _nop(); //if(remote==1) //_delay(1680);//wait to low while(remote==1);//wait to low _nop(); ////////用户码解码finish/////////add/////////add//////// /////用户码反码解码use_code//////////add////////////////////////// for(r_count=13;r_count>0;r_count--) { while(remote==0);//wait to high count_delay=0; while(count_delay<24);//_delay(1680); _c=remote; if(_c==1) { _lrrc(&use_code); count_delay=0; while(count_delay<32);//_delay(2200);//wait to low } else _lrrc(&use_code); } _nop(); //if(remote==1) // _delay(1680);//wait to low while(remote==1);//wait to low _nop(); ////////用户码反码解码finish/////////add/////////add//////// ////数据码解码开始////data_l为用户码,data_h为数据码反码//////////// for(r_count=16;r_count>0;r_count--) { while(remote==0);//wait to high count_delay=0; while(count_delay<24);//_delay(1680); _c=remote; if(_c==1) { _lrrc(&data); count_delay=0; while(count_delay<32);//_delay(2200);//wait to low } else _lrrc(&data); } ////数据码解码结束//////////////////////////////////////////////// data_l=data; data_h=data>>8; ///用户码////// use_data>>=3; use_code>>=3; use_code=~use_code; //////// ////如果用户码等与0x11c并且数据码和数据反码都校验一致,解码成功 //if((~data_h==data_l)&&use_data==0x11c)//使用用户码 //跳过用户码 if(~data_h==data_l)//如果数据码和数据反码(取反后)相等,解码正确 { _nop(); r_data=data_l;//r_data为解出的最终数据码 } //否则解码不成功 _nop(); _nop();error: //r_data=nocode; _nop(); _nop(); _nop();}
上传时间: 2014-03-27
上传用户:shenlan
红外遥控接收;=================================================;; zsMCU51实验板配套学习例程;; 中山单片机学习网 智佳科技;; 作者:逸风 QQ:105558851;; http://www.zsmcu.com; E-mail:info@zsmcu.com;=================================================ORG 0000HLJMP START;转入主程序ORG 0010HSTART:MAIN:JNB P2.2,IRLJMP MAIN;以下为进入P3.2脚外部中断子程序,也就是解码程序IR:MOV R6,#9SB:ACALL DELAY882 ;调用882微秒延时子程序JB P2.2,EXIT ;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序DJNZ R6, SB ;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序;以上完成对遥控信号的9000微秒的初始低电平信号的识别。JNB P2.2, $ ;等待高电平避开9毫秒低电平引导脉冲ACALL DELAY2400JNB P2.2,IR_Rp ;ACALL DELAY2400 ;延时4.74毫秒避开4.5毫秒的结果码MOV R1,#1AH ;设定1AH为起始RAM区MOV R2,#4PP:MOV R3,#8JJJJ:JNB P2.2,$ ;等待地址码第一位的高电平信号LCALL DELAY882 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态MOV C,P2.2 ;将P3.2引脚此时的电平状态0或1存入C中 JNC UUU ;如果为0就跳转到UUULCALL DELAY1000UUU:MOV A,@R1 ;将R1中地址的给ARRC A ;将C中的值0或1移入A中的最低位MOV @R1,A ;将A中的数暂时存放在R1中DJNZ R3,JJJJ ;接收地址码的高8位INC R1 ;对R1中的值加1,换下一个RAMDJNZ R2,PP ;接收完16位地址码和8位数据码和8位数据,存放在1AH/1BH/1CH/1DH的RAM中MOV P1,1DH ;将按键的键值通过P1口的8个LED显示出来!CLR P2.3 ;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功LCALL DELAY2400LCALL DELAY2400LCALL DELAY2400SETB P2.3;蜂鸣器停止LJMP MAINIR_Rp:LJMP MAINEXIT:LJMP MAIN ;退出解码子程序;=============================882DELAY882: ;1.085x ((202x4)+5)=882MOV R7,#202DELAY882_A:NOPNOPDJNZ R7,DELAY882_ARET;=============================1000DELAY1000: ;1.085x ((229x4)+5)=999.285MOV R7,#229DELAY1000_A:NOPNOPDJNZ R7,DELAY1000_ARET;=============================2400
上传时间: 2013-11-01
上传用户:2525775
SAM88RCRI 指令集支持寄存器卷操作,它可完成8 位算术操作和逻辑操作,共有41条指令集。由于采用了存贮器影射方式,所以没有具体的I/O 口操作指令。指令支持位操作,循环、移位等数据操作。为访问个别寄存器,应指定寄存器卷中0--255 的8 位地址或工作寄存器中的4 位地址。工作寄存器中,寄存器对可以访问13 位程序存贮空间和数据存贮空间。SAM88CRI 支持6种地址访问方法,方便了编程操作。
上传时间: 2013-12-02
上传用户:heart_2007
单片机综合应用技术 1.1 单片机技术的发展与单片机应用的广泛选择 1.2 带A/D转换的8位微控制器PIC12C67X?? 1.3 SPI串行总线在8031单片机应用系统中的实现?? 1.4 单总线技术在测控系统中的应用?? 1.5 多任务机制在单片机系统中的应用?? 1.6 软件实现的8031单片微机中断多优先级研究?? 1.7 单片机汇编语言程序设计的变量取值表技术?? 1.8 单片机的代码优化方法?? 1.9 由微机复位引出的问题?? 1.10 一种快速CRC差错校验技术?? 1.11 基于单片机的Chebyshev神经网络硬件设计?? 1.12 二维条形码(PDF417)及其应用?? 1.13 EDA技术的应用?? 1.14 CPLD/FPGA在电子设计中的应用前景?? 1.15 现场可编程模拟ASIC与电子系统设计?? 1.16 用单片PLD器件ispLSI1016实现数显频率计
标签: 单片机
上传时间: 2014-05-05
上传用户:daxigua