一种安全可靠的IC卡读写器系统的设计方案_第1页
一种安全可靠的IC卡读写器系统的设计方案_第2页
一种安全可靠的IC卡读写器系统的设计方案_第3页
一种安全可靠的IC卡读写器系统的设计方案_第4页
一种安全可靠的IC卡读写器系统的设计方案_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一种安全可靠的IC卡读写器系统的设计摘要随着现在生活的发展,IC卡在人们的生活中起到了越来越重要的作用,这对IC卡行业是一次挑战,也是一个很好的发展机遇。本文在对IC卡熟悉的基础上,以8051单片机为核心并选用X76F100卡设计了一种安全可靠的IC卡读写器。本论文采用软硬件结合的方法,硬件设计通过对单片机、IC卡的选型,并设计了相应的监控电路、键盘电路和显示电路.论文还对IC卡的内部结构,工作原理,编程和加密进行了详细的研究。软件设计的实现是在硬件系统设计的基础上来编写的,用汇编语言对单片机进行了编程,实现读写卡、控制和显示等功能。本文还对IC卡的安全性进行了研究和讨论,指出了IC卡应用中的漏洞并提出防范的方案。本文设计的IC卡读写器以硬件设计为主,并对IC卡的读写和显示等进行了相关的程序设计。关键词IC卡读写器;X76F100卡;单片机;汇编语言AbstractWiththedevelopmentofourlives,theICcardplaysmoreandmorevitalroleinpeople'slife,whichisachallengetotheICcardprofessionandalsoisaverygooddevelopmentopportunity。ThisarticlecarriesacquaintwiththeICcardonfoundation,takes8051signalchipandselectstheX76F100cardasthecoretodesignonekindofsecurityreliableICcardreader-writer.Thepaperusesthemethodofthesoftwareandhardwareunified,thehardwarehasbeendesignedinthecorrespondingmonitoringcircuit,thekeyboardcircuitandthedisplaycircuitthroughtheshapingofthesignalchipandtheICcard.ThepaperhasbeenstudiedinthedetailedtotheICcardinternalstructure,theprincipleofwork,theprogrammingandtheencryption。ThedesignofthesoftwarehasbeencarriedoninthefoundationofthedesignofthehardwaresystemandprogrammedtosignalchipwiththeassemblylanguageandrealizedthefunctionoftheresearchedanddiscussedtotheICcardsecurityandpointedouttheloopholeintheICcardapplicationandproposedtheguardmethod。ThisarticledesignstheICcardreader—writerbythehardwaredesignprimarily,andread-writeandthedemonstrationandsoonhasbeencarriedontherelatedprogrammingtotheICcard.KeywordsICcardreader—writer;X76F100card;SignalChip;assemblylanguage

目录TOC\o”1-3”\h\z\uHYPERLINK\l”_Toc230408605"摘要 IAbstract II第1章绪论 1HYPERLINK\l”_Toc230408608”1。1IC卡读写器的研究背景和目的 1HYPERLINK\l”_Toc230408609”1。1。1IC卡的分类及其特点 11.1。2IC卡读写器介绍 2HYPERLINK\l”_Toc230408611"1.2IC卡在我国的发展 3_Toc230408613"2章IC卡读写器硬件电路设计 4_Toc230408615”2.2单片机选型 4HYPERLINK\l”_Toc230408616"2.2。18051部分管脚功能 42.2.3PSEN程序储存使能端 6HYPERLINK\l”_Toc230408619"2。2。4EA/VPP 62.2.5XTAL1、XTAL2接晶体振荡器引脚 6HYPERLINK\l”_Toc230408621”2。3X76F100卡座以及卡的介绍 62。3。1X76F100卡座 6HYPERLINK\l”_Toc230408623”2.3.2X76F100卡 7_Toc230408625"2。4.1X25045介绍及其引脚功能 102。6显示电路设计 12HYPERLINK\l”_Toc230408629”2.6。1LED数码管的显示 133.1主程序流程图 15HYPERLINK\l”_Toc230408633”3。2循环键盘显示程序 15HYPERLINK\l”_Toc230408634"3。3X76F100读程序举例 16第HYPERLINK\l”_Toc230408635"4章IC卡的安全性问题 20HYPERLINK\l”_Toc230408636"4。1对IC卡及其系统的潜在攻击 204.1.1对IC卡片可能出现的非法攻击 204.1.2对IC卡终端设备的非法攻击 20_Toc230408640”4。2IC卡安全问题的解决方案 21HYPERLINK\l”_Toc230408641”4。2.1确保卡内数据安全及防止单片机程序被读的方法 21HYPERLINK\l”_Toc230408642"4。2.2提高电子模块的抗攻击能力的方案 21HYPERLINK\l”_Toc230408643”结论 22致谢 23参考文献 24HYPERLINK\l”_Toc230408646"附录A 25条件.④开始条件:所有命令都由开始条件前导,即当SCL

为高电平时,SDA

由高电平跳变到低电平.⑤停止条件:所有命令都必须由停止条件来终止,即当SCL

为高电平时,SDA

由低电平跳变到高电平。⑥应答:应答是一个用来表示数据传送成功的软件约定。图2。3X76F100内部电路框图4.编程操作①页写:重写方式需要发出8

