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

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

《项目二单片机硬件及指令系统应用.ppt》由会员分享,可在线阅读,更多相关《项目二单片机硬件及指令系统应用.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、控制二极管的 点亮问题给P1.0送一低电平,则二极管就可以被点亮,送一高电平,则二极管就熄灭。三、学习知识(一)了解指令的概念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 90

3、H 3、指令中操作数的描述Rn 工作寄存器R0R7。Ri 间接寻址寄存器R0、R1。Direct 直接地址,包括内部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寄存器组成的寄存器对,常出现在乘除法指令中。(

4、二)掌握寻找方式 1、立即数寻址 MOV A,#40H 2、直接寻址 MOV A,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)

5、=2000H为基址,相对偏移量为60H;则当C=1时,转移的目的地址=2000H+2+60H 7、位寻址位寻址是指指令的操作数为8位二进制数的某一位,指令中给出的是操作数的位地址。可用于位寻址的区域是片内RAM20H2FH单元和部分特殊功能寄存器。(1)可直接使用位地址。(2)对特殊寄存器也可进行位寻址。(三)掌握传送、位操作等指令1、片内数据传送指令单片机在逻辑上分为三个空间,分别是程序空间、片内数据存储器空间、片外数据存储器空间。片 内 外程 序 存储器ROMEPROMMOVC特 殊 功能 寄 存器片内RAM128字节MOVPUSHPOPXCHXCHDMOVX片外数据存储器RAM(1)以A

6、为目标地址的传送指令指令指令代码操作MOV A,Rn11101rrrA(Rn)MOV A,direct11100101 directA(direct)MOV A,Ri1110011iA(Ri)MOV A,#data1101000Adata(2)以直接地址为目标地址的传送指令指令指令代码操作MOV direct,A11110101 directdirect(A)MOV direct,Rn10001rrr directdirect(Rn)MOV direct,Ri1000111 directdirect(Ri)MOV direct,#data01110101 direct datadirectda

7、taMOV direct1,direct210000101 direct2,direct1direct1(direct2)(3)以Rn为目标地址的传送指令指令指令代码操作MOV Rn,A11111rrrRn(A)MOV Rn,#data01111rrrRndataMOV Rn,direct10101rrrRn(direct)(4)以间接地址为目标地址的传送指令指令指令代码操作MOV Ri,A1111011i(Ri)(A)MOV Ri,#data0111011i(Ri)dataMOV Ri,direct1010011i(Ri)(direct)(5)十六位数传送(以DPTR为目标地址)传送指令指令

8、指令代码操作MOV DPTR,#data1610010000dataH8dataL8(DPTR)data162、累加器A与片外RAM之间传送指令MOVX(4条)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位中查

9、表,第二条指令可在64KB范围中查表。例例:试编写一程序,实现将片外RAM的0FAH单元中的内容传送到外RAM的04FFH单元中。分析:根据图2-6可以看到,外部存储单元之间是不能相互传递的,所以只有将外部数据通过传向片内,再将片内的数据传向片外来进行操作。具体在操作过程中要考虑如下事宜:定义起始地址、目标地址。源操作数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(

10、2)位修正指令(6条)CLR C CLR bit CPL C CPL bit SETB C SETB bit四、任务实施(一)用Proteus构建单片机最小系统硬件图2-7 单片机控制的二极管点亮电路(二)编写程序并进行调试在任务分析中得知,给P1.0赋个低电平,发光二极管就被点亮。程序如下:ORG0000H;从 程 序 空 间 地 址0000H开始L:MOV P1,#0FEH;点亮二极管SJMP L;在此处踏步等待END;结束(三)进行二极管点亮电路仿真调试图2-8 单片机控制的二极管点亮仿真电路五、总结与提高完成了二极管点亮的任务,大家考虑一下:1、能否用两个按钮来控制二极管的点亮与熄灭,

