项目二单片机硬件及指令系统应用.ppt

上传人:sccc 文档编号:5773829 上传时间:2023-08-18 格式:PPT 页数:69 大小:1.06MB
返回 下载 相关 举报
项目二单片机硬件及指令系统应用.ppt_第1页
第1页 / 共69页
项目二单片机硬件及指令系统应用.ppt_第2页
第2页 / 共69页
项目二单片机硬件及指令系统应用.ppt_第3页
第3页 / 共69页
项目二单片机硬件及指令系统应用.ppt_第4页
第4页 / 共69页
项目二单片机硬件及指令系统应用.ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《项目二单片机硬件及指令系统应用.ppt》由会员分享,可在线阅读,更多相关《项目二单片机硬件及指令系统应用.ppt(69页珍藏版)》请在三一办公上搜索。

1、项目二、单片机硬件及指令系统应用,项目二、单片机硬件及指令系统应用 任务1.二极管点亮,能力目标1.能用Proteus构建单片机最小系统2.能运用并行I/O接口3.能学会程序编写的基本方法并用Keil C进行调试4.能进行灯亮控制电路综合调试学习内容1.了解指令的概念2.掌握寻找方式3.掌握传送、位操作等指令4.了解并行I/O接口,一、任务要求用单片机来实现对一个发光二极管实现点亮的功能。二、任务分析1.一个普通二极管被点亮的条件R1在此电路中的选择范围为3301K,2.用单片机的I/O口的其中一位来控制二极管的 点亮问题给P1.0送一低电平,则二极管就可以被点亮,送一高电平,则二极管就熄灭。

2、,三、学习知识,(一)了解指令的概念 1、指令的表示法:由操作码和操作数两大部分组成 MCS-51指令格式:标号:操作助记符操作数1,操作数2,操作数3其中操作码助记符一般由25个英文字母组成。51系列单片机共有111条指令。,2、指令的分类:按指令在存储器中所占用的存储单元分:单字节 NOP 双字节 ADD A,#05H 三字节 LJMP 8000H按指令功能分:数据传送类 MOV A,#04算术运算类 ADD A,#05H逻辑运算类 ANL A,#05H控制类 LJMP 8000H位操作类 SETB 90H,3、指令中操作数的描述Rn 工作寄存器R0R7。Ri 间接寻址寄存器R0、R1。D

3、irect 直接地址,包括内部128B RAM单元地址、21个SFR地址。#data 8位常数。#data 16 16位常数。addr 16 16位目标地址。addr 11 11位目标地址。rel 8位带符号的偏移地址。DPTR 16位外部数据指针寄存器。bit 可直接位寻址的位。,A 累加器。B 寄存器B。C 进、借位标志位,或位累加器。间接寄存器或基址寄存器的前缀。/指定位求反。(x)x中的内容。(x)x中的地址中的内容。当前指令存放的地址。A B 累加器A和B寄存器组成的寄存器对,常出现在乘除法指令中。,(二)掌握寻找方式 1、立即数寻址 MOV A,#40H 2、直接寻址 MOV A,

4、40H 3、寄存器寻址 MOV A,R2 4、寄存器间接寻址 MOV A,R0,(1)采用R0或R1作为寄存器间接寻址,可寻址的片内片外的RAM的低256字节的存储空间。(2)采用DPTR作寄存器间接寻址,可寻址的片外的数据存储器的整个64KB的空间。5、变址寻址操作数地址=变地址+基地址 如MOVC A,A+DPTR,例:累加器A的内容为20H,DPTR的值为2000H,程序存储器2020H单元内容为47H,则执行该指令后累加器A的值为47H。MOVC A,A+DPTR6、相对寻址 如JC 60H;设(PC)=2000H为基址,相对偏移量为60H;则当C=1时,转移的目的地址=2000H+2

