MCS-51单片机三种编程方式探析

MCS-51单片机三种编程方式探析摘要:MCS-51单片机是目前应用最为广泛的8位单片机,单片机的编程方式主要有汇编、C语言以及两者混合三种方式,掌握三种编程方式,在具体应用中灵活运用是非常重要的,该文通过这三种编程方式对MCS-51单片机的应用进行了详细的讨论。关键词:单片机;汇编语言;C语言;混合编程中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)20-4994-03DiscussofThreeMethodsofProgrammingforMCS-51SingleChipMicrocomputerLIRui,LVQiong(CollegeofPhysicsandElectronicEngineering,QujingNormalUniversity,Qujing655011,China)Abstract:MCS-51isthemostpopularinthe8bitsinglechipmicrocomputeratpresent.Singlechipmicrocomputerarethreewaysforprogramming,theyareassemblylanguage,Clanguageandcomplexprogramming.Usedthetechniqueswithgreatfacilityisveryimport.Thedocumentdiscussthemethodsindetai1.Keywords:singlechipmicrocomputer;assemblylanguage;Clanguage;complexprogrammingMCS-51系列单片机是Intel公司的8位单片机,其中DIP封装的AT89S52单片机是美国Atmel公司生产的低电压、高性能CMOS8位单片机,其片内含有8KB可在线编程的Flash闪速存储器,芯片采用Atmel公司的高密度、非易失性存储技术生产,与标准的MCS-51单片机的指令系统及引脚兼容、功能强大,适合于许多较多较为复杂的控制应用场合[1]。目前开发MCS-51系列单片机最流行的软件是美国Ke订Software公司出品的Keil软件,这是一个功能强大的集成开发环境(^Vision)。1MCS-51单片机的三种编程方式1.1汇编方式汇编语言是面向机器的程序设计语言,也称为符号语言。汇编语言中,用符号代替机器语言的二进制码,使之比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植。1.2C语言方式C语言是一种高级语言,其编写的程序比用汇编语言更符合人们的思考习惯,具有良好的模块化,容易阅读和维护等优点,开发者可以更专心地考虑算法而不是考虑一些细节问题,这样就减少了开发和调试的时间。同时C语言不依赖于硬件,这使其具有了很好的移植性[2]。另外,C语言还还有丰富的库函数支持,绘图能力也比较强。但C语言代码编译后的目标代码体积大,意味着存在占用空间多,执行速度较慢的问题。1.3汇编与C语言混合方式根据汇编和C语言的特点,选择编程语言的一种折中方式就是汇编和C语言混合编程。混合编程方式主要有两种形式,一种是在C语言中嵌入汇编代码,另一种是汇编和C语言相互调用函数,实现方法是通过关键词进行标识,如果涉及参数传递,主要是通过R2—R7这几个工作寄存器来存取。在应用中,通常在对时效性要求比较严格的时候,这部分代码使用汇编是唯一的选择,比如时钟的中断计时服务程序等,而其它时候,使用C语言比较方便。2三种编程方式的应用一一经典流水灯实验2.1汇编方式ORG0000H;标记程序起始位置SJMPMAIN;跳转到主程序地址ORGOOOBH;计时/计数器0的中断入口地址AJMPTIMERO;跳转到计时中断服务程序ORG0033H;标记主程序起始的绝对位置MAIN:MOVTMOD,#02H;设置为计时器工作方式2MOVTH0,#06H;预设溢出的自动赋值数据MOVTL0,#06H;预设一次计时的初值SETBETO;打开计时/计数器中断控制SETBEA;打开总中断控制SETBTRO;开启计时MOVR1,#OOHMOVRO,#OOHMOVA,#O1H;初始化状态数据LOOP:MOVPO,A;点亮发光二极管SJMPLOOPTIMERO:INCRl;机器周期计时CJNERl,#250,EXT;而方式2使用的是8位字长,因此使用了R0和R1扩展MOVR1,#OOHINCROCJNERO,#32,EXTMOVRO,#OOHRLA;循环左移点亮状态数据EXT:RETI;中断返回END;程序结束2.2C语言方式unsignedintt二0;//计时变量unsignedchars=0x01;//发光二极管点亮状态数据变量voidtimerO()interrupt1using1{//中断函数申明t++;//每次中断,计时变量加1if(t=8000){//需要8000次中断,时间才到1秒s=_crol_(s,1);//点亮状态数据变为下一状态t=0;//到1秒后,赋0重新计时}}voidmain(){TM0D=0x02;//设置...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?