流水灯程序设计与调试概要PPT课件_第1页
流水灯程序设计与调试概要PPT课件_第2页
流水灯程序设计与调试概要PPT课件_第3页
流水灯程序设计与调试概要PPT课件_第4页
流水灯程序设计与调试概要PPT课件_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

.,1,流水灯程序设计与调试转弯灯程序设计与调试交通灯程序设计与调试,情境1彩灯控制器,主要内容,SingleChipMicrocomputer,.,2,1.3.1流水灯程序设计与调试,一、任务说明1、要求P1口作为输出口。P1.0至P1.7接8个发光二极管。要求编写程序实现如下功能:8个发光二极管依次亮灭并循环,延时0.1秒(已知fosc=12MHz)。2、重点1、学习P1口作为输出口的使用方法。2、学习延时程序的设计方法。,.,3,二、硬件电路,1、硬件分析发光二极管采用共阳极连接,P1口某个引脚输出“0”则对应的灯点亮。,.,4,2、软件分析(1)整体任务分析:控制字始终是7个“1”和1个“0”,“0”的位置每隔0.1秒左移1位,然后由P1口输出控制字点灯。(2)程序流程图,.,5,涉及的指令,MOV类指令RL指令DJNZ延时子程序,.,6,(3)关于左移运算:可以利用循环左移指令实现指令性质:逻辑运算指令指令格式:RLA注意:操作数只能是累加器。指令说明:执行时累加器A的存储内容(8位2进制数),整体向左移动1位(低位移动到相邻的高位),最高位补回到最低位。指令应用:常用于完成快速乘法,每次执行累加器内容扩大2倍。相关指令:RRA;RLCA;RRCA,.,7,延时子程序实例,若单片机的主频为12MHz,使用循环转移指令编写延时20ms的子程序。(双重循环结构)一个机器周期:12/12M=1us次数周期DELAY:MOVR6,#0C8H11LOOP2:MOVR7#x2001NOP2001LOOP1:DJNZR7,LOOP1200 x2DJNZR6,LOOP22002RET12200+200+400 x+400+2=20000求出x=48,.,8,三、任务实施步骤1:各小组按照流程图设计各部分程序。步骤2:程序汇编无误后,利用ISP软件和下载线将目标文件(.HEX)程序代码写入本组的单片机芯片中。步骤3:接通直流电源,启动电路板观察现象,如现象不对则重复步骤1、2。步骤4:现象无误,请求教师检查、评价。步骤5:编制项目报告并提交。,.,9,四、任务扩展思考:若想实现8个灯累加点亮并循环,则程序该如何设计?,.,10,一、任务说明P1口作为输入、输出口。P1.0、P1.1接开关K1、K2;P1.2、P1.3接发光二极管L1、L2;P1.4、P1.5接L5、L6。K1作为左转弯开关,K2作为右转弯开关。L1、L2作为左转弯灯,L5、L6作为右转弯灯。要求编写程序实现如下功能:向上打K1时(K1=1),左转弯灯以一定频率闪烁,向上打K2时(K2=1),右转弯灯以一定频率闪烁,两开关同时向上或向下,四灯都灭。灯闪烁一次即可,闪烁时先亮0.5S再灭0.5S。,1.3.2转弯灯控制程序设计与调试,.,11,重点:1、学习P1口既作为输入,又作为输出的使用方法。2、学习数据输入、输出程序的设计方法。,.,12,二、任务分析1、硬件分析P1口为准双向I/O接口,输出单条指令完成,输入时应当先向对应的端口锁存器写入1,然后读入数据。,.,13,2、软件说明(1)整体分析:先读入开关的状态,根据开关的四种状态分情况控制灯的亮灭。控灯完成后返回开始继续读开关,保证开关持续有效。(2)多分支判断的实现:开关有四种状态,对应灯有四种控制规律。可采取逐点检测的方式实现分支控制。即读入开关状态后先判断是否为00,若为00则灯全灭;若不为00则判断开关是否为01,若为01则左转弯灯闪烁;若不为01则判断开关是否为10,若为10则右转弯灯闪烁;若不为10则必然为11,灯全灭。,.,14,(3)实现分支判断的关键指令:条件转移指令CJNE指令名称:比较不相等转移。指令格式:CJNEA,#data,rel;若(A)data,则跳到标号处执行指令,否则顺序执行。对借位标志有影响:若(A)0Y=100X=0求出Y值,将Y值存入31H单元。XX0解:根据数据的符号位判别该数的正负,若最高位为0,再判别该数是否为0。程序流程如图2-2所示。参考程序如下:ORG1000H,.,22,MOVA,30H;取数JBACC.7,NEG;负数,转NEGJZZER0;为零,转ZER0ADDA,#02H;为正数,求X+2AJMPSAVE;转到SAVE,保存数据ZER0:MOVA,#64H;数据为零,Y=100AJMPSAVE;转到SAVE,保存数据NEG:DECA;CPLA;求XSAVE:MOV31H,A;保存数据SJMP;暂停END,.,23,图2-2例4.3程序流程图,.,24,多向分支程序设计举例【例4.4】根据R0的值转向7个分支程序。R060,转向SUB6;解:利用JMPA+DPTR指令直接给PC赋值,使程序实现转移。程序流程如图2-3所示。,.,25,ORG2000HMOVDPTR,#TAB;转移指令表首地址MOVA,R0;取数MOVB,#10DIVAB;A除以10,商在A中CLRCRLCA;A2AJMPA+DPTR;PCA+DPTRAJMPSUB0;转移指令表AJMPSUB1AJMPSUB6,TAB:,.,26,图2-3多向分支程序流程图,返回本节,.,27,1.3.3交通灯程序设计与调试,一、任务说明P1口控制6个灯,红、黄、绿各两个,编程实现交通灯控制规律。,.,28,.,29,教学提示:指令是CPU用于控制功能部件完成某一指定动作的指示和命令。一台计算机全部指令的集合称为指令系统。指令系统体现了计算机的性能,也是计算机重要的组成部分,应用计算机进行程序设计的基础。单片机应用系统的运行,是依靠合理的硬件接口、用户程序和监控程序的完美结合实现的,所以掌握单片机需要学习多样的汇编程序设计方法实现运算和控制功能。,.,30,80C51单片机具有111条指令,指令系统特点如下:,(1)指令执行时间快。1个机器周期指令有64条,2个机器周期指令有45条,而4个机器周期指令仅2条(乘除指令)。(2)指令短,指令编码字节少,单字节的指令有49条(约有一半的指令为单字节指令),双字节的有45条,三字节的仅有17条。(3)具有丰富的位操作指令。(4)可直接用传送指令实现端口的输入输出操作。,.,31,以80C51为内核的单片机指令系统为例,用44种操作码助记符来描述33种操作功能,构成了111条基本指令。单字节指令49条;按字节分双字节指令45条;三字节指令17条;单周期指令64条;按指令执行时间分双周期指令45条;111条基本指令4个机器周期指令2条;数据传送类指令(29);算术运算类指令(24);按功能分逻辑运算及移位类指令(24);控制转移类指令(17);布尔变量操作类指令(17)。,.,32,.1指令格式及常用符号,80C51单片机指令格式)指令由操作码助记符和操作数两部组成。)指令格式如下:标号:操作码助记符目的操作数,源操作数;注释符号“”其包含的内容因指令的不同可有可无。特例:子程序返回指令RET、中断返回指令RETI、空操作指令NOP,皆无目的操作数和源操作数标号:根据编程需要给指令设定的符号地址,可有可无;通常在子程序入口或转移指令的目标地址处才赋予标号。标号由18个字符组成,第一个字符必须是英文字母,不能是数字或其他符号,标号后必须用冒号。,.,33,操作码助记符:指令的核心部分,用于指示机器执行何种操作,如加、减、乘、除、传送等。操作数:是指令操作的对象,可以是一个具体的数据,也可以是参加运算的数据所在的地址。操作数一般有以下几种形式:没有操作数,操作数隐含在操作码中,如RET指令;只有一个操作数,如INCA指令;有两个操作数,如MOVA,30H指令,操作数之间以逗号相隔;有3个操作数,如CJNEA,#00H,10H指令。注释:对指令的解释说明,用以提高程序的可读性,注释前必须加分号,注释换行时行前也要加分号。,.,34,指令的字节1.单字节指令(49条)在MCS-5l指令系统中,单字节指令可分为两类:无操作数的单字节指令含有操作数寄存器编号的单字节指令。1)无操作数单字节指令这类指令只有操作码字段,操作数隐含在操作码中。例如:INCDPTR,.,35,指令码为2)含有操作码、寄存器编码的单字节指令单字节的指令码由操作码和指示操作数所在寄存器编码组成。例如:MOVA,Rn指令码为(其中rrr为寄存器Rn的编码),例如:INCDPTR,.,36,2.双字节指令(46条)双字节指令的操作码字节在前,其后的操作数字节可以是立即数,也可以是操作数所在的片内RAM地址。例如:MOVA,#23H指令码为,.,37,1实训目的(1)掌握指令格式及表示方法:助记符表示和机器码表示。(2)了解人工汇编与机器汇编的方法。(3)了解寻址方式的概念。(4)掌握常用指令的功能及应用。,实训3指令的应用,2实训引入,MOVP1,#55H,MOVP1,55H,请比较以上两条指令执行后P1口的状况?为什么?,.,38,3实训表格,表3.1实验表格,.,39,.,40,4.实训分析与总结,在实训中看到以下现象:往P1口传送数据的指令中,数据的来源不尽相同。数据是指令的操作对象,叫做操作数。指令必须给出操作数所在的地方,才能进行数据传送。寻找操作数地址的方法,称为寻址方式。,寻找操作数到底有多少种方式呢?,.,41,指令概述,指令按字节长度可以分为三种:,指令格式,指令的格式:,例如:MOVA,R0,例如:MOVA,30H,例如:MOVDPTR,#2010H,.,42,一、寻址方式(找信方式),我的信在他那!找信去!,注:找信是寻找信的“地址”!,你能说出第二封信的“地址”吗?,.,43,目的地,#XXH,操作数,MOVP1,#55H,MOVA,#01H,#55H,目的地,信,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,.,44,目的地,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,内部RAM或SFR区,操作数,XXH,MOVP1,20H,20H,目的地,20H,注:寻址是寻操作数的“地址”!,直接给出地址20H直接寻址,.,45,目的地,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,寄存器,目的地,操作数,XXH,MOVP1,A,寄存器,R0-R7ABDPTR,你能说出为什么叫寄存器寻址吗?,.,46,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,MOVP1,R0,目的地,寄存器,操作数,3AH,内部RAM,3AH,65H,3AH,R0R1DPTR,目的地,2号,信在2号箱子里,1号,你能说出1号箱子和2号箱子分别对应内存中哪一部分吗?,.,47,寻址比较,MOVP1,R0,MOVP1,R0,MOVP1,20H,MOVP1,#20H,MOVP1,R0,.,48,寻址比较,MOVP1,R0,MOVP1,R0,MOVP1,20H,MOVP1,#20H,MOVP1,R0,.,49,寻址比较,MOVP1,R0,MOVP1,R0,MOVP1,20H,MOVP1,#20H,MOVP1,20H,.,50,寻址比较,MOVP1,R0,MOVP1,R0,MOVP1,20H,MOVP1,#20H,MOVP1,#20H,.,51,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,MOVCA,A+DPTR,目的地,寄存器,操作数,内部RAM,3AH,65H,3AH,基址寄存器12H,变址寄存器34H,内部RAM,46H,65H,A,DPTRPC,46H,.,52,目的地,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,XXH,位寻址,操作数,SJMP54H,PC,+,54H,PC,2002H,2002H=2056H,PC,2056H,.,53,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,1,00000000,想一想:如果想使27H单元的第3位置1,该怎么办呢?,.,54,位寻址地址表,例:SETB3DH,3D,3C,3B,3F,3E,3A,39,38,27H,.,55,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,SETB3DH,0000000,1,0,.,56,二、指令系统,1、指令描述约定,.,57,2、MCS-51的指令,2.1数据传送指令(29条)2.2算术运算指令(24条)2.3逻辑运算指令(24条)2.4控制转移指令(17条)2.5位操作指令(17条)2.6常用伪指令(17条),.,58,目的地址源地址,数据,MOV,MOVA,#20H,,,MOV,20H,A,2.1数据传送指令(29条)8位数据传送指令(15条),.,59,2.1数据传送指令(29条)16位数据传送指令(1条),MOVDPTR,#data16,外部数据传送指令(4条),MOVX,,,MOVX,.,60,1)字节交换指令(3条),交换和查表类指令(9条),,,A,XCH,2)低半字节交换指令(1条),XCHDA,Ri,3)累加器A中高4位和低4位交换(1条),SWAPA,4)查表指令(2条),MOVCA,A+PC,MOVCA,A+DPTR,5)堆栈操作指令(2条),PUSHdirect,POPdirect,.,61,direct,2.2算术运算类指令(24条)加法指令(8条),A,,Rn,Ri,#data,ADD,direct,A,,Rn,Ri,#data,ADDC,减法指令(4条),direct,A,,Rn,Ri,#data,SUBB,ADDCA,B(A+B+CYA),SUBBA,B(ABCYA),.,62,BCD码:00110100,BCD码调整指令(1条),DAA,注意:DAA指令只能跟在ADD或ADDC加法指令后,不适用于减法指令。,00011000,00010110,BCD码,00101110,差6,.,63,加1减1指令,.,64,乘法指令(1条),MULAB,除法指令(1条),DIVAB,2.3逻辑及移位类指令逻辑与指令(6条),无符号数相乘,高位存B,低位存A,无符号数相除,商存A,余数存B,.,65,逻辑或指令(6条),.,66,逻辑异或指令(6条),.,67,累加器A清0和取反指令,.,68,A.0,A.7,A.0,A.7,A.0,A.7,A.0,A.7,CY,CY,RLARRARLCARRCA,注意:执行带进位的循环移位指令之前,必须给CY置位或清零。,循环移位指令,返回,.,69,2.4控制转移类指令无条件转移指令(4条),1)长转移指令:LJMPAAAAH;AAAAHPC,PC=0000H,PC=AAAAH,假设执行该指令前,PC的值为0000H。,注意:该指令可以转移到64KB程序存储器中的任意位置。,.,70,PC高5位(保持不变),PC低11位,操作码(第一字节),操作数(第二字节),11位转移地址的形成示意图,程序计数器PC,2)绝对转移指令,AJMPaddr11;PC+2PC,addr11PC.10PC.0,.,71,PC,2002H,2003H,0000H,0001H,2004H,2005H,2006H,PC,PC,PC,2006H,2003H,PC,0002H,PC,3)相对转移指令,例:SJMP03H,03H就是当前PC值与目的PC值相对差,PC,.,72,条件转移指令(8条)1)累加器A判0指令(2条),2)减1非零转移指令(2条),.,73,3)比较转移指令(4条),.,74,条件转移类指令范例方案一,还有什么方法实现循环的终止?,将00H0FH这16个数顺序地置入片内RAM20H2FH单元中。MOVR0,#20HMOVR7,#0FHCLRALOOP:MOVR0,AINCAINCR0DJNZR7,LOOPSJMP$,.,75,条件转移类指令范例方案二,MOVR0,#20HMOVR7,#0FHCLRALOOP:MOVR0,AINCAINCR0CJNEA,#0FH,LOOPSJMP$,.,76,条件转移类指令范例方案三,MOVR0,#20HMOVA,#0FHMOV30H,#00HLOOP:MOVR0,

温馨提示

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

最新文档

评论

0/150

提交评论