5、+60H,7、位寻址位寻址是指指令的操作数为8位二进制数的某一位,指令中给出的是操作数的位地址。可用于位寻址的区域是片内RAM20H2FH单元和部分特殊功能寄存器。(1)可直接使用位地址。(2)对特殊寄存器也可进行位寻址。,(三)掌握传送、位操作等指令1、片内数据传送指令单片机在逻辑上分为三个空间,分别是程序空间、片内数据存储器空间、片外数据存储器空间。,(1)以A为目标地址的传送指令,(2)以直接地址为目标地址的传送指令,(3)以Rn为目标地址的传送指令,(4)以间接地址为目标地址的传送指令,(5)十六位数传送(以DPTR为目标地址)传送指令,2、累加器A与片外RAM之间传送指令MOVX(4

6、条)MOVX A,DPTR;A(DPTR)MOVX DPTR,A;(DPTR)AMOVX A,Ri;A(Ri)MOVX Ri,A;(Ri)A 1、3两条指令完成了将外部数据读入单片机,此时单片机的RD为低电平2、4两条指令完成了将单片机数据写入外部设备,此时单片机的WR为低电平,3、程序存储器向累加器A传送指令MOVC(2条)MOVC A,A+PCMOVC A,A+DPTR这种指令可用来实现查表程序,不同之处在于:第一条指令只能在256位中查表,第二条指令可在64KB范围中查表。,例:试编写一程序,实现将片外RAM的0FAH单元中的内容传送到外RAM的04FFH单元中。分析:根据图2-6可以看

7、到,外部存储单元之间是不能相互传递的,所以只有将外部数据通过传向片内,再将片内的数据传向片外来进行操作。具体在操作过程中要考虑如下事宜:定义起始地址、目标地址。源操作数A。A目标操作方式。,ORG 1000HMOV R0,#0FAH;定义源操作数地址MOV DPTR,#04FFH;定义目标地址MOVX A,R0;源操作数先送至AMOVX DPTR,A;A目标地址END,4、位操作指令(1)位传送指令(2条)MOV C,bitMOV bit,C(2)位修正指令(6条)CLR C CLR bit CPL C CPL bit SETB C SETB bit,四、任务实施(一)用Proteus构建单片

8、机最小系统硬件,图2-7 单片机控制的二极管点亮电路,(二)编写程序并进行调试在任务分析中得知,给P1.0赋个低电平,发光二极管就被点亮。程序如下:,(三)进行二极管点亮电路仿真调试,图2-8 单片机控制的二极管点亮仿真电路,五、总结与提高完成了二极管点亮的任务,大家考虑一下:1、能否用两个按钮来控制二极管的点亮与熄灭,一个按钮定义为点亮功能,另一个按钮定义为熄灭。2、能否采用一个按钮来实现二极管的点亮与熄灭,按一下按钮,二极管被点亮,再按一下后,熄灭,再按下点亮,再按下熄灭。,能力目标1.能编写和用Keil C调试简单的延时子程序2.能用Keil C进行单步,连续调试3.能进行单灯闪烁电路综

9、合调试学习内容1.学习转移指令的运用2.掌握子程序的编写方法,项目二、单片机硬件及指令系统应用 任务2.单灯闪烁,一、任务要求要求二极管亮灭闪烁的时间为200ms,控制端口仍然采用P1.0口。二、任务分析在任务一中我们已成功将二极管点亮,本任务与任务一所不同的是要由P1.0产生的时序信号如图2-9所示。,图2-9 单灯闪烁控制时序,三、学习知识(一)主程序和子程序的概念 所谓主程序就是根据设计者的要求完成主要功 能的程序。子程序的概念:主程序中反复用到的一些重复的功能模块程序,如果都放在主程序中,会让主程序显得冗长,所以常将这种需要频繁使用的基本操作设计成相对独立的程序段。,1、子程序的调用与

