C51与汇编语言混合编程在单片机IAP中的应用
余新拴,李建忠
(陕西理工学院陕西汉中723003)
摘 要:单片机在应用中编程IAP(In—ApplicationProgramming)是单片机应用的新技术,可以实现用户应用程序对
FLASH存储器鳊程、擦除和读存储器等功能,但是,使用单片机高级语言C51编程开发应用程序时不容易直接调用IAP功
能。介绍了P89C51RD2单片机闪存的操作特点及其IAP功能实现原理。结合C5l调用汇编语言子程序时的参数传递规律,
分析应用C51与汇编语言混合编程向特定寄存器中写入相应参数调用IAP功能子程序的方法。通过实例,给出了向IAP子
程序传递参数的.c51程序及相应的汇编程序,实现了IAP功能。在Keil∥ision2下仿真和实验,该方法切实可行。
关键词:IAP;C51;P89C51RD2单片机;汇编程序
中图分类号:TP313 文献标识码:B 文章编号:l004—373X(2005)23一106—03
App】icationofC5landAssembler7sPrograminIAPforMicrocontroller
YUXinshuan,LIJianzhong
(ShaanxiUniversityofTechnology,Hanzho“g,723003,China)
Abstract:In—ApplicationProgramming(IAP)isdevelopedasthenewesttechniqueindesignordeveIopmentformicrocontroller
applicationsyStem.UserprogramcaneraseFlashpfogrammemoryblock,programbyteandverifybyte.However,itjsdifficulttocall
theIAProutinesdirectlyinapplicationdevelopedwithmicrocontroller7shighlevellanguageC51.ThebasicprincipleofIAPin
P89C5lRD2microcontrollerisintroduced,aswellasthecharacteristicsofF1ashprogrammemorywithIAP.ThemethodforIAPby
C51andassemblerprogramisanalysed,whIchachievestheaimforcommunicatingwiththeIAProutinesbydeliveringpararr屺tersto
specialregistersbasedontheregulationofparametersdelivers.ThispaperdemonstratestheapplicationinstancewhichisdeVelopedby
C51andcorrespondingassemblerprogram,realizstheIAPfunction.Thesimulationandtestresultshowthatthe8chemeiscorrectand
effective.
Keywords:lAP;C51;P89C51RD2;singlechip;assemblerprogram
1 引 言
随着存储器技术的发展,具有IAP(在应用中编程)功
能的单片机将得到广泛应用。IAP是指在用户的应用程序
中对FLASH存储器进行擦除和重新编程,即可以用程序
来改变程序。IAP对于仪器仪表的智能化具有重要意义,
使以单片机为核心的智能化仪器的自诊断和自学习等功
能易于实现。实现各种IAP功能的程序一般以各种子程序
的形式固化于单片机的特定存储区域内。和用户编写的子
程序一样,这些子程序可以被用户程序调用,所以在用户
的应用程序实现对FLASH存储器编程、擦除和读存储器
等IAP功能,本质上就是在用户的应用程序中调用各种
IAP功能子程序,即可完成相应的IAP操作。程序调用的
关键是参数传递和返回值的取得。
C51是C语言向8051系列单片机上移植后专门用于
单片机系统开发的一种高级语言,由于他在单片机应用系
收藕日期:2005—08—03
106
统的开发过程中具有开发效率高、可读性强等诸多优点,
所以,采用C51设计单片机应用程序已经成为众多8051系
列单片机开发人员的普遍选择。由于各种IAP功能子程序
对人口参数的数量及位置有明确要求,所以使用C51语言
中实际参数传递的各种方法向IAP子程序传递入口参数
不易实现,而使用汇编语言向IAP子程序传递参数则很容
易实现,而且C51调用汇编语言子程序也很容易,因此,在
具有IAP功能的8051系列单片机开发过程中,可以用C51
与汇编语言混合编程的方法,用C51调用汇编语言子程
序,由汇编语言子程序将IAP功能子程序所需入口参数传
递到特定位置,从而完成相应的IAP操作,实现单片机在
应用中编程。
文中以Philips公司具有IAP功能的单片机
P89c51RD2为例,介绍C51与汇编语言混合编程的方法,
同时也给出了开关动作记录仪中实现在应用中编程功能
的实例。
2 P89c5lRD2单片机lAP功能的实现原理和调用格式
P89C51RD2是Philips公司的80C51系列单片机中的
万方数据
新产品,具有1kB的片上RAM和64kB的片上闪存。对
于P89C51RD2,IAP是指在用户的应用程序中对FLASH
块、FLAsH寄存器、加密位等进行擦除和编程等操作。具
有IAP功能的P89C51RD2单片机的64kB闪存空间共分
5块,由低到高依次为:BLOCKo,BLOCKl,BLOCK2,
BLOCK3和BLOCK4,其中BLOCKo与BLOCKl的容量为
8kB,BLOCK2,BLOCK3和BLOCK4的容量为16kB。每
一块闪存都可以单独擦除,而且在程序中可以调用IAP功
能对闪存中的每一字节进行单独编程。
P89C51RD2的IAP功能的实现是靠Philips公司提供
的B00TROM固件来完成的。上述擦除和编程等IAP功
能子程序固化在B00TROM固件中,参考文献[1]对
BOOTROM中有关IAP功能源代码作了详细分析。
BOOTROM固件位于oFC00H~oFFFFH空间,与闪存空
间重叠。当设置标志位ENDBOOT为1时,单片机将从
BOOTROM开始访问代码区;当清除标志位ENDBOOT
时,访问代码区将从用户代码存储区开始。所以在用户程
序中调用IAP操作的人口程序之前,必须先设置
ENB00T。为了调用方便,P89C51RD2给各种IAP功能子
程序共用一个地址为oFFFoH的函数调用入口,地址名为
PGM—MTP。
依据B00TROM中IAP功能源代码中的接口条件,
调用P89C51RD2单片机IAP功能时,必须通过寄存器带
入必要的输入参数,如果有返回值则返回值放在ACc中。
按
规定
关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定
口],擦除和编程所用的振荡器频率经下舍弃为整数
值后,应作为输入参数放于寄存器Ro,区分各功能子程序
的功能码放于寄存器R1,读写地址放于DPTR。与其他子
程序的调用一样,在用户的应用程序中用CALL指令来调
用IAP功能子程序,完成调用程序后控制权仍然返回到最
终用户程序。
3 C51与汇编语言混合编程实现IAP功能调用
按照P89C51RD2单片机的IAP功能调用格式,IAP功
能子程参数传递必须通过Ro,R1,DPTR,ACC等寄存器
完成。用C51调用汇编语言子程序时,有通过寄存器传递参
数和用参数传递段传递参数两种方法。由于IAP功能子程
序参数个数不多,所以可以不用参数传递段。通过寄存器传
递参数时,用到的寄存器与参数类型有关,见表1所示;函
数的返回值所用到的工作寄存器与返回值的类型有关,见
表2所示。先用c51调用汇编语言子程序,C51应用程序中
与汇编语言子程序通过寄存器传递参数和返回值。汇编语
言子程序将IAP功能子程序所需入口参数传递到Ro,R1,
DPTR,ACC等特定位置,执行IAP功能子程序,从而完成
相应的IAP操作,实现单片机在应用中编程口1。
4实例
下面通过一个实例来
说明
关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书
具体实现。工业生产过程
中,继电器、接触器等器件的动作时序直接影响电气控制
系统的运行状况,监控这些器件的动作时序对生产事故的
查询、分析非常重要,有必要对这些装置的开关量信号和
动作时序进行采集和记录。在开关动作记录仪中,要求对
开关量跳变发生的时间等有关历史数据进行存储,以备查
询和分析。在使用P89C51RD2设计开关动作记录仪时,全
部应用软件经编译后不足20kB,应用P89C51RD2的IAP
功能将剩余程序空间转化为数据空间,简化了电路设计。
通过调用IAP功能子程序,把采集到的大量开关动作信息
保存在留作数据存储空间的FLASH块BLOCK3中,地址
范围为8000H~BFFFH。
裹l参数传递的寄存器选择裹
返回值类型 返回值所占寄存器
进位位CY
R7
R6(高位字节),R7(低位字节)
R4~R7,R4(高位字节),R7(低住字节)
记录开关量跳变发生的时间的C51程序部分如下:
externvoideras—blk(unsingedintblk—addr);
externunsingedcharwrite—Nbyte(unsingedintaddr,unsinged
chardat—time);
externunsingedcharread—Nbyte(unsingedintaddr,unsinged
chardat—time); /*外部汇编函数说明*/
unsingedintdatablk—addr,addr;
/*FLASH块首地址,欲读、写单元地址*/
unsinlredcharnum—data—read,num—data—write;
/*要读出、写入的数据字节个数*/
unsingedchardatatime[];
/*表示开关状态跳变发生的时间的数组*/
; /*此处给各变量赋值*/
eras—blk(unsingedintblk—addr);
/*将留作数据存储空间的FLASH块擦除*/
for(i=O,i
论文
政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载
]-单片机与嵌入式系统应用 2001(1)
2.Circuit and In -Application Programming of the 89C51Rx+/Rx2/66x Microcontrollers
3.P89C51RB2/P89C51RC2/P89C51RD2-80C51 8-bit FLASH Microcontroller Family 2001
4.李建忠 单片机原理及应用 2003
相似文献(7条)
1.期刊论文 于淑萍.YU Shu-ping 基于IAP和Keil C51的单片机教学改革 -电气电子教学学报2008,30(6)
我们在我院单片机教学中改革了单片机教学内容和教学模式,自行研制了基于IAP和KeilC51的集仿真器、编程器和实验板于一体的多功能单片机教学
设备.通过改革,降低了实践教学成本,提高了教学效果,增强了学生单片机技术应用能力和技术创新能力.
2.会议论文 靳桅.潘育山.邬芝权 SST89C5X系列单片机IAP技术的开发及应用 2003
SST89C54/58是Silicon Storage Technology公司推出的带有20KB/36 KB Falsh的单片机.通过对其特殊功能寄存器的操作,可以分块对Flash进行编
程.本文在对SST公司提供的IAP程序分析的基础上,在介绍其IAP功能的同时给出用C51开发IAP程序的程序框图及功能模块.开发后的IAP程序仅使用最基本
的DOS命令或Windows超级终端即可完成IAP编程,为单片机的开发提供了一种非常简便的方法.
3.期刊论文 陈晓莉.张俊涛.Chen.Xiaoli.Zhang.Juntao KEIL C51单片机仿真器的设计 -微计算机信息2006,22(5)
SST89C54/58是美国SST公司推出的具有20KB/36KB Flash程序存储器的FlashFlex51系列单片机,通过对Flash的分区实现IAP的功能.本文介绍
SST89C54/58程序存储器的结构特点以及基于SST89C54/58的KEIL C51单片机仿真器的设计.
4.期刊论文 李洪源.陈宗农.LI Hong-yuan.CHENG Zhong-nong IAP功能在可编程人机界面中的应用 -机电工程
2006,23(7)
介绍了可编程人机界面在目前的应用情况,并提出IAP是实现人机界面可编程的最佳方式.介绍了Philips公司增强核闪存80C51系列的IAP功能,以
P89C60X2BA的IAP功能为例,用C51和汇编语言实现人机界面的可编程.
5.期刊论文 姚永平 STC89C52RC系列单片机ISP/IAP高级应用 -单片机与嵌入式系统应用2005(5)
如何利用STC89C58RD+,STC89C52RC系列单片机内部Data Flash作为EEPROM使用详见宏晶科技www.MCU-Memory.com网站上的及C51源程序Tel:0755-82948409,13922805190 Fax:0755-82944243
6.期刊论文 陈琼.万国金.CHEN Qiong.WAN Guo-jin 基于EIB系统的BCU研究 -南昌航空工业学院学报(自然科学版
)2005,19(2)
本文介绍一种基于EIB系统的BCU电路设计及其通信
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
的软件设计,设计中采用C51编程和IAP技术,为进一步进行嵌入式操作系统的研究和开发各类
智能住宅电器打下基础.对推动我国新一代住宅电器的发展具有积极作用.
7.学位论文 李文华 激光切割机控制系统的改进研究 2005
激光切割机控制系统的改进研究测试计量技术及仪器研究生李文华指导教师周肇飞随着制造加工技术的快速发展,各种加工技术不断涌现,尤其是
激光切割(雕刻)加工技术在各行各业得到了广泛的应用。本课
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
主要结合激光切割加工技术在雕刻领域的应用来展开,比如我们常见的广告字体,或者
办公用章,这些都是很常见的激光雕刻技术,因此该技术在市场有着广泛的实际应用。我们通过对现有切割机(雕刻机)的调查发现,这些产品仍然存在
着或是成本偏高,或是效率低,可靠性不足的问题,因此本课题的主要任务就是重新设计一款既是低成本,又是高效率高可靠性的切割机(雕刻机)。
针对上述目标,完成了以下研究工作:一、重新制作了雕刻机软件,含以下功能:1)编写了更加方便操作的软件界面。用户可以直接在界面内编辑文
字大小、格式、字体。同时,软件界面上标出了实际雕刻平台的尺度,用户可以对照得知所刻字体的实际大小。 2)文字编辑功能,按刻字平台大
小,按比例显示在界面上,方便用户在雕刻前知道实际的雕刻出来的文字大小。 3)文字轮廓识别功能。我们设计一个文字轮廓识别的方法,可以
将文字外围轮廓计算出来,然后进一步转化成为雕刻机的运动指令,这些指令被单片机系统用来指挥雕刻机进行雕刻。除了可以识别文字外,对图形的
识别也是可以的,其原理与文字识别类似。 4)雕刻进度显示,对于工人的操作有指导意义。以往的雕刻机在雕刻过程中没有进度指示,操作人员
往往不知道雕刻过程还要持续多久。我们把雕刻进度显示在软件界面的最上方,该进度显示出雕刻指令的总数以及当前已经执行到第几条指令,从而方
便操作人员估计工作时间。 二、重新制作了硬件,含以下功能:1)设计单片机硬件电路,控制步进电机。首先重新设计电路原理图,然后做成
PCB,采用PROTEL电路设计工具。单片机采用STC89C58,该型号单片机具有大存储容量(用于存储雕刻指令),超强抗干扰能力,轻松过2KV/4KV快速脉冲
干扰(EFT),加密性强,无法解密(而ATMEL,PHILIP的51单片机均可解密),使得本产品的知识产权得以保护,不易被其他厂家所仿制。 2)编写单
片机程序,实现从上位机下载雕刻数据,并执行。单片机程序采用keil开发工具,用C51编写,代码执行效率高,开发速度快,可以直接生成HEX文件烧
写入单片机内。单片机烧写采用最新的串口ISP技术,无需外加编程器,降低了开发成本。从上位机下载的雕刻指令存储在单片机内部的FLASH内。
3)实现脱机工作,增强系统实时性,降低产品成本。研究创新点与改进后的优势:1)降低了成本:改用单片机控制,节省了一台电脑。 2)提高了
可靠性:单片机专注于控制,不受其他软件干扰。 3)提高了实时性:单片机的中断反应时间更快。 4)提高了效率:一方面是提高了雕刻速
度,更重要的是,工作人员的设计工作和雕刻控制工作可以同时进行。 采用了最新的单片机技术:IAP在线仿真技术、ISP在线程序烧写技术、新
型反解密单片机。
引证文献(1条)
1.洪新旺.龙永华 P89C668单片机IAP功能在维氏硬度测量仪中的应用[期刊论文]-机电工程技术 2008(08)
本文链接:http://d.g.wanfangdata.com.cn/Periodical_xddzjs200523042.aspx
下载时间:2010年1月5日