11、一个按钮定义为点亮功能,另一个按钮定义为熄灭。2、能否采用一个按钮来实现二极管的点亮与熄灭,按一下按钮,二极管被点亮,再按一下后,熄灭,再按下点亮,再按下熄灭。能力目标能力目标1.能编写和用Keil C调试简单的延时子程序2.能用Keil C进行单步,连续调试3.能进行单灯闪烁电路综合调试学习内容学习内容1.学习转移指令的运用2.掌握子程序的编写方法 项目二、单片机硬件及指令系统应用项目二、单片机硬件及指令系统应用 任务任务2.单灯闪烁单灯闪烁 一、任务要求要求二极管亮灭闪烁的时间为200ms,控制端口仍然采用P1.0口。二、任务分析在任务一中我们已成功将二极管点亮,本任务与任务一所不同的是要

12、由P1.0产生的时序信号如图2-9所示。200 ms图2-9 单灯闪烁控制时序三、学习知识(一)主程序和子程序的概念所谓主程序就是根据设计者的要求完成主要功 能的程序。子程序的概念:主程序中反复用到的一些重复的功能模块程序,如果都放在主程序中,会让主程序显得冗长,所以常将这种需要频繁使用的基本操作设计成相对独立的程序段。1、子程序的调用与返回子程序的调用:短调用指令ACALL addr11,长调用指令LCALL addr16,不同的是前者跳转的范围为2K后者跳转的范围为64K。返回指令:RET从子程序返回到主程序,RETI从中断服务程序返回到主程序 2、子程序设计(1)每个子程序都有一个唯一的

13、入口(唯一的名称),并以标号作为标识,以便主程序的正确调用,子程序通常以RET指令作为结束。(2)为了使子程序具有通用性,子程序的操作对象通常采用寄存器或寄存器间址等寻址方式。(3)为了使子程序不论存放在存储器的任何区域都能被正确执行,在子程序中如有转移指令,应使用相对转移指令而不能用绝对转移指令。(4)进入子程序时,应对那些主程序中使用并在子程序中继续需要使用的寄存器的内容进行保护(即保护主程序现场),在返回主程序时应恢复它们的原来的状态。子程序设计的基本步骤如下:(1)确定子程序的名称(入口标号)。(2)确定子程序的入口参数及出口参数。(3)确定所使用的寄存器和存储单元机器使用目的。(4)

14、确定子程序的算法,编写源程序。例例、设内部RAM20H、21H单元中有两个数a和b,编程求c=a2+b2,并把c送入内存单元22H中。该程序由两部分组成:主程序和子程序。主程序通过累加器A传送入口参数a和b,子程序用于求平方并将结果通过累加器A传送给主程序,主程序再求两平方和。主程序 ORG0100HMOVA,20H;aAACALLSQR;求a2MOVR0,A;a2 R0MOVA,21H;b AACALLSQR;求b2ADDA,R0;a2+b2AMOV22H,A;存入22H单元END以下为子程序ORG1000HSQR:ADDA,#01H;MOVCA,A+PCRETTAB:DB 00H,01H,

15、04H,09H,16H,DB 25H,36H,49H,64H,81H(二)循环转移指令DJNZ Rn,rel;(Rn)(Rn)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。解:ORG 0000hMOVR

16、0,#40H;置首址MOVR2,#10H;置长度LOOP:MOVR0,AINCR0;修改指针DJNZR2,LOOP;判断长度END(三)延时子程序的设计1、机器周期当振荡脉冲频率为12MHZ,一个机器周期为1us。当振荡脉冲频率为6MHZ,一个机器周期为2us。2、指令周期执行一条指令所需的时间叫指令周期,一般指令需1、2、4个机器周期。3、单循环程序运用 图2-10 延时子程序(5.135ms)考虑在此单循环程序外再嵌套一层循环,见下方第27部分,以内部(36行)产生延时时间为5ms为重复操作对象,重复操作的次数由外循环来进行参数设置,由外部循环中R7设定为20,这样重复20次1ms的操作后