10、返回子程序的调用:短调用指令ACALL addr11,长调用指令LCALL addr16,不同的是前者跳转的范围为2K后者跳转的范围为64K。返回指令:RET从子程序返回到主程序,RETI从中断服务程序返回到主程序,2、子程序设计(1)每个子程序都有一个唯一的入口(唯一的名称),并以标号作为标识,以便主程序的正确调用,子程序通常以RET指令作为结束。(2)为了使子程序具有通用性,子程序的操作对象通常采用寄存器或寄存器间址等寻址方式。,(3)为了使子程序不论存放在存储器的任何区域都能被正确执行,在子程序中如有转移指令,应使用相对转移指令而不能用绝对转移指令。(4)进入子程序时,应对那些主程序中使

11、用并在子程序中继续需要使用的寄存器的内容进行保护(即保护主程序现场),在返回主程序时应恢复它们的原来的状态。,子程序设计的基本步骤如下:(1)确定子程序的名称(入口标号)。(2)确定子程序的入口参数及出口参数。(3)确定所使用的寄存器和存储单元机器使用目的。(4)确定子程序的算法,编写源程序。,例、设内部RAM20H、21H单元中有两个数a和b,编程求c=a2+b2,并把c送入内存单元22H中。该程序由两部分组成:主程序和子程序。主程序通过累加器A传送入口参数a和b,子程序用于求平方并将结果通过累加器A传送给主程序,主程序再求两平方和。,(二)循环转移指令DJNZ Rn,rel;(Rn)(Rn

12、)1若(Rn)0,则PC+2+rel,跳转至目标地址若(Rn)=0,PC+2 跳转到本指令的下一条指令去执行DJNZ direct,rel;(direct)(direct)1若(direct)0,则PC+2+rel,跳转至目标 地址若(direct)=0,PC+2 跳转到本指令 的下一条指令去执行,DJNZ指令主要用来实现计数功能,一旦计数完毕,立即退出循环体,否则继续在循环体中循环。,例:将8031内部的RAM40H4FH单元置为#00H。解:,(三)延时子程序的设计1、机器周期当振荡脉冲频率为12MHZ,一个机器周期为1us。当振荡脉冲频率为6MHZ,一个机器周期为2us。2、指令周期执行

13、一条指令所需的时间叫指令周期,一般指令需1、2、4个机器周期。3、单循环程序运用,图2-10 延时子程序(5.135ms),考虑在此单循环程序外再嵌套一层循环,见下方第27部分,以内部(36行)产生延时时间为5ms为重复操作对象,重复操作的次数由外循环来进行参数设置,由外部循环中R7设定为20,这样重复20次1ms的操作后延时约为100ms,考虑到晶振会带来点误差。,图2-11 延时子程序(102ms),四、任务实施(一)硬件电路同任务一。(二)100ms延时子程序的调试。这已在延时子程序的设计中完成。(三)编写完整的主程序和子程序。,(四)进行单灯闪烁综合调试。将上述生成的单灯闪烁.hex文

14、件加载到用Proteus绘制的硬件电路CPU后台,点击运行,可以观察到二极管以200ms闪烁的结果,图2-12 单灯闪烁电路仿真,五、总结与提高 1、纯粹的硬件电路设计:硬件定时不占CPU时间,但需通过改变电路的元件参数来调节定时时间,在使用上不方便。2、延时子程序:像本次任务中,CPU大量的时间停留在延时程序中增加了开销,所以软件定时时间不宜过长。3、可编程定时器:通过对系统时钟脉冲的计数来实现,计数值通过改变计数值程序设定。可以不占用CPU的开销。,项目二、单片机硬件及指令系统应用 任务3.跑马灯,能力目标1.能通过程序的编写使灯从上依次向下轮流点亮,或从下往上依次轮流点亮。2.能用Kei

15、l C进行单步,连续调试3.能进行跑马灯电路综合调试学习内容1.学习向左或向右转指令的运用2.状态计数器的设计3.程序流程图的画法,一、任务要求P1口的8位分别接着二极管,通过编程依次实现P1口8个二极管由低位到高位依次点亮和熄灭,依次点亮的时间为100ms。二、任务分析 通过任务要求分析,需要在P1口产生如下时序:见图2-13所示。,P1.0,2,3,4,5,6,图2-13 跑马灯要求P1口产生的时序,通过任务分析,要解决如下问题:(1)100ms的延时子程序,前面任务二中已会运用,更可以直接拿来运用。(2)状态转移的实现。(3)一个时序周期中8个状态的记忆问题。,三、学习知识(一)状态转移

