版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE5目录前言…………2系统原理框图4一系统原理框图的绘制………4二原理图………6硬件部分介绍………………7一AT89C51单片机简介………7二RS232串行接口……………9三SLE4442简介………………11四IC卡座……………………11五外围电路………13软件部分……17一工作过程、流程图…………17二用C51实现的读/写主程序19三上位PC机通信接口软件……26总结……………..28一总结……………28二参考文献………28前言IC卡是一个正蓬勃发展的边缘产业,一个与我们的生活正越来越密切的产业。在普及因特网和计算机的大潮涌来时,IC卡扮演着越来越重要的角色。IC卡读写设备大致可分为两大类:一类为专用读写设备或称脱机读写器。其特点是:充分利用IC卡存储量大,可以独立存储和工作,不需要和主机相连就可完成数据读写的优点,可与应用设备结合或单独工作。例如:IC卡电表,水表,ATM机,商场收款机。另一类为通用读写设备,或称联机读写器,是带有单片机和存储器的设备,通过并行或串行口与PC机或应用系统网络相连接。在运行不同软件时可以读写不同种类的IC卡,组成不同的应用系统。如果配备开发系统软件,可对IC卡做初始规划,数据加密和初始写入,从而构成IC卡应用开发制作环境。在本设计中,我们讨论通用开发系统——基于ATM89C51单片机的IC卡读/写器的设计。
IC卡读/写设备由IC卡卡座,单片机,数据存储器RAM,程序存储器EEPROM,接口电路和外围设备等组成。
IC卡读/写器各部分结构与功能简单介绍如下:
1.IC卡卡座
IC卡卡座是连接IC卡与读写器的。其功能包括对IC卡供电,提供读写信号和传送数据。要求提供方便的插拔方式和可靠的接触,并带有带电插拔,过流保护,插卡检测等能力。IC卡和插座的结构尺寸必须符合国际标准化组织(ISO)7816的标准。对触点数目、位置、信号名称和功能都有明确规定,以保证兼容性。
2.单片机和存储器
读写器中配备单片机和ROM,RAM存储器,构成微机系统,单片机运行ROM中固化的软件,执行与IC卡和上位PC机的通信规程。控制对IC卡的读写,完成IC卡与主机间数据的格式转换。为减轻单片机负担,提高读写速度,常配置有硬件密文转换和单元。3.接口电路和外围设备二原理图:第二章硬件部分介绍一AT89C51单片机简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89c51是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51是它的一种精简版本。AT89C511.主要特性:
·与MCS-51兼容
·4K字节可编程闪烁存储器
寿命:1000写/擦循环
数据保留时间:10年
·全静态工作:0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路2.管脚说明:
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。3.振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。4.芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。二RS232串行接口EIA-RS-232C是由美国电子工业协会EIA制订的一种串行物理接口标准。RS-232C采用负逻辑,-5~-15V为逻辑1,+5~+15V为逻辑0。而TTL电平的“1”和“0”的特征电压分别为2.4V和0.4V,用RS-232C总线进行串行通信需外接电路实现电平转换。在发送端需用驱动电路将TTL电平转换成RS-232C电平,在接收端用接收电路将RS-232C电路转换为TTL电平。本设计是用的TI公司的RS-232C收发器MAX232,可用单一+5V电源供电实现电平转换。RS-232C在设计中主要永远用于PC机与IC卡读/写器之间的通框图如下RS-232C芯片的引脚结构如图5所示:图5图5中的C1、C2、C3、C4及V+、V—是电源变换电路部分。在实际应用中,器件对电源噪音很敏感。因此,VCC必须要对地加去耦电容,其值为0.1μF。电容C1、C2、C3及C4取同样的数值的钽电解电容,用以提高抗干扰能力,在连接时必须尽量靠近器件。MAX232的13、14管脚为串行异步通信发送及接受引脚。三SLE4442卡简介
SLE4442卡内部有一个256
8bit
EEPROM,不可逆的4个写保护字节,具备密码保护功能,可以随时读取主存储器内容;在校验成功后,可读保护存储器、读写安全存储器和写主存储器。
SLE4442有一个密码逻辑,用以控制对存储器的读写。为此,SLE4442包含一个4字节加密存储区,该存储区有一个错误计数器EC(0-2位)和三个字节的参考数据,这三个字节作为一个整体,称为可编程密码(PSV)。整个数据区除了参考数据,其它的数据都能被读取,在校验数据与内部参考数据比较正确后才能进行读写操作,连续三次比较错误后,错位计数器将阻止任何比较尝试,从而也消除了任何擦写操作。四IC卡座IC卡座引脚如图6所示,其中引脚SW1、SW2为微动开关在无IC卡状态时,处与断开状态;有卡插入时,IC卡卡座上的微动开关闭合。因此,此开关往往是用来判断是否插IC卡的传感器件。其引脚VCC:工作电压;SCL(CLK):串行时钟;GND:接地;SDA(I/O):串行数据(输入/输出);SW1、SW2:微动开关本设计中与逻辑有关的引出端先只有2条:SCL和SDA。所有的地址、数据及读/写控制命令等信号均从SDA端输入/输出。为了区分线上的数据、地址、操作命令以及各种状态的“开始”与“结束”,卡片内设计就多个逻辑控制单元。其中,启动与停止逻辑单元产生控制读/写操作的“开始”与“停止”标志信号。“开始”状态:当SCL处于高电平时,SDA从高电平转向低电平,即产生“开始”标志信号。“停止”状态:当SCL处于高电平时,SDA从低电平转向高电平,即产生一个“停止”标志信号,如图6所示:图6读/写的启动与停止时序SDA和SCL通常各自通过一个电阻拉到高电平,当SCL为高电平时,对应的SDA上的数据有宵;而当SCL为低电平时,允许SDA上的数据变化。数据输入/输出应答逻辑单元产生数据输入/输出操作应答信号。操作时所有的地址和数据字均一8位码串行输入/输出于卡片。卡片没收到一个8位码长的地址或数据后都以置SDA线为低电平方式“确认”应答信号,其波形如图7所示图7五外围电路(1)状态灯IC卡的上电一般是可知的,即对IC卡读/写时,须给IC卡上电(送电源),因此,IC卡的上电控制比较简单。由于IC卡读/写电流很小,一般为几个A,因此其实现可按照图8所示。由单片机89C51的P14信号通过小功率三极管9012控制系统的+5V电源切入IC卡座。当IC卡上电后,发光二极管L2被点亮,起读/写指示作用。每次对IC卡读/写完成后。即及时先电,以减少插拔时带电的可能性,要保证IC卡能任意插拔(有可能处于带电状态),不致IC卡损坏,必须使IC卡拔电过程处于断电的状态。要做到这点,必须保证IC卡的下电迅速及时图8(2)蜂鸣器一般所指的蜂鸣器是以压电陶瓷为主要元件的。压电陶瓷是一类有将压力与电流相互转换能力的特殊陶瓷。这种能力缘于其特殊的晶体结构。当压电陶瓷在一定方向上受到一个压力使其晶体结构发生形变时,它就会在内部产生一个电流,并且电流的变化与压力的变化密切相关。反之亦然。所以利用这一特性,在压电陶瓷上通过一定频率的电流,就会引起压电陶瓷微小形变,这一形变带动空气发生振动,如果频率适当,就可以被人耳所听见,也就是产生了蜂鸣声。本设计当中蜂鸣起的做用是IC卡与单片机是否连接。将IC卡插进卡座时,IC卡座与单片机之间的连接无误是蜂鸣器会响。在取出IC卡,即IC卡与单片机断开连接,蜂鸣器也要响。具体连接图如图9所示:图9(3)电源电路U1=220V,U2=8V,Uc1=1.2U2=9.6V,UO=5V功率稳压电源由电源变压器、整流电路、滤波电路和稳压电路四个部分组成,如图10所示+电源+整流+滤波+稳压+u1u2u3uIU0_变压器_电路_电路_电路_u1u2u3uIU00t0t0t0t0t图10稳压电源的组成框图及整流与稳压过程(1).电源变压器电源变压器的作用是将来自电网的220V交流电压u1变换为整流电路所需要的交流电压u2。电源变压器的效率为:其中:是变压器副边的功率,是变压器原边的功率。(2).整流和滤波电路在稳压电源中一般用四个二极管组成桥式整流电路,整流电路的作用是将交流电压u2变换成脉动的直流电压u3。滤波电路一般由电容组成,其作用是把脉动直流电压u3中的大部分纹波加以滤除,以得到较平滑的直流电压UI。UI与交流电压u2的有效值U2的关系为:在整流电路中,每只二极管所承受的最大反向电压为:流过每只二极管的平均电流为:其中:R为整流滤波电路的负载电阻,它为电容C提供放电通路,放电时间常数RC应满足:其中:T=20ms是50Hz交流电压的周期。(3)稳压电路由于输入电压u1发生波动、负载和温度发生变化时,滤波电路输出的直流电压UI会随着变化。因此,为了维持输出电压UI稳定不变,还需加一级稳压电路。稳压电路的作用是当外界因素(电网电压、负载、环境温度)发生变化时,能使输出直流电压不受影响,而维持稳定的输出。稳压电路一般采用集成稳压器和一些外围元件所组成。采用集成稳压器设计的稳压电源具有性能稳定、结构简单等优点。集成稳压器的类型很多,在小功率稳压电源中,普遍使用的是三端稳压器。按输出电压类型可分为固定式和可调式,此外又可分为正电压输出或负电压输出两种类型。固定电压输出稳压器常见的有CW78(LM78)系列三端固定式正电压输出集成稳压器;CW79(LM79)系列三端固定式负电压输出集成稳压器。三端是指稳压电路只有输入、输出和接地三个接地端子。型号中最后两位数字表示输出电压的稳定值,有5V、6V、9V、15V、18V和24V。稳压器使用时,要求输入电压UI与输出电压UO的电压差UI–UO≥2V。稳压器的静态电流Io=8mA。当UO=5~18V时,UI的最大值UIMAX=35V;当UO=18~24V时,UI的最大值UIMAX=40V。第三章软件部分一.工作过程软件结构设计及其分析读/写器软件结构读/写器的读/写操作由上位PC机进行控制,通过串行通信的命令字节来实现。集体规定我诶:如握手信号为0AAH,则读卡;如握手信号为0BBH,则写卡。读/写器的主程序框图如图11所示。其中,在读/写卡开始时,设置读写卡标志;在通信开始时,设置通信标志。避免数据不全或错误数据读入或写入。另外,所以的IC卡数据是先存放在IC卡的读缓冲区和写缓冲区的。“有卡插入否”是用过判断P33引脚的高低电平来实现的。为了保证读卡的可靠性,必须进行软件“去抖”处理。一旦有卡插入,则设置读/写卡标志(有卡);在通信时,设置正在通信标志。目的是我为了避免带电插卡。本系统中关键的软复位是通过在外中断INT0服务函数中设置软复位标志、在主函数中强制跳转到函数首实现的。图11主程序流程图拔卡处理是通过设置成高优先级的下降沿触发的INT0中断来实现的。其程序如图12所示:图12拔卡处理中断子程序串行通信才用3线制软握手方式(2)软件系统分析为保证IC卡读/写过程准确可靠,除要保证读/写函数严格按照IC卡的读/写时序外,还须采用“重读”和“复读”措施。即读IC卡是,采用读2次的方式,如2次相符,则数据有效,否则再进行第3次读,写IC卡时,先将数据写入,再回读比较,否则重写一次,以免偶然的写失导致得出IC卡失效的错误结论。如何使上、下位机均不死机或能简单恢复正常工作呢?对于作为下位机的IC卡读/写器,利用IC卡能随意插拔,再结合IC卡的拔卡处理是一个高级中断的特点,将IC卡的拔卡中断程序设计成2个分支:(1)非IC卡读/写且非与上位机通信状态;(2)在与上位机通信或正在对IC卡读/写状态。第1种情况下,中断子程序是简单的鞍鼻卡BEEP告警后,直接中断返回;第2种情况,则会引起系统工作时常甚至死机,在恢复中断环境后,用强制跳转指令强制从主程序开始执行,达到复位的效果。程序框图如图12所示。为确保串行通信的可靠性,应着重从上、下位机通信软件的以下问题入手——合理选择通信波特率。由于上、下位机通信的数据量很小(最多为IC卡的容量),因此通信波特率可选低一些,如2400;但要高度重视下位机(即IC卡读/写器)的波特率参数整顶问题。对于51系统CPU,尤其要注意电源管理寄存器中SMOD位的设置。以2400波特率为例,当SMOD=0时,波特率参数为0F9H,实际波特率为2232,此时波特率相对误差是7%;而当SMOD=1时,波特率参数为0F3H,实际波特率为2401,此时波特率相对误差是0.16%,满足正常通信所规定的波特率相对误差小于5%的要求。二用C51实现的读/写主程序#include<reg51.h>#include<absacc.h>#defineucharunsignedchar#defineuintunsignedint/*IC卡信号输入/输出*/Sbitscl=P17;Sbitsda=P16;/*I/O口定义*/SbitICOUT=P32;SbitICIN=P33;SbitCOMM=P34;SbitBELL=P35;SbitPWR=P14;/*波特率选择*/SbitBACD=P12;/*24c01~24c16读/写驱动程序*/Sbita0=ACC-0;Sbita1=ACC-1;Sbita2=ACC-2;Sbita3=ACC-3;Sbita4=ACC-4;Sbita5=ACC-5;Sbita6=ACC-6;Sbita7=ACC-7;/*读/写数据缓冲区,24C01最多为128B*/Ucharbuf[16];Ucharflag;/*标志定义*/SbitIC_WR=flag-0;SbitONCOMM=flag-1;SbitRST=flag-2;Voidstart_ic(void){Sda=1;Scl=1;Delay(2);Sda=0;Delay(6);}Voidstop_ic(void){Sda=0;Scl=1;Delay(6);Sda=1;Delay(6);Scl=0;Sda=0;}Voidack_ic(void){Sda=0;Delay(3);Scl=1;Delay(3);Scl=0;Sda=1;}/*读字节函数,无应答信号*/Unsignedcharrd24(void){sda=1;scl=1;a7=sda;scl=0;Scl=1;a6=sda;scl=0;Scl=1;a5=sda;scl=0;Scl=1;a4=sda;scl=0;Scl=1;a3=sda;scl=0;Scl=1;a2=sda;scl=0;Scl=1;a1=sda;scl=0;Scl=1;a0=sda;scl=0;Sda=1;scl=1;scl=o;`Return(ACC);}/*写字节函数*/Voidwd24(unsignedchardd){ACC=dd;Sda=a7;scl=1;scl=0;Sda=a6;scl=1;scl=0;Sda=a5;scl=1;scl=0;Sda=a4;scl=1;scl=0;Sda=a3;scl=1;scl=0;Sda=a2;scl=1;scl=0;Sda=a1;scl=1;scl=0;Sda=a0;scl=1;scl=0;Sda=1;scl=1;While(sda==1);SCL=0;}/*随机地址地字节函数,address为预读单元地址*/Ucharread_buter(ucharaddress){Ucharx;Start_ic();Wd24(0a0);Wd24(address);Start_ic();Wd24(0a1);X=rd24();Stop_ic();Return(x);}/*从指定地址开始顺序读块地址数据,数据存入全局缓冲区中buf,n为数据字节数*/Ucharread_bytes(ucharaddress,ucharn){Uchara,y;For(y=0;y<n;y++){a=read_byter(address,y);buf[y]=a;}}/**//*字节写入模式写函数,其中address为单元地址,dd为数据*/Voidwrite_byte(ucharaddress,uchardd){Start_ic();Wd24(0a0);Wd24(address);Wd24(dd);Stop_ic();}/*串行通信子程序*//*波特率2400,8位数据位,1位停止位,无校验位*//*先用握手字节y,然后发送x个数据*//*待发送数据在trdata缓冲区中*/Voidcomm.(ucharx,uchary){Uchari,a;Uintj;While(1){TI;while(RI==0);RI=0;A=SBUF;If(a!=y)goto[1];For(j=0;i<x;i++);{SBUFtrdata[i];While(TI==1);TI=0;}For(j=0;j<12500;j++);}}/*主程序初始化函数*/Voidinit(void){RSR=0; PWR=1;IC_WR=0;ONCOMM=0;EX0=1;TMOD=0x20;SCON=0x50;TH1=0xf3;TL1=0xf3;If(BAUI)==0{PCON=0x08;}Else{PCON=0x00;}TR1=1;EA=1;}/*将数据缓冲区16B发往上位机*//*波特率2400,8位数据位,1位停止位,无校验为2*//*待发送数据在buf缓冲区*/Voidtransfer(void){Uchari;Uintj;For(i=0;i<16;i++){SBUF=buf[i];While(TI==0);TI=0;FCR=0;j<1000;j++);}}/*接收16B存入缓冲区*//*波特率2400,8位数据位,1位停止位,无校验位*//*缓冲区为buf*/Voidteceive(void){UcharI,a;For(i=0;i<16;i++){while(RI==0);RI=0;A=SBUF;Buf[i]=a;}}/*将缓冲区的n字节写入IC卡address开始的区域*/Voidwrite_ic(ucharaddress,ucharn){Ucharx,y;For(y=0;y<n;y++){While_byte(address[y],buf[y]);Delay(10);}}/*拔卡中断程序,主要完成IC卡下电及读/写复位*/Voidint_0(void)interrupt0using1{While(!ICOUT);Delay(10);If(!ICOUT){If(IC_WRONCOMM){PWR=1;BELL=0;Delay(10);BELL=1;RST==1;}}}/*延时函数,延时ms数由N决定,但不同的系统需要调整相应参数*/Voiddelay(ucharn){Uchari,j,k;For(k=o;k<n;k++)For(i=0;i<100;i++)For(j=0;j<255;j++);}Voidmain(void){Uchara;Fuwei:init();While(!ICIN);Delay(10);While(!ICIN);IC_WR=1;/*开始读IC卡16B并存入缓冲区*/PWR=0;Read_bytes(0,16);PWR=1;/*等待与上机位建立通信联系*/ONCOMM=1;While(RI==0);RI=0;A=SBUF;Switch(a){case0xaa:SBUF=0xaa;While(!TI);TI=0;Transfer();Break;Case0xbb:SBUF=0xbb;While(!TI);TI=O; Receive(); PWR=0; Write_ic(0,16); PWR=1; Break;Default: SBUF=0xcc; While(!TI); TI=0;}ONCOMM=0;While(!RST);Gotofuwei;}采用fanklincC51编译的命令如下:>C51IC.C>L51IC.OBJ三上位PC机通信接口软件在Windows9x的串行通信实现一般有3种方式:利用Windows9x的API接口函数。对于RAD开发系统(如VB),可利用ActiveX串行通信控件。利用DLL动态链接库,直接操作串行端口。上述3种方式各有特点。这里讨论采用第3种方式实现的串行通信接口,具有应用灵活的特点。下面给出基于Delphi4.0的串行通信DLL程序:LibraryMycomdll;UseSysUtils;Classes;ConstCOM1:=$3f8;COM2:=$2f8;VarCOM:Word;{DLL中全局变量}ProcedureOutb(ConstBeginAsmMOVDX,PortMOVAL,DbyteOUTDXEnd;End;FunctionInb(ConstBeginAsmMOVDX,PortMOVAL,DbyteOUTDXEnd;End;FunctionInb(ConstBeginAsmMOVDX,PortINAL,DXMOV@ResulltEnd;End;{串行口初始化,COM1,COM2可选,波特率2400,4800可选}ProcedureCommInit(ConsstVarBAUDL,BAUDH:Byte;BeginIfPort=1thenCOM:=COM1;ElseCOM:=COM2;IfBAUD=’2400’thenBeginBAUDL:=$30;BAUDH:=$00;End;ElseBeginBAUDL:=$18;BAUDH:=$00;End;Outb(COM+3,$80);Outb(COM,BAUDL);Outb(COM+1,BAUDH);Outb(COM+3,$03);End;{发送一字节}ProcedureSendByte(ConstDbyte:Byte);Stdcall;VarStatus:Byte;BeginRepestStatus:=Inb(COM+5);Until((Statusand$20)=$20);Outb(COM,Dbyte);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防疫期间个人先进事迹(7篇)
- 赴企业调研报告8篇
- 游峨眉山的心得(31篇)
- 手机市场调查报告
- 心理健康教育的活动总结范文
- 消防年度工作总结15篇
- 情深意重,感恩演讲稿300字(3篇)
- 知识竞赛活动领导讲话稿
- 幼儿园卫生保健秋季传染病活动方案
- 2022年购物中心七夕节促销活动方案(7篇)
- (高清版)TDT 1068-2022 国土空间生态保护修复工程实施方案编制规程
- 2023年-2024年应急救援员(五级)理论考试题库(含答案)
- 波斯教圣女制度
- 2024建筑消防设施检测报告书模板
- 丝巾出口方案
- 无人机全行业保险
- 莫忘初心砥砺前行主题班会课件
- 电气设备安全操作培训
- 舞美设计方案
- 《反间防谍教育》课件
- 2020年03月护理查房-镇痛分娩
评论
0/150
提交评论