位命令其后跟随密码。写命令字节包括所要写入的页地址.数据从页的第一个地址开始写入并且必须传送8个字节.在最后字节传送以后发出一个停止条件。这个条件启动非易失性写周期,如果传送少于或多于8

个字节,则页中的数据将保持不变.②读操作(含页面读):页面读时,用读命令提供一个页面地址。一旦密码被响应,数据即可从页面中读出。每8

位数据的传送必须跟随一次应答。一次读操作总是从页面中的第一个字节开始,但可以在任何时候停止.对阵列的随机访问是不可能的。阵列的连续读将从后续的页面中取数据.在读到阵列中的最后一页时,地址将自动地设置到阵列中的第一页,而数据可继续地读出。在最后一位被读之后,不需要先送应答就可产生停止条件。③密码:密码可以在正常的页面写操作过程中通过送一个“改变读密码”或“改变写密码”命令来改变。必须传送一个全部为8

字节的新的密码,随后是发送当前的密码和一个有效的密码应答响应。用户可以用一个重复的应答来询问命令从而检查新的密码是否正确地写入。一个应答表示新的密码已有效.5。加密原理软件加密原理:已知明文数组内有26

个字母,密文数组内也有26

个字母,将字符串明文按4

个字母分成若干组,最后一组不足4

个的用虚码补足,接着再将字符串明文经过如下的加密算法后变成对应的密文,如表2—1

所示。X1,

X2,

X3,