16、的实现,1、RL A;round left a助记例:(A)=81H,RL A 后 A7移至A0的后边,其它位向左移1位,执行结果(A)=03H。将累加器A的内容左移1位,位A7循环移入A0,不影响其它的标志位。,2、RLC A和RL A 指令一样都使A中内容逐位左移一位,但RLC A将使CY连同A中的内容一起左移循环,A7进入CY,CY进入A0。,例:(A)=81H,CY=0执行RLC A后,(A)=02H,CY=1,3、RR A;round right A,RR A指令的异同点类似于RL A,仅是A中数据位移方向向右。例:(A)=81H RR A执行结果(A)=0C0H,4、RRC A指令

17、的异同点类似于RLC A 仅是A中数据位移方向向右。,例:(A)=81H,CY=0 执行RRC A(A)=40H,CY=1,(二)一个时序周期中8个状态的记忆问题 在本任务中我们可以将Rn设为08H,然后进行一次状态转移,Rn就减1,直至减到Rn为0,(三)跑马灯程序周而复始的实现学习指令:无条件转移指令(4条)1、AJMP addr11 低11位这条指令的实现过程:首先将当前PC指针加2。然后用addr11位的地址替换PC指针的低11位,形成新的PC指针而转移到新的地址。跳转的范围为2K。,例:ZHUAN:AJMP addr11设addr11=001,0000,0011B标号ZHUAN的值为

18、16位地址1230HPC+2 1230H+02H=1232H=0001,0010,0011,0010B替换低11位新的PC值为0001,0001,0000,0011B=1103H,2、长转移指令(长跳转指令)LJMP addr16执行完该条指令时,无条件转移到指令所提供的16位地址去,所以转移地址可在64K程序空间内跳转。例:LJMP 9000H执行完该条指令后,将使程序转移到9000H单元继续执行。,3、相对转移指令相对寻址SJMP rel rel 取值范围-128+127(向前向后)采用的是跳转两量的补码(向下为正,向上为负求补)最终跳转的目的地为PC+2+rel4、间接转移指令JMP A

19、+DPTR该指令是无条件的间接转移(散转)指令,一般用于程序的多种出口的实现。,例:根据累加器A的数值设计散转表程序 MOV A,#data MOV DPTR,#TABLE ADD A,#data JMP A+DPTRTABLE:AJMP PORT0(PC=TABLE)AJMP PORT1(PC=TABLE1)AJMP PORT2(PC=TABLE2),例:设A中为键值,试编写按键值处理相应事件的程序段。解:MOV DPTR,#KYEG MOV B,#03H MUL AB JMP A+DPTR KYEG:LJMP KEYG0 LJMP KEYG1,比较 LJMP、AJMP、SJMP、JMP转移

20、的范围LJMP 064KAJMP 2KSJMP-128+127JMP 0256,(四)流程图的绘制在编写流程图时,会采用如图2-15所示的框图说明程序的执行情况。,四、任务实施,图2-16 跑马灯的硬件电路设计,2、程序流程图如图2-17所示。,3、程序的编制如下:,4、跑马灯电路用Proteus 仿真调试结果如图所示。图中选择了D1、D2、D8、被点亮的状态。,五、总结与提高1.程序的优化问题在本程序中,如果不考虑一个时序周期中8个状态的记忆问题,程序同样能实现,原因是当用RL A进入到第八个状态时,(A)中数值又回到0FEH,自然完成到一个周期的初始状态,这样程序第2和第8行可省去,第9行程序改为LJMP L2,读者可以自己进行比较,体会个中原因。2.设计由灯的P1.0至P1.5六个二极管从上到下循环点亮。3.设计成由D1D8D7D1顺序亮的跑马灯。4设计成先从D1亮至D7一个周期,再从D7亮至D1一个周期,然后周而复始。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号