17、延时约为100ms,考虑到晶振会带来点误差。图2-11 延时子程序(102ms)四、任务实施(一)硬件电路同任务一。(二)100ms延时子程序的调试。这已在延时子程序的设计中完成。(三)编写完整的主程序和子程序。ORG 0000HL1:MOVP1,#0FEH;点亮二极管LCALLDELAY2;延时200msMOVP1,#0FFH;关闭二极管LCALLDELAY2;延时200msLJMP L1;返回到首址ORG0100HDELAY2:MOV R7,#20;延时200ms子程序D1:MOVR6,#00HD2:NOPNOPDJNZR6,D2DJNZR7,D1RET;返回END(四)进行单灯闪烁综合调

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

19、.能通过程序的编写使灯从上依次向下轮流点亮,或从下往上依次轮流点亮。2.能用Keil C进行单步,连续调试3.能进行跑马灯电路综合调试学习内容学习内容1.学习向左或向右转指令的运用2.状态计数器的设计3.程序流程图的画法一、任务要求P1口的8位分别接着二极管,通过编程依次实现P1口8个二极管由低位到高位依次点亮和熄灭,依次点亮的时间为100ms。二、任务分析 通过任务要求分析,需要在P1口产生如下时序:见图2-13所示。100ms700msP1.02 3 4 5 6P1.1P1.2P1.3P1.4P1.5P1.6P1.7图2-13 跑马灯要求P1口产生的时序通过任务分析,要解决如下问题:(1)

20、100ms的延时子程序,前面任务二中已会运用,更可以直接拿来运用。(2)状态转移的实现。(3)一个时序周期中8个状态的记忆问题。三、学习知识(一)状态转移的实现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=13、RR A ;ro

21、und right ARR A指令的异同点类似于RL A,仅是A中数据位移方向向右。例:例:(A)=81H RR A执行结果(A)=0C0H 4、RRC A指令的异同点类似于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位,形

22、成新的PC指针而转移到新的地址。跳转的范围为2K。例:例:ZHUAN:AJMP addr11设addr11=001,0000,0011B标号ZHUAN的值为16位地址1230HPC+2 1230H+02H=1232H=0001,0010,0011,0010B替换低11位新的PC值为0001,0001,0000,0011B=1103H2、长转移指令(长跳转指令)LJMP addr16执行完该条指令时,无条件转移到指令所提供的16位地址去,所以转移地址可在64K程序空间内跳转。例:例:LJMP 9000H执行完该条指令后,将使程序转移到9000H单元继续执行。3、相对转移指令相对寻址SJMP re

23、l rel 取值范围-128+127(向前向后)采用的是跳转两量的补码(向下为正,向上为负求补)最终跳转的目的地为PC+2+rel4、间接转移指令JMP A+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)条件0data0=0(A)=0PORT0(PC指针)出口0条件1data1=1(A)=1

24、PORT1(PC指针)出口1条件2data2=2(A)=2PORT2(PC指针)出口2(PC指针)条件Ndatan=n(A)=nPORTN(PC指针)出口N例:例:设A中为键值,试编写按键值处理相应事件的程序段。解:MOV DPTR,#KYEG MOV B,#03H MUL AB JMP A+DPTR KYEG:LJMP KEYG0 LJMP KEYG1 比较 LJMP、AJMP、SJMP、JMP转移的范围LJMP 064KAJMP 2KSJMP -128+127JMP 0256(四)流程图的绘制在编写流程图时,会采用如图2-15所示的框图说明程序的执行情况。图标程序的执行情况表示程序的开始和

25、结束表示顺序执行表示分支(根据循环变量的测试进行分支)四、任务实施图2-16 跑马灯的硬件电路设计2、程序流程图如图2-17所示。(R1)-1=0?0FEH(P1)调用DELAY2子程序A(P1)(P1)ARL A开始NY3、程序的编制如下:ORG0000HL3:MOVR1,#08H;状态数设置MOVP1,#0FEH;跑马灯初始状态L2:MOVA,P1LCALLDELAY2;延时RLAMOVP1,ADJNZR1,L2;判断状态是否结束LJMPL3;跑马灯周而复始工作ORG0100HDELAY2:MOV R7,#20;跑马灯延时子程序设计D1:MOVR6,#00HD2:NOPNOPDJNZR6,

26、D2DJNZR7,D1RETEND4、跑马灯电路用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一个周期,然后周而复始。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