X4为一组明文,Y1,Y2,Y3,Y4为加密后的密文A为加密矩阵,B为解密矩阵(B·A)MOD26=E.表2—1将字符串明文经加密算法后变成对应的密文2.4监控电路设计2.4.1X25045介绍及其引脚功能X25045是美国XICOR公司的生产的标准化8脚集成电路,它将EEPROM、看门狗定时器、电压监控三种功能组合在单个芯片之内。X25045的引脚图如图2.4所示.图2。4X25045引脚图其引脚功能如下:CS:片选择输入.SO:串行输出,数据由此引脚逐位输出。SI:串行输入,数据或命令由此引脚逐位写入X25045。SCK:串行时钟输入,其上升沿将数据或命令写入,下降沿将数据输出。WP:写保护输入,当它低电平时,写操作被禁止。VSS:地。VCC:电源电压。RESET:复位输出。X25045在读写操作之前,需要先向它发出指令,指令名及指令格式如表2—2所示。表2-2X25045指令及其含义指命令指令格式操作WREN00000110设置写使能锁存器(允许写操作)WRDI00000100复位写使能锁存器(禁止写操作)RDSR00000101读状态寄存器WRSR00000001写状态寄存器READ0000A8011把开始与所选地址的存储器中的数据读出WRITE0000A8010把数据写开始与所选地址的存储器2。4.2X25045看门狗电路设计及编程X25045看门狗电路硬件连接图如图2。5所示。X25045芯片内包含有一个看门狗定时器,可通过软件预置系统的监控时间。在看门狗定时器预置的时间内若没有总线活动,则X25045将从RESET输出一个高电平信号,经过微分电路输出一个正脉冲,使CPU复位。图2.5X25045看门狗电路硬件连接图看门狗定时器的预置时间是通过X25045的状态寄存器的相应位来设定的。如表2—3所示,X25045状态寄存器共有6位有含义,其中WD1、WD0和看门狗电路有关,其余位和EEPROM的工作设置有关。表2—3X25045状态寄存器D7D6D5D4D3D2D1D0XXWD1WD0BL1BL0WELWIPWD1=0,WD0=0,预置时间为1。4s。WD1=0,WD0=1,预置时间为0.6s。WD1=1,WD0=0,预置时间为0。2s。WD1=1,WD0=1,禁止看门狗工作.看门狗电路的定时时间长短可由具体应用程序的循环周期决定,通常比系统正常工作时最大循环周期的时间略长一些。编程时,可在软件的合适地方加一条喂狗指令,使看门狗的定时时间永远达不到预置时间,系统就不会复位而正常工作。当系统跑飞,用软件陷阱等别的方法无法捕捉回程序时,则看门狗定时时间很快增长到预置时间,迫使系统复位。只需这样一块芯片,外加晶振和复位电路就可以组成单片机的应用系统。2.5键盘接口电路设计键盘扫描只是CPU的工作内容之一,CPU在忙于各项工作时,如何处理键盘的输入取决于键盘的工作方式,键盘工作方式的选择应根据应用系统中CPU工作的忙、闲情况而定[6].通常键盘工作方式有三种:编程扫描、定时扫描和中断扫描.在编程扫描中,CPU反复地扫描键盘,等待用户的输入命令,而执行键入命令或处理输入数据时,CPU不再响应输入要求,直到CPU返回重新扫描键盘为止。定时扫描工作方式利用单片机内部定时器产生定时中断,CPU响应定时器中断后对键盘进行扫描,在有键按下时识别出该键并执行相应功能程序。使用中断方式时,在没有键按下时,不占用CPU处理时间,只有当有键按下时产生键盘中断,由中断程序识别键并执行功能程序。键盘接口电路如图2.6所示。图2。6键盘接口电路2.6显示电路设计显示部份采用LED显示器,也用I/O口实现。用于显示系统状态、输入的密码或出错信息等.2。6.1LED数码管的显示现在显示器主要使用的就是LED或LCD。LCD具有薄、轻、文字显示效果好等优势.LED属于固体冷光源,具有更小、更轻、更坚固,而且寿命长、抗震效果好、光谱几乎全部集中于可见光频段显示清晰、电路简单使成本大大降低,使用它可以达到理想效果。LED数码管是由8段发光二极管构成,因此也称为8段数码显示器,其中八个管脚分别是对七个发光二极管和小数点的驱动,另外两个管脚是对字段驱动.它的8个发光二极管具有两种接法:一种是把8个发光二极管的阳极连在一起构成了一个公共的阳极,称为共阳极接法,另一种是共阴极接法.而我们所采用的就是共阴极接法的数码管。2.6.2数码管驱动芯片的选择及其应用分析常用的专用数码管显示电路选用MAX7219,它连线简单,不占用数据存储器空间。MAX7219是八位串行共阴极LED数码管动态扫描驱动电路的驱动芯片,其峰值段电流可达40mA;仅使用单片机3个I/O口即可完成对六位LED数码管的显示控制和驱动,外围电路仅需一个电阻设定峰值段电流。还可以通过级联,完成对多于八位的数码管的控制显示。因此我们选择了后者MAX7219作为数码管的驱动芯片。但级联时会有些不方便,电路有时也不稳定.MAX7219内部含有硬件动态扫描显示控制,它可以直接驱动64段LED条形图显示器.数据通过单片机处理后送给MAX7219.当工作处于关闭方式时,单片机仍可对其传送数据和修改控制方式。MAX7219是共阴极LED显示数码管的驱动器,具有多显示可控方式。DIN为串行数据输入端;CLK为串行时钟输入端;SGA~SGP为LED七段显示器段驱动输出端和小数点驱动输出端,要在动态显示器的某一位上显示小数点,设置一个控制字,当扫描到显示小数点的这位显示器时,就用到控制字来修改字位代码,使对应的小数点发光;DG0~DG7为8位字驱动端,MAX7219的字驱动端与数码管的公共阴极相连,公共阴极由此吸入电流.为实现LED的动态扫描,除了把所有显示器的8个显示段从左到右同名端连在一起外,还须对每个显示器的公共极DG实行独立的I/O控制,这里只用到DG0~DG5驱动六位显示器输出字选信号;LOAD为装载数据控制端;ISET为LED段峰值电流提供端,它通过一只电阻与电源相连,以便给LED段提供峰值电流;GND:接地端;VCC:+5V电源端.MAX7219驱动4位LED显示器,DIN、LOAD、CLK端口分别与8051的P21、P22、P23端相连,即P21为MAX7219提供串行数据,装载数据由P22控制,P23为它提供串行时钟脉冲,为数码管显示器提供位控信号和段控信号。由于数码管位驱动是低电平有效,而SEG段控口是高电平有效,所以MAX7219后要加ULN2803作为驱动装置来作为反向驱动器,ULN2803(它相当于一个集电极开路OC门)经过三极管和限流电阻来驱动LED显示器的每一个显示字段。这样,当所有显示器接收到CPU向显示段输出口送出的字形代码时,由MAX7219为显示器提供位控信号和段控信号,位控信号再经ULN2803反向器的取反,将电平转换,然后通过三极管和限流电阻的驱动所有显示器。但显示器中的一段数码管压降为+9V,考虑一定的电路需要,选+12V作为电源来提供整个显示部分。动态显示必须由段控信号决定某一显示器是否点亮.采用分时方法,循环地控制各个显示器的DG端,使各个显示字段轮流点亮.在LED显示器扫描过程中,任何时刻只有一位显示器亮,但由于人眼的视觉惰性,显示刷新很快时,可以认为全部显示.第3章IC卡读写器的软件程序设计3。1主程序流程图

