虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

必须

  • PC机之间串口通信的实现

    PC机之间串口通信的实现一、实验目的 1.熟悉微机接口实验装置的结构和使用方法。 2.掌握通信接口芯片8251和8250的功能和使用方法。 3.学会串行通信程序的编制方法。 二、实验内容与要求 1.基本要求主机接收开关量输入的数据(二进制或十六进制),从键盘上按“传输”键(可自行定义),就将该数据通过8251A传输出去。终端接收后在显示器上显示数据。具体操作说明如下:(1)出现提示信息“start with R in the board!”,通过调整乒乓开关的状态,设置8位数据;(2)在小键盘上按“R”键,系统将此时乒乓开关的状态读入计算机I中,并显示出来,同时显示经串行通讯后,计算机II接收到的数据;(3)完成后,系统提示“do you want to send another data? Y/N”,根据用户需要,在键盘按下“Y”键,则重复步骤(1),进行另一数据的通讯;在键盘按除“Y”键外的任意键,将退出本程序。2.提高要求 能够进行出错处理,例如采用奇偶校验,出错重传或者采用接收方回传和发送方确认来保证发送和接收正确。 三、设计报告要求 1.设计目的和内容 2.总体设计 3.硬件设计:原理图(接线图)及简要说明 4.软件设计框图及程序清单5.设计结果和体会(包括遇到的问题及解决的方法) 四、8251A通用串行输入/输出接口芯片由于CPU与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,必须要有“接收移位寄存器”(串→并)和“发送移位寄存器”(并→串)。能够完成上述“串←→并”转换功能的电路,通常称为“通用异步收发器”(UART:Universal Asynchronous Receiver and Transmitter),典型的芯片有:Intel 8250/8251。8251A异步工作方式:如果8251A编程为异步方式,在需要发送字符时,必须首先设置TXEN和CTS#为有效状态,TXEN(Transmitter Enable)是允许发送信号,是命令寄存器中的一位;CTS#(Clear To Send)是由外设发来的对CPU请求发送信号的响应信号。然后就开始发送过程。在发送时,每当CPU送往发送缓冲器一个字符,发送器自动为这个字符加上1个起始位,并且按照编程要求加上奇/偶校验位以及1个、1.5个或者2个停止位。串行数据以起始位开始,接着是最低有效数据位,最高有效位的后面是奇/偶校验位,然后是停止位。按位发送的数据是以发送时钟TXC的下降沿同步的,也就是说这些数据总是在发送时钟TXC的下降沿从8251A发出。数据传输的波特率取决于编程时指定的波特率因子,为发送器时钟频率的1、1/16或1/64。当波特率指定为16时,数据传输的波特率就是发送器时钟频率的1/16。CPU通过数据总线将数据送到8251A的数据输出缓冲寄存器以后,再传输到发送缓冲器,经移位寄存器移位,将并行数据变为串行数据,从TxD端送往外部设备。在8251A接收字符时,命令寄存器的接收允许位RxE(Receiver Enable)必须为1。8251A通过检测RxD引脚上的低电平来准备接收字符,在没有字符传送时RxD端为高电平。8251A不断地检测RxD引脚,从RxD端上检测到低电平以后,便认为是串行数据的起始位,并且启动接收控制电路中的一个计数器来进行计数,计数器的频率等于接收器时钟频率。计数器是作为接收器采样定时,当计数到相当于半个数位的传输时间时再次对RxD端进行采样,如果仍为低电平,则确认该数位是一个有效的起始位。若传输一个字符需要16个时钟,那么就是要在计数8个时钟后采样到低电平。之后,8251A每隔一个数位的传输时间对RxD端采样一次,依次确定串行数据位的值。串行数据位顺序进入接收移位寄存器,通过校验并除去停止位,变成并行数据以后通过内部数据总线送入接收缓冲器,此时发出有效状态的RxRDY信号通知CPU,通知CPU8251A已经收到一个有效的数据。一个字符对应的数据可以是5~8位。如果一个字符对应的数据不到8位,8251A会在移位转换成并行数据的时候,自动把他们的高位补成0。 五、系统总体设计方案根据系统设计的要求,对系统设计的总体方案进行论证分析如下:1.获取8位开关量可使用实验台上的8255A可编程并行接口芯片,因为只要获取8位数据量,只需使用基本输入和8位数据线,所以将8255A工作在方式0,PA0-PA7接实验台上的8位开关量。2.当使用串口进行数据传送时,虽然同步通信速度远远高于异步通信,可达500kbit/s,但由于其需要有一个时钟来实现发送端和接收端之间的同步,硬件电路复杂,通常计算机之间的通信只采用异步通信。3.由于8251A本身没有时钟,需要外部提供,所以本设计中使用实验台上的8253芯片的计数器2来实现。4:显示和键盘输入均使用DOS功能调用来实现。设计思路框图,如下图所示: 六、硬件设计硬件电路主要分为8位开关量数据获取电路,串行通信数据发送电路,串行通信数据接收电路三个部分。1.8位开关量数据获取电路该电路主要是利用8255并行接口读取8位乒乓开关的数据。此次设计在获取8位开关数据量时采用8255令其工作在方式0,A口输入8位数据,CS#接实验台上CS1口,对应端口为280H-283H,PA0-PA7接8个开关。2.串行通信电路串行通信电路本设计中8253主要为8251充当频率发生器,接线如下图所示。

    标签: PC机 串口通信

    上传时间: 2013-12-19

    上传用户:小火车啦啦啦

  • μ’nSP单片机应用及开发技术

    本章将介绍μ’nSP™系列单片机的应用领域,具体讲述SPCE061A单片机在通讯、语音领域里的应用,并详细给出了有关系统的电路原理图、程序流程图以及程序代码,供读者参考。 μ’nSP™家族产品具有电源电压范围和工作速率范围较宽、集成度高、性能价格比高以及功耗低等特点,故其有非常广泛的应用领域。μ’nSP™家族系列产品,涵盖了非常广泛的应用。包括:发音与语音识别的微控制器(SPCE系列)、通信来电辩识应用的微控制器(SPT660x系列)、以及通用型微控制器等等,主要体现在以下几个方面:􀂄 用于数字信号处理􀂄 用于开发研制便携式移动终端􀂄 用于开发嵌入式计算机应用系统 用于数字信号处理1. 数字滤波器 (Digital Filter)数字滤波器是一种计算处理或算法。借助于此,可以将输入的一种数字信号或序列变换为另一种序列输出。数字滤波器已被广泛地应用于数字语音、数字图像处理以及模式识别和频谱分析。数字信号处理器(DSP,Digital Signal Processor)的作用是通过一系列数字来表示信号及其信息,并借助数字计算方法变换和处理这些信号。为了构成DSP,必须有一种部件能够快速地完成两个数值的乘法运算并将乘积累加于寄存器。“快速”意味着乘和累加(MAC,Multiply & ACcumulate)较高的运算速度。若以16位数值进行乘和累加,其结果应为32位。显然,μ’nSP™的硬件结构与其指令系统的结合足以构成DSP应用的硬件MAC单元,因而很适用于一些DSP方面的应用。

    标签: nSP 单片机应用 开发技术

    上传时间: 2014-01-26

    上传用户:qb1993225

  • 单片机系统常用软件抗干扰措施

    单片机系统常用软件抗干扰措施:可靠性设计是一项系统工程,单片机系统的可靠性必须从软件、硬件以及结构设计等方面全面考虑。硬件系统的可靠性设计是单片机系统可靠性的根本,而软件系统的可靠性设计起到抑制外来干扰的作用。软件系统的可靠性设计的主要方法有:开机自检、软件陷阱(进行程序“跑飞”检测)、设置程序运行状态标记、输出端口刷新、输入多次采样、软件“看门狗”等。通过软件系统的可靠性设计,达到最大限度地降低干扰对系统工作的影响,确保单片机及时发现因干扰导致程序出现的错误,并使系统恢复到正常工作状态或及时报警的目的。一、开机自检开机后首先对单片机系统的硬件及软件状态进行检测,一旦发现不正常,就进行相应的处理。开机自检程序通常包括对RAM、ROM、I/O口状态等的检测。1 检测RAM检查RAM读写是否正常,实际操作是向RAM单元写“00H”,读出也应为“00H”,再向其写“FFH”,读出也应为“FFH”。如果RAM单元读写出错,应给出RAM出错提示(声光或其它形式),等待处理。2 检查ROM单元的内容对ROM单元的检测主要是检查ROM单元的内容的校验和。所谓ROM的校验和是将ROM的内容逐一相加后得到一个数值,该值便称校验和。ROM单元存储的是程序、常数和表格。一旦程序编写完成,ROM中的内容就确定了,其校验和也就是唯一的。若ROM校验和出错,应给出ROM出错提示(声光或其它形式),等待处理。3 检查I/O口状态首先确定系统的I/O口在待机状态应处的状态,然后检测单片机的I/O口在待机状态下的状态是否正常(如是否有短路或开路现象等)。若不正常,应给出出错提示(声光或其它形式),等待处理。4 其它接口电路检测除了对上述单片机内部资源进行检测外,对系统中的其它接口电路,比如扩展的E2PROM、A/D转换电路等,又如数字测温仪中的555单稳测温电路,均应通过软件进行检测,确定是否有故障。只有各项检查均正常,程序方能继续执行,否则应提示出错。

    标签: 单片机系统 软件 抗干扰措施

    上传时间: 2013-11-02

    上传用户:名爵少年

  • MCS51系列单片机软件控制复位的可靠方法

    MCS51系列单片机软件控制复位的可靠方法:文章指出了一种广泛流传的误解:在MCS-51系列单片机中,只要用指令使程序从起始地址开始执行,就可以复位单片机,摆脱干扰。通过实验,揭示了软件控制复位的可靠方法。有的单片机(如8098)有专门的复位指令,某些增强型MCS-51系统单片机虽然没有复位指令,但片内集成了WATCHDOG电路,故抗干扰也不成问题。而普及型MCS-51系列单片机(如8031和8032)既然无复位指令,又不带硬件WATCHDOS,如果没有外接硬件WATCHDOG电路,就必须采用软件抗干扰技术。常用的软件抗干扰技术有:软件陷阱、指令冗余、软件WATCHDOG等,它们的作用是在系统受干扰时能及时发现,再用软件的方法使系统复位。所谓软件复位就是用一系列指令来模仿复位操作,这就是MCS-51系列单片机所特有的软件复位技术。现用一简单的实验说明。接于P1.0的发光二极管LED0用来表示主程序的工作情况,接于P1.1的发光二极管LED1用于表示低级中断子程序的工作情况,接于P1.2的发光二极管LED2用来表示高级中断子程序的工作情况,接于P3.2口的按钮用来设立干扰标志,程序检测到干扰标志后故意进入死循环或掉进陷井,模仿受干扰的情况,从而检验各种复位方法的实际效果。实验初始化程序如下:

    标签: MCS 51 单片机 软件控制

    上传时间: 2013-11-03

    上传用户:sevenbestfei

  • 改善基于微控制器的应用的瞬态免疫性能

    家电制造业的竞争日益激烈,市场调整压力越来越大,原始设备制造商们(OEM)为了面对这一挑战,必须在满足电磁兼容性的条件下,不断降低产品的成本。由于强调成本控制,为防止由电源和信号线的瞬变所产生的电器故障而实施必要的瞬态免疫保护,对于家电设计者来说变得更具挑战性。由于传统的电源设计和电磁干扰(EMI)控制措施为节约成本让路,家电设计者必须开发出新的技术来满足不断调整的电磁兼容(EMC)需求。本应用笔记探讨了瞬态电气干扰对嵌入式微控制器(MCU)的影响,并提供了切实可行的硬件和软件设计技术,这些技术可以为电快速瞬变(EFT)、静电放电(ESD)以及其它电源线或信号线的短时瞬变提供低成本的保护措施。虽然这种探讨是主要针对家电制造商,但是也适用于消费电子、工业以及汽车电子方面的应用。 低成本的基于MCU 的嵌入式应用特别容易受到ESD 和EFT 影响降低性能。即使是运行在较低时钟频率下的微控制器,通常对快速上升时间瞬变也很敏感。这种敏感性归咎于所使用的工艺技术。如今针对低成本8/16位的MCU的半导体工艺技术所实现的晶体管栅极长度在0.65 μm~0.25 μm范围内。此范围内的栅极长度能产生和响应上升时间在次纳秒范围内(或超过300 MHz 的等同带宽)的信号。因此, MCU 能够响应进入其引脚的ESD 或EFT 信号。除上述工艺技术之外, MCU 在ESD 或EFT 事件中的性能还会受到IC 设计及其封装、印刷电路板(PCB)的设计、MCU 上运行的软件、系统设计以及ESD 或EFT 波形特征的影响。各因素的相对影响(强调对最大影响的贡献)如图1 所示。

    标签: 微控制器 瞬态免疫 性能

    上传时间: 2013-11-09

    上传用户:Jerry_Chow

  • 驱动程序与应用程序的接口

    有两种方式可以让设备和应用程序之间联系:1. 通过为设备创建的一个符号链;2. 通过输出到一个接口WDM驱动程序建议使用输出到一个接口而不推荐使用创建符号链的方法。这个接口保证PDO的安全,也保证安全地创建一个惟一的、独立于语言的访问设备的方法。一个应用程序使用Win32APIs来调用设备。在某个Win32 APIs和设备对象的分发函数之间存在一个映射关系。获得对设备对象访问的第一步就是打开一个设备对象的句柄。 用符号链打开一个设备的句柄为了打开一个设备,应用程序需要使用CreateFile。如果该设备有一个符号链出口,应用程序可以用下面这个例子的形式打开句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路径名的前缀“\\.\”告诉系统本调用希望打开一个设备。这个设备必须有一个符号链,以便应用程序能够打开它。有关细节查看有关Kdevice和CreateLink的内容。在上述调用中第一个参数中前缀后的部分就是这个符号链的名字。注意:CreatFile中的第一个参数不是Windows 98/2000中驱动程序(.sys文件)的路径。是到设备对象的符号链。如果使用DriverWizard产生驱动程序,它通常使用类KunitizedName来构成设备的符号链。这意味着符号链名有一个附加的数字,通常是0。例如:如果链接名称的主干是L“TestDevice”那么在CreateFile中的串就该是“\\\\.\\TestDevice0”。如果应用程序需要被覆盖的I/O,第六个参数(Flags)必须或上FILE_FLAG_OVERLAPPED。 使用一个输出接口打开句柄用这种方式打开一个句柄会稍微麻烦一些。DriverWorks库提供两个助手类来使获得对该接口的访问容易一些,这两个类是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass类封装了一个设备信息集,该信息集包含了特殊类中的所有设备接口信息。应用程序能有用CdeviceInterfaceClass类的一个实例来获得一个或更多的CdeviceInterface类的实例。CdeviceInterface类是一个单一设备接口的抽象。它的成员函数DevicePath()返回一个路径名的指针,该指针可以在CreateFile中使用来打开设备。下面用一个小例子来显示这些类最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface(  GUID* pClassGuid,  DWORD instance,  PDWORD pError){  CDeviceInterfaceClass DevClass(pClassGuid, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  CDeviceInterface DevInterface(&DevClass, instance, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  cout << "The device path is "    << DevInterface.DevicePath()    << endl;   HANDLE hDev;  hDev = CreateFile(   DevInterface.DevicePath(),    GENERIC_READ | GENERIC_WRITE,    FILE_SHARE_READ | FILE_SHARE_WRITE,    NULL,    OPEN_EXISTING,    FILE_ATTRIBUTE_NORMAL,    NULL  );  if (hDev == INVALID_HANDLE_VALUE)    *pError = GetLastError();  return hDev;} 在设备中执行I/O操作一旦应用程序获得一个有效的设备句柄,它就能使用Win32 APIs来产生到设备对象的IRPs。下面的表显示了这种对应关系。Win32 API  DRIVER_FUNCTION_xxxIRP_MJ_xxx  KDevice subclass member function CreateFile  CREATE  Create ReadFile  READ  Read WriteFile  WRITE  Write DeviceIoControl  DEVICE_CONTROL  DeviceControl CloseHandle  CLOSECLEANUP  CloseCleanUp 需要解释一下设备类成员的Close和CleanUp:CreateFile使内核为设备创建一个新的文件对象。这使得多个句柄可以映射同一个文件对象。当这个文件对象的最后一个用户级句柄被撤销后,I/O管理器调用CleanUp。当没有任何用户级和核心级的对文件对象的访问的时候,I/O管理器调用Close。如果被打开的设备不支持指定的功能,则调用相应的Win32将引起错误(无效功能)。以前为Windows95编写的VxD的应用程序代码中可能会在打开设备的时候使用FILE_FLAG_DELETE_ON_CLOSE属性。在Windows NT/2000中,建议不要使用这个属性,因为它将导致没有特权的用户企图打开这个设备,这是不可能成功的。I/O管理器将ReadFile和WriteFile的buff参数转换成IRP域的方法依赖于设备对象的属性。当设备设置DO_DIRECT_IO标志,I/O管理器将buff锁住在存储器中,并且创建了一个存储在IRP中的MDL域。一个设备可以通过调用Kirp::Mdl来存取MDL。当设备设置DO_BUFFERED_IO标志,设备对象分别通过KIrp::BufferedReadDest或 KIrp::BufferedWriteSource为读或写操作获得buff地址。当设备不设置DO_BUFFERED_IO标志也不设置DO_DIRECT_IO,内核设置IRP 的UserBuffer域来对应ReadFile或WriteFile中的buff参数。然而,存储区并没有被锁住而且地址只对调用进程有效。驱动程序可以使用KIrp::UserBuffer来存取IRP域。对于DeviceIoControl调用,buffer参数的转换依赖于特殊的I/O控制代码,它不在设备对象的特性中。宏CTL_CODE(在winioctl.h中定义)用来构造控制代码。这个宏的其中一个参数指明缓冲方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表显示了这些方法和与之对应的能获得输入缓冲与输出缓冲的KIrp中的成员函数:Method  Input Buffer Parameter  Output Buffer Parameter METHOD_BUFFERED  KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER  KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代码指明METHOD_BUFFERED,系统分配一个单一的缓冲来作为输入与输出。驱动程序必须在向输出缓冲放数据之前拷贝输入数据。驱动程序通过调用KIrp::IoctlBuffer获得缓冲地址。在完成时,I/O管理器从系统缓冲拷贝数据到提供给Ring 3级调用者使用的缓冲中。驱动程序必须在结束前存储拷贝到IRP的Information成员中的数据个数。如果控制代码不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,则DeviceIoControl的参数呈现不同的含义。参数InputBuffer被拷贝到一个系统缓冲,这个缓冲驱动程序可以通过调用KIrp::IoctlBuffer。参数OutputBuffer被映射到KMemory对象,驱动程序对这个对象的访问通过调用KIrp::Mdl来实现。对于METHOD_OUT_DIRECT,调用者必须有对缓冲的写访问权限。注意,对METHOD_NEITHER,内核只提供虚拟地址;它不会做映射来配置缓冲。虚拟地址只对调用进程有效。这里是一个用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE来定义一个IOCTL代码:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)现在使用一个DeviceIoControl调用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,这里放的是包含有执行操作命令的字符串指针  0, FirmwareRev,      //这里是output串指针,存放从驱动程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果输出缓冲足够大,设备拷贝串到里面并将拷贝的资结束设置到FirmwareRevSize中。在驱动程序中,代码看起来如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){  ULONG fwLength=0;  switch ( I.IoctlCode() )  {    case IOCTL_MYDEV_GET_FIRMWARE_REV:      fwLength = strlen(FIRMWARE_REV)+1;      if (I.IoctlOutputBufferSize() >= fwLength)      {        strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV);        I.Information() = fwLength;         return I.Complete(STATUS_SUCCESS);      }      else      {              }    case . . .   } }

    标签: 驱动程序 应用程序 接口

    上传时间: 2013-10-17

    上传用户:gai928943

  • 改善基于微控制器的应用的瞬态免疫性能

    家电制造业的竞争日益激烈,市场调整压力越来越大,原始设备制造商们(OEM)为了面对这一挑战,必须在满足电磁兼容性的条件下,不断降低产品的成本。由于强调成本控制,为防止由电源和信号线的瞬变所产生的电器故障而实施必要的瞬态免疫保护,对于家电设计者来说变得更具挑战性。由于传统的电源设计和电磁干扰(EMI)控制措施为节约成本让路,家电设计者必须开发出新的技术来满足不断调整的电磁兼容(EMC)需求。本应用笔记探讨了瞬态电气干扰对嵌入式微控制器(MCU)的影响,并提供了切实可行的硬件和软件设计技术,这些技术可以为电快速瞬变(EFT)、静电放电(ESD)以及其它电源线或信号线的短时瞬变提供低成本的保护措施。虽然这种探讨是主要针对家电制造商,但是也适用于消费电子、工业以及汽车电子方面的应用。

    标签: 微控制器 瞬态免疫 性能

    上传时间: 2013-11-22

    上传用户:csgcd001

  • 微型计算机课程设计论文—通用微机发声程序的汇编设计

    微型计算机课程设计论文—通用微机发声程序的汇编设计 本文讲述了在微型计算机中利用可编程时间间隔定时器的通用发声程序设计,重点讲述了程序的发声原理,节拍的产生,按节拍改变的动画程序原理,并以设计一个简单的乐曲评分程序为引子,分析程序设计的细节。关键字:微机 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

  • LPC932单片机可靠性设计方案

    1. 使用单片机内部复位电路的可靠性设计LPC932 单片机只能工作在3V 供电电压下其外围器件既可以选用3V 接口器件也可以选用5V 接口器件当用户决定使用内部复位时为了保证单片机上电复位100 可靠必须在复位引脚接一上拉电阻如5 10K 如果单片机使用3V 电源电压外围器件使用5V 电源电压准确的复位电路设计方法如图1 所示如果单片机使用3V 电源电压外围器件使用3V 电源电压准确的复位电路设计方法如图2 所示 2. 使用单片机外部复位电路的可靠性设计LPC932 单片机只能工作在3V 供电电压下其外围器件既可以选用3V 接口器件也可以选用5V 接口器件当用户决定使用外部复位电源监控器件时为了保证单片机上电复位100 可靠一定要注意根据外围器件的供电电源方式选择复位电源监控器件如果单片机使用3V 电源电压外围器件使用5V 电源电压准确的复位电路设计方法如图3 所示请选择PHILIPS 半导体公司生产的MAX809L 等合适的电源监控器件如果单片机使用3V 电源电压外围器件使用3V 电源电压准确的复位电路设计方法如图4 所示请选择PHILIPS 半导体公司生产的MAX809R 等合适的电源监控器件.

    标签: LPC 932 单片机 可靠性

    上传时间: 2014-03-24

    上传用户:aix008

  • 模拟接口

    8.1  模拟接口概述单片机的外部设备不一定都是数字式的,也经常会和模拟式的设备连接。     例如单片机来控制温度、压力时,温度和压力都是连续变化的,都是模拟量,在单片机与外部环境通信的时候,就需要有一种转换器来把模拟信号变为数字信号,以便能够输送给单片机进行处理。而单片机送出的控制信号,也必须经过变换器变成模拟信号,才能为控制电路所接受。这种变换器就称为数模(D/A)转换器和模数(A/D)转换器。CPU与模拟外设之间的接口电路称为模拟接口。在这一章里将介绍单片机与 A/D及D/A转换器接口,以及有关的应用。  8.2  DAC及其接口一、DAC介绍:1.DAC结构:DAC芯片上集成有D/A转换电路和辅助电路。2.DAC的参数:描述D/A转换器性能的参数很多,主要有以下几个:分辨率(Resolution) 偏移误差(OffsetError)  线性度(Linearity) 精度(Accuracy) 转换速度(ConvemionRate) 温度灵敏度(TemperatureSensitivity) 二、典型DAC芯片及其接口一、DAC介绍:1.DAC结构:DAC芯片上集成有D/A转换电路和辅助电路。2.DAC的参数:描述D/A转换器性能的参数很多,主要有以下几个:分辨率(Resolution) 偏移误差(OffsetError)  线性度(Linearity) 精度(Accuracy) 转换速度(ConvemionRate) 温度灵敏度(TemperatureSensitivity)  8.3  ADC及其接口DAC 0832的结构DAC 0832的引脚DAC 0832的接口DAC 0832的应用DAC0832是CMOS工艺,双列直插式20引脚。① VCC电源可以在5-15V内变化。典型使用时用15V电源。② AGND为模拟量地线,DGND为数字量地线,使用时,这两个接地端应始终连在一起。③ 参考电压VREF接外部的标准电源,VREF一般可在+10V到—10V范围内选用。

    标签: 模拟接口

    上传时间: 2013-10-10

    上传用户:ukuk