51单片机汇编语言及c语言经典实例

51单片机汇编语言及c语言经典实例

ID:35638918

大小:2.59 MB

页数:36页

时间:2019-04-04

51单片机汇编语言及c语言经典实例_第1页
51单片机汇编语言及c语言经典实例_第2页
51单片机汇编语言及c语言经典实例_第3页
51单片机汇编语言及c语言经典实例_第4页
51单片机汇编语言及c语言经典实例_第5页
资源描述:

《51单片机汇编语言及c语言经典实例》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、....51单片机汇编语言及C语言经典实例实验及课程设计51单片机汇编语言及C语言经典实例......一、闪烁灯如图1所示为一简单单片机系统原理图:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。延时程序的设计方法,作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒,机器周期

2、微秒如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETBP1.0指令使P1.0端口输出高电平,使用CLRP1.0指令使P1.0端口输出低电平。C语言源程序#includesbitL1=P1^0;voiddelay02s(void)//延时0.2秒子程序{图1单片机原理图unsignedchari,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>

3、0;k--);}voidmain(void){while(1){L1=0;delay02s();L1=1;delay02s();}汇编源程序ORG0START:CLRP1.0LCALLDELAY图2程序设计流程图SETBP1.0LCALLDELAYLJMPSTARTDELAY:MOVR5,#20;延时子程序,延时0.2秒D1:MOVR6,#20D2:MOVR7,#248DJNZR7,$DJNZR6,D2DJNZR5,D1RETEND...二、多路开关状态指示如图3所示,AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,P1.4-P1.7接

4、了四个开关K1-K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用JBP1.X,REL或JNBP1.X,REL指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用MOVA,P1指令一次把P1端口的状态全部读入,然后取高4位的状态来指示。方法1(汇编源程序)ORG00HSTART:MOVA,P1ANLA,#0F0HRRARRARRARRAORLA,#0F0HMOVP1,ASJMPSTA

5、RTEND方法1(C语言程序)图4程序流程图#INCludeunsignedchartemp;voidmain(void){while(1){temp=P1>>4;temp=temp

6、0xf0;P1=temp;}}方法2(汇编源程序)ORG00HSTART:JBP1.4,NEXT1CLRP1.0SJMPNEX1图3单片机原理图NEXT1:SETBP1.0NEX1:JBP1.5,NEXT2CLRP1.1SJMPNEX2NEXT2:SETBP1.1NEX2:JBP1.6,NEXT3CLRP1.2SJMPNEX3NEXT3:SETBP1.2

7、NEX3:JBP1.7,NEXT4CLRP1.3SJMPNEX4NEXT4:SETBP1.3NEX4:SJMPSTARTEND方法2(C语言源程序)#INCludevoidmain(void){while(1){if(P1_4==0){P1_0=0;}Else{P1_0=1;}if(P1_5==0){...P1_1=0;}else{P1_1=1;}if(P1_6==0){P1_2=0;}else{P1_2=1;}if(P1_7==0){P1_3=0;}else图5单片机原理图三、广告灯的设计利用取表的方法,使端口P1做单一灯的变化:左

8、移2次,右移2次,闪烁2次(延时的时间0.2秒)。利用MOVDPTR,#DATA16的指令来使数据指针寄存器指到表的开头。利用MOVCA,@A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。因此,只要把控制码建成一个表,而利用MOVCA,@A+DPTR做取码的操作,就可方便地处理一些复杂的控制动作,取表过程如下图所示:汇编源程序ORG0START:MOVDPTR,#TABLELOOP:CLRAMOVCA,@A+DPTRCJNEA,#01H,LOOP1JMPSTARTLOOP1:MOVP1,AMOVR3,#

9、20LCALLDELAYINCDPTRJMPLOOPDELAY:M

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。