主程序流程图,如图3。1所示。开机后,系统处于待机状态,不断查询P3。2脚电平,当X76F100插入读写器卡座时,P3。2脚电平变高,单片机检测到P3。2高电平信号时,使P1.3脚电平变高,如果此时为低电平,X76F100复位,输出32位固定的“同步复位响应"数据[7]。然后循环扫描键盘显示程序,进行存款、取款、查询或改密码。一次操作完成后返回,然后不断循环。图3。1主程序流程图3。2循环键盘显示程序循环扫描键盘显示程序如图3。2所示,它采用程控扫描方式。键盘实际操作的顺序是:先按功能键,然后依次输入8位(十进制)密码,按回车键确认。当修改密码时,随后输入8位新密码,输完后按回车键确认。若输入密码正确,显示IC卡内信息或改密码成功信息(SUCCESS).若密码不正确,提示重新输入,允许输入密码4次。为了记录操作中正在进行的状态,在键盘程序中设置了多个指针。(1)KEY有否按键按下标志。00H表示无键按下,01H表示有键按下.此标志用于判断按键是否已松开,防止误操作。(2)FUN为功能键指针,00H表示无功能键按下,01H表示存款(ADD),02H表示取款(SUB),03H表示查询(IQUIRE),04H表示改密码(CHANGEPASSWORD).(3)DIG为允许数字键输入标志,00H表示不允许,01H表示允许。此标志主要是防止输入多余的密码,或输入的款数超出限额。(4)NUM表示输入第几个数字,00H表示无数字输入,01H~08H表示输入密码,09H~10H表示输入款数或新密码,若NUM为11H,显示出错信息。图3.2循环键盘显示程序流程图3。3X76F100读程序举例X76F100为I2C总线E2PROM。SCL为时钟输入,SDA为双向数据输入输出线。通过片输入来控制对器件的访问。下面以页写为例,页写时序如图3。3所示。在该系统中,8051,X76F100为从机.首先主机向从机发一个START命令,产生开始条件,然后发写命令字.当从机接到命令后,向主机发一个应答信号NACK。然后跟随8字节密码,随后进入一个写周期,写周期结束后进行密码应答轮询ACKPolling。X76F100要求主机用专用的应答命令55H进行应答轮询。如果输入的密码正确,将返回一个“ACK"。如果密码不正确,将返回“no-ACK”,重试计数器加1,返回到启始位置,提示重新送入写命令字和8字节密码。若密码正确,主机接着送入8个字节的数据,ACK响应成功后主机发出STOP命令完成写操作。下面是用写密码进行页写的程序.图3.3页写时序图WRITE_USING_WRITE_PASS:;用写密码进行写操作ACALL

START;调开始命令MOV

A,#SECTOR_WR;调页写命令ACALL

OUTBYTE;调输出字节命令ACALL

NACK;X76F100发应答信号ACALL

WR_WR_PASS;调写密码命令ACALL

T10ms;10ms延时开始写密码周期ACALL

ACK_POLLING;调密码应答轮询子程序ACALL

WR_DATA;调页写数据子程序ACALL

STOP;调停止命令ACALL

T10ms;延时10ms写密码周期RETWR_WR_PASS;将写密码写入X76F100MOV

R0,#WR_PASS7;将密码首址送入R0MOV

R1,#08H;写密码为8个字节WP:MOV

A,@R0;将R0中的数据送入A中ACALL

OUTBYTE;输出字节子程序ACALL

NACKINC

R0DJNZ

R1,WPRETOUTBYTE:;主机向X76F100发字节MOV

R2,#08H;一个字节有8位LOOPOCLR

SCL_76RLC

A;移位MOV

SDA_76,C;将进位送入数据线SETB

CL_76DJNZ

R2,LOOP;循环直到R2为0RETSTARTSETB

SDA_76;开始子程序SETB

SCL_76SETB

SCL_76RETSTOPCLR

SDA_76;停止子程序SETB

SCL_76SETB

SDA_76RETACK_POLLING;密码应答轮询子程序ACALL

STARTMOV

A,#55H;主机发固定应答命令ACALL

OUTBYTEACALL

NACK;调从机发应答信号JC

PASS_ERROR;若有进位则密码错误RETPASS_ERROR;密码错误ACALL

STOPRETACK:CLR

SDA_76;主机执行一个应答ACALL

CLOCKRETNACKSETB

SDA_76;从机执行一个应答ACALL

CLOCKRETCLOCKSETB

SCL_76;第9个脉冲MOV

C,SDA_76;读SDA状态以判断是否有应答CLR

SCL_76RETT10ms:MOV

R7,#064H;10ms延时T10AMOV

R6,#032HT10BDJNZ

R6,T10BDJNZ

R7,T10ARET第4章IC卡的安全性问题随着IC卡在我们生活中应用范围不断扩大,我们不得不考虑它的安全性问题,IC卡的安全要从两方面考虑,一是从系统设计上要切实解决安全问题,一是使用部门要建立起必要的安全管理制度。这里从系统硬件设计的角度考察一下对安全性问题的处理.4。1对IC卡及其系统潜在攻击IC卡系统组成主要有IC卡、读写器终端设备、数据传送网络和管理系统等几部分。对于系统的不同部分可能存在的潜在非法攻击主要表现为以下几种情况。4。1。1对IC卡片可能出现非法攻击1。用伪卡替换操作:终端设备在读写IC卡的过程中,可能会有一定的时间间隙,在这个时间间隙之前用合法的授权卡打开终端设备及其控制装备,并在写入数据之前用假卡替换真卡,使得所有的消费记录没有写入到真正被授权的IC卡中,而被纪录在伪卡之中.2.用干扰信号破坏对IC卡的操作:在IC卡的读写过程中,对某信号线在特定的时刻施加干扰信号,以使IC卡中的数据混乱或无法正确地纪录和修改。3.解剖分析IC卡的内部结构:将IC卡的电路进行分析,并利用较先进的仪器设备测试IC卡的各种密码的位置和状态字,从而破译整个系统。4.冒充合法持卡人使用IC卡:在IC卡使用过程中,由于被盗窃或遗失,使得非授权持卡人可能冒充合法持卡人使用IC卡,并利用其他设备来跟踪探测IC卡的密码,以便获取卡内资金和资料信息或欺骗打开各种受控设备。4.1。2对IC卡终端设备非法攻击1。对终端设备进行信息截获和复制:任何类型的IC卡终端设备其输入或输出的信息总是可以测试得到或从操作过程中截获.通过大量信息的分析,就有可能得出IC卡或设备的响应规律或复制特征.2。对终端设备进行仿造:正在使用中的IC卡终端设备被人盗窃或拆卸,改装,并使之成为对合法的IC卡或系统进行攻击的工具。3。对终端设备误操作:对终端设备的操作,可能是由完全无相应知识的人员来进行的。在无意识情况下的操作失误,有可能对IC卡或系统造成具有危害性的影响。4.1。3通讯网络系统的攻击1。改变信号流向:截获网络通讯过程的文件信息,将IC卡终端设备的源信息传送到虚假目的的终端设备,以改变系统信息流的真实流向,使得真实的控制信息或文件传送不到或相互错位传送。2。用干扰信号来破坏网络系统的通讯:在IC卡的读写过程中(如对某些重要信息进行认证的过程中),通过对网络施加干扰信号,使IC卡输入/输出的数据或终端设备的数据传送发生变化。3.通过网络途径截获有价值的信息:在IC卡应用系统中,将通过网络传输的各类信息截留和分析,有可能得到各种有价值的信息,甚至成为系统密码,通讯协议泄露的重要途径.4。2IC卡安全问题的解决方案为了彻底解决卡内数据安全,使用了SAM机制来构成卡表的基本安全机制。4。2。1确保卡内数据安全及防止单片机程序被读的方法SAM机制基本原理是:SAM模块和CPU卡互成一对,双向相互认证(内部认证外部认证),并采用对随机数进行加密的方法来进行密钥的确认,加上卡口的输出数均为密文等严密的安全措施保护了卡内密钥无法获得破译、卡内数据无法进行非法修改。4.2.2提高电子模块的抗攻击能力的方案为了在低成本前提下实现防止恶意攻击卡口方面,我们将该模块装入外卡口到单片机管脚之间(包括电源),若由外卡口任意引线之间加入AC不超过600V、DC不超过2500V、静电不超过30000V(模块有吸收静电能量的功能)的各种电攻击,模块在不超过0.1ms内将电攻击隔离,当电攻击撤消后,外卡口到单片机管脚之间通道将会自动重新开通。结论本文对一种安全可靠的IC卡读写器做了较为细致的介绍。设计领域包括了电子技术、单片机、IC卡技术、C语言,和一些数据的处理问题,涉及到了很多学课。在设计研究过程中,侧重于IC读写器的硬件功能实现,其中包括:单片机8051的选型同时对它各个管脚的功能做了深入的研究;本文还对Xicor公司生产X76F100卡和监控芯片X25045也做了比较详尽的介绍;同时还对键盘电路、显示电路的设计做了深入的研究。由于时间和所掌握技术有限的原因,本设计仍存在需要改进的工作:(1)IC卡安全方面需要改进,现阶段IC卡的密码仅仅限于简单的数字构成,所以很容易破译,我们可以考虑使用加密认证技术来提高IC卡的安全可靠性。(2)LED的显示部分,本设计采用的是四位LED显示,我们可以将其改进为液晶显示,使其更加完美。IC卡目前是我国新兴产业,它必将在人们生活的各个领域得到广泛的应用,我们可以在本设计的基础上进一步的改进扩充,使IC卡的功能更加完善,得到新的产品。致谢4年的学习时间即将结束,我也完成了毕业论文将要离开学校。在此学习过程中,我受到了多位老师的帮助和支持,虽然是有限的学习时间,但在众位优秀老师的精心指导和学院合理的授课安排下我仍然获得了终生受益的知识财富。在即将离开我的校园踏上新的征程之际,我谨向所有在生活和学习上帮助过我的老师和同学致以诚挚的谢意。尤其是在完成毕业论文期间,我的导师张立松给予了我莫大的帮助,在他无微不至的关怀下使我的设计得以顺利进行,他对我设计中的每一个环节都不遗余力地给予帮助,他严谨求实的治学态度,丰富渊博的知识涵养,严肃认真的工作作风和兢兢业业的敬业精神,使我受益终生。在论文的选题、系统方案设计、他都倾注了大量的心血。在此,谨向导师张立松致以诚挚的谢意,并表示衷心的感谢。同时感谢院领导及各位老师在学习期间给予我的帮助。最后,对我的父母以及所有亲人给予我的帮助、支持表示深情的感谢。并以此文献给所有关心与帮助过我的亲人们、老师们和朋友们。参考文献[1]李琼.IC卡的应用及其发展趋势[J].湖北农村金融研究,2002,35-37.[2]陈红军.IC卡表应用现状及其发展趋势北京智能科技有限公司,2002,5—7.[3]詹树仁。GMS90及GMS97系列单片机的工作原理及其应用。武汉力源电子股:20—22。[4]X76F100DATASHEET。XICOR公司[5]王卓人.IC卡的技术与应用[M].北京:电子工业出版社,1999,38—39。[6]赵依军,胡戎。单片机微机接口技术。人民邮电出版社,1989,33-35.[7]卢存伟,钱捷.微机原理及应用系统设计.河海大学出版社,1992年,12—16。附录A8051DevelopmentToolsWediscussesthefeaturesandadvantagesofthe8051microprocessorfamilyandthedevelopmenttoolsavailablefromKeilSoftware。Wehavedesignedourdevelopmenttoolstohelpyouquicklyandsuccessfullycompleteyourjob.Forthisreason,ourtoolsareeasytouseandareguaranteedtohelpyouachieveyourdesigngoals.8051MicrocontrollerFamilyThe8051hasbeenavailablesincetheearly1980’s.Withawidevarietyofoutstandingfeaturesandperipherals,the8051CPUcoreisdestinedtoseeservicewellintothenextcentury.Morethan200different8051derivativesareavailabletodayfromavarietyofchipvendors。MorethanhalfofallembeddedprojectswithaCPUusemembersofthe8051embeddedprocessor,the8051hasnoequal。Atypical8051familymembercontainsthe8051CPUcore,datamemory,codememory,andsomeversatileperipheralfunctions.Aflexiblememoryinterfaceletsyouexpandthecapabilitiesofthe8051usingstandardperipheralsandmemorydevices.8051DevelopmentToolsKeilSoftwareprovidesthefollowingdevelopmenttoolsforthe8051:·C51OptimizingCCompiler(seepage21),·A51MacroAssembler(seepage38),·BL51CodeBankingLinker/Locator(seepage40),·OC51BankedObjectFileConverter(seepage44),·OH51Object-HexConverter(seepage44),·LIB51LibraryManager(seepage44)·dScope—51forWindows(seepage45),·μVision/51forWindows(seepage45)。C51OptimizingCCrossCompilerTheCprogramminglanguageisageneral—purposeprogramminglanguagethatprovidescodeefficiency,elementsofstructuredprogramming,andarichsetofoperators.Cisnotabiglanguageandisnotdesignedforanyoneparticularareaofapplication.Itsgenerality,combinedwithitsabsenceofrestrictions,makeCaconvenientandeffectiveprogrammingsolutionforawidevarietyofsoftwaretasks。ManyapplicationscanbesolvedmoreeasilyandefficientlywithCthanwithothermorespecializedlanguages。TheKeilSoftwareC51optimizingcrosscompilerfortheMS—DOSoperatingsystemisacompleteimplementationoftheANSI(AmericanNationalStandardsInstitute)standardfortheClanguage。TheC51compilergeneratescodeforthe8051microprocessorbutisnotauniversalCcompileradaptedforthe8051target。Itisaground—upimplementationdedicatedtogeneratingextremelyfastandcompactcodeforthe8051microprocessor。Formost8051applications,theC51compilergivessoftwaredeveloperstheflexibilityofprogramminginCwhilematchingthecodeefficiencyandspeedofassemblylanguageUsingahigh-levellanguagelikeChasmanyadvantagesoverassemblylanguageprogramming。Forexample:·Knowledgeoftheprocessorinstructionsetisnotrequired。Arudimentaryknowledgeofthe8051'smemoryarchitectureisdesirablebutnotnecessary。·Registerallocationandaddressingmodedetailsaremanagedbythecompiler.·Theabilitytocombinevariableselectionwithspecificoperationsimprovesprogramreadability。·Keywordsandoperationalfunctionsthatmorenearlyresemblethehumanthoughtprocesscanbeused。·Programdevelopmentanddebuggingtimesaredramaticallyreducedwhencomparedtoassemblylanguageprogramming.·Thelibraryfilesthataresuppliedprovidemanystandardroutines(suchasformattedoutput,dataconversions,andfloating—pointarithmetic)thatmaybeincorporatedyou’reyourapplication。·ExistingroutinecanbereusedinnewprogramsbyutilizingthemodularprogrammingtechniquesavailablewithC.·TheClanguageisveryportableandverypopular。Ccompilersareavailableforalmostalltargetsystems。Existingsoftwareinvestmentscanbequicklyandeasilyconvertedfromoradaptedtootherprocessorsorenvironments。C51LanguageExtensionsTheC51compilerisanANSIcompliantCcompilerandincludesallaspectsoftheprogramminglanguagethatarespecifiedbytheANSIstandard。AnumberofextensionstotheCprogramminglanguageareprovidedtosupportthefacilitiesofthe8051microprocessor。TheC51compilerincludesextensionsfor:·DataTypes,·MemoryTypes,·MemoryModels,·Pointers,·ReentrantFunctions,·InterruptFunctions,·Real-TimeOperatingSystems,·InterfacingtoPL/MandA51sourcefiles.Thefollowingsectionsbrieflydescribetheseextensions。DataTypesTheC51compilersupportsthedatatypeslistedinthefollowingtable。Inadditiontothesescalartypes,variablescanbecombinedintostructures,unions,andarrays.Exceptasnoted,youmayusepointerstoaccessthesedatatypes.MemoryTypesTheC51compilersupportsthearchitectureofthe8051anditsderivativesandprovidesaccesstoallmemoryareasofthe8051。Eachvariablemaybeexplicitlyassignedtoaspecificmemoryspace。codeProgrammemory(64Kbytes);accessedbyopcodeMOVC@A+DPTR.dataDirectlyaddressableinternaldatamemory;fastestaccesstovariables(128bytes).idataIndirectlyaddressableinternaldatamemory;accessedacrossthefullinternaladdressspace(256bytes).bdataBit—addressableinternaldatamemory;allowsmixedbitandbyteaccess(16bytes)。xdataExternaldatamemory(64Kbytes);accessedbyopcodeMOVX@DPTR.pdataPaged(256bytes)externaldatamemory;accessedbyopcodeMOVX@Rn。MemoryModelsThememorymodeldeterminesthedefaultmemorytypeusedforfunctionarguments,automaticvariables,andvariablesdeclaredwithnoexplicitmemorytype。YouspecifythememorymodelonthecommandlineusingtheSMALL,COMPACT,andLARGEcontroldirectives.Byexplicitlydeclaringavariablewithamemorytypespecifier,youmayoverridethedefaultmemorytype.SMALLInthismodel,allvariablesdefaulttotheinternaldatamemoryofthe8051.Thisisthesameasiftheyweredeclaredexplicitlyusingthedatamemorytypespecifier.Inthismemorymodel,variableaccessisveryefficient。However,alldataobjects,aswellasthestackmustfitintotheinternalRAM。Stacksizeiscriticalbecausethestackspaceuseddependsuponthenestingdepthofthevariousfunctions。Typically,iftheBL51codebankinglinker/locatorisconfiguredtooverlayvariablesintheinternaldatamemory,thesmallmodelisthebestmodeltouse。COMPACTUsingcompactmodel,allvariablesdefaulttoonepageofexternaldatamemory.Thisisthesameasiftheywereexplicitlydeclaredusingthepdatamemorytypespecifier。Thismemorymodelcanaccommodateamaximumof256bytesofvariables.Thelimitationisduetotheaddressingschemeused,whichisindirectthroughregistersR0andR1.Thismemorymodelisnotasefficientasthesmallmodel,therefore,variableaccessisnotasfast。However,thecompactmodelisfasterthanthelargemodel.Thehighbyteoftheaddressisusuallysetupviaport2.Thecompilerdoesnotsetthisportforyou。LARGEInlargemodel,allvariablesdefaulttoexternaldatamemory.Thisisthesameasiftheywereexplicitlydeclaredusingthexdatamemorytypespecifier.Thedatapointer(DPTR)isusedforaddressing。Memoryaccessthroughthisdatapointerisinefficient,especiallyforvariableswithalengthoftwoormorebytes。Thistypeofdataaccessgeneratesmorecodethanthesmallorcompactmodels.PointersTheC51compilersupportspointerdeclarationsusingtheasteriskcharacter(‘*’).YoumayusepointerstoperformalloperationsavailableinstandardC。However,becauseoftheuniquearchitectureofthe8051anditsderivatives,theC51compilersupportstwodifferenttypesofpointers:memoryspecificpointersandgenericpointers。GenericPointersGenericpointersaredeclaredinthesamewayasstandardCpointers.Forexample:char*s;/*stringptr*/int*numptr;/*intptr*/long*state;/*longptr*/Genericpointersarealwaysstoredusingthreebytes。Thefirstbyteisforthememorytype,thesecondisforthehigh—orderbyteoftheoffset,andthethirdisforthelow-orderbyteoftheoffset。Genericpointersmaybeusedtoaccessanyvariableregardlessofitslocationin8051memoryspace。Manyofthelibraryroutinesusethesepointertypesforthisreason.Byusingthesegenericuntypedpointers,afunctioncanaccessdataregardlessofthememoryinwhichitisstored.8051-SpecificOptimizations·PeepholeOptimization:Complexoperationsarereplacedbysimplifiedoperationswhenmemoryspaceorexecutiontimecanbesavedasaresult。·AccessOptimizing:Constantsandvariablesarecomputedandincludeddirectlyinoperations.·DataOverlaying:DataandbitsegmentsoffunctionsareidentifiedasOVERLAYABLEandareoverlaidwithotherdataandbitsegmentsbytheBL51codebankinglinker/locator。·Case/SwitchOptimizing:Dependingupontheirnumber,sequence,andlocation,switchandcasestatementscanbefurtheroptimizedbyusingajumptableorstringofjumps。OptionsforCodeGeneration·OPTIMIZE(SIZE):CommonCoperationsarereplacedbysubprograms.Programcodesizeisreducedattheexpenseofprogramspeed.·OPTIMIZE(SPEED):CommonCoperationsareexpandedin—line。Programspeedisincreasedattheexpenseofcodesize.·NOAREGS:TheC51compilernolongerusesabsoluteregisteraccess。Programcodeisindependentoftheregisterbank.·NOREGPARMS:Parameterpassingisalwaysperformedinlocaldatasegmentsratherthendedicatedregisters.Programcodecreatedwiththis#pragmaiscompatibletoearlierversionsoftheC51compiler,thePL/M—51compiler,andtheASM—51assembler.DebuggingTheC51compilerusestheIntelObjectFormat(OMF51)forobjectfilesandgeneratescompletesymbolinformation。Additionally,thecompilercanincludeallthenecessaryinformationsuchas;variablenames,functionnames,linenumbers,andsoontoallowdetailedandthoroughdebuggingandanalysiswithdScope-51orIntelcompatibleemulators.AllIntelcompatibleemulatorsmaybeusedforprogramdebugging.Inaddition,theOBJECTEXTENDcontroldirectiveembedsadditionalvariabletypeinformationintheobjectfilewhichallowstype-specificdisplayofvariablesandstructureswhenusingcertainemulators.YoushouldcheckwithyouremulatorvendortodetermineifitiscompatiblewiththeIntelOMF51objectmoduleformatandifitcanacceptKeilobjectmodules。BL51CodeBankingLinker/LocatorTheBL51codebankinglinker/locatorcombinesoneormoreobjectmodulesintoasingleexecutable8051program。Thelinkeralsoresolvesexternalandpublicreferences,andassignsabsoluteaddressestorelocatableprogramssegments.TheBL51codebankinglinker/locatorprocessesobjectmodulescreatedbytheKeilC51compilerandA51assemblerandtheIntelPL/M-51compilerandASM-51assembler。Thelinkerautomaticallyselectstheappropriaterun—timelibraryandlinksonlythelibrarymodulesthatarerequired。Normally,youinvoketheBL51codebankinglinker/locatorfromthecommandlinespecifyingthenamesoftheobjectmodulestocombine。ThedefaultcontrolsfortheBL51codebankinglinker/locatorhavebeencarefullychosentoaccommodatemostapplicationswithouttheneedtospecifyadditionaldirectives.However,itiseasyforyoutospecifycustomsettingsforyourapplication。DataAddressManagementTheBL51codebankinglinker/locatormanagesthelimitedinternalmemoryofthe8051byoverlayingvariablesforfunctionsthataremutuallyexclusive.Thisgreatlyreducestheoverallmemoryrequirementofmost8051applications.TheBL51codebankinglinker/locatoranalyzesthereferencesbetweenfunctionstocarryoutmemoryoverlaying。YoumayusetheOVERLAYdirectivetomanuallycontrolfunctionsreferencesthelinkerusestodetermineexclusivememoryareas。TheNOOVERLAYdirectiveletsyoucompletelydisablememoryoverlaying.Thesedirectivesareusefulwhenusingindirectlycalledfunctionsorwhendisablingoverlayingfordebugging。CodeBankingTheBL51codebankinglinker/locatorsupportstheabilitytocreateapplicationprogramsthatarelargerthan64Kbytes。Sincethe8051doesnotdirectlysupportmorethan64Kbytesofcodeaddressspace,theremustbeexternalhardwarethatswapscodebanks。Thehardwarethatdoesthismustbecontrolledbysoftwarerunningonthe8051.Thisprocessisknownasbankswitching。TheBL51codebankinglinker/locatorletsyoumanage1commonareaand32banksofupto64Kbyteseachforatotalof2Mbytesofbank—switched8051programspace。Softwaresupportfortheexternalbankswitchinghardwareincludesashortassemblyfileyoucaneditforyourspecifichardwareplatform。TheBL51codebankinglinker/locatorletsyouspecifythebankinwhichtolocateaparticularprogrammodule。Bycarefullygroupingfunctionsinthedifferentbanks,youcancreateverylarge,efficientapplications。CommonAreaThecommonareainabankswitchingprogramisanareaofmemorythatcanbeaccessedatalltimesfromallbanks。Thecommonareacannotbephysicallyswappedoutormovedaround.Thecodeinthecommonareaiseitherduplicatedineachbank(iftheentireprogramareaisswapped)orcanbelocatedinaseparateareaorEPROM(ifthecommonareaisnotswapped).Thecommonareacontainsprogramsectionsandconstantswhichmustbeavailableatalltimes.Itmayalsocontainfrequentlyusedcode.Bydefault,thefollowingcodesectionsareautomaticallylocatedinthecommonarea:·ResetandInterruptVectors,·CodeConstants,·C51InterruptFunctions,·BankSwitchJumpTable,·SomeC51Run-TimeLibraryFunctions。ExecutingFunctionsinOtherBanksCodebanksareselectedbyadditionalsoftware—controlledaddresslinesthataresimulatedusing8051portI/Olinesoramemory-mappedlatch.TheBL51codebankinglinker/locatorgeneratesajumptableforfunctionsinothercodebanks。Whenyoucallafunctioninadifferentbank,yourprogramswitchesthebank,jumpstothedesiredfunction,and,whenthefunctioncompletes,restoresthepreviousbank),andreturnsexecutiontothecallingroutine。Thebankswitchingprocessrequiresapproximately50CPUcyclesandconsumesanadditional2bytesofstackspace。Youcandramaticallyimprovesystemperformancebygroupinginterdependentfunctionsinthesamebank.Functionswhicharefrequentlyinvokedfrommultiplebanksshouldbelocatedinthecommonarea.附录B8051开发工具我们主要介绍8051单片机家族的特征和优点以及Keil的开发工具,开发工具可帮助开发者迅速成功的实现设计目标.8051单片机家族:8051问世于二十世纪八十年代早期,由于8051CPU内核有着杰出的特性以及外围功能,在本世纪仍然可以得到良好的应用。现今不同的芯片供应商可提供超过200种8051派生器件,有超过半数的嵌

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论