版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机技术与实践教案暂定稿新第一页,共一百零五页,编辑于2023年,星期日资料路径1:/资料路径2:宜春学院站点转师范教育学院站点第二页,共一百零五页,编辑于2023年,星期日第三页,共一百零五页,编辑于2023年,星期日51系列单片机指令集含有111条指令每条指令在执行时要花去一定的时间,以机器周期为单位。按指令执行时间分类:单周期(64条);双周期(45条);4周期(2条)按指令的功能分类,可分为5大类:数据传送类(28条);算术运算类(24条)逻辑运算及移位类(25条);控制转移类(17条)位操作类(17条)每条指令在程序存储器ROM中占据一定的空间,以字节为单位。按指令所占字节数分类:单字节(49条);双字节(45条);3字节(17条)第四页,共一百零五页,编辑于2023年,星期日MCS-51单片机指令系统有如下特点:(1)指令执行时间快。(2)指令短,约有一半的指令为单字节指令。(3)用一条指令即可实现2个一字节的相乘或相除。(4)具有丰富的位操作指令。(5)可直接用传送指令实现端口的输入输出操作。第五页,共一百零五页,编辑于2023年,星期日1、时序分析计算机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。这个脉冲是由单片机控制器中的时序电路发出的。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序,为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地控时序进行工作。第六页,共一百零五页,编辑于2023年,星期日计算机是在统一的时钟脉冲控制下工作的,那么,它的时钟脉冲是怎么来的呢?
要给我们的计算机CPU提供时序,就需要相关的硬件电路,即振荡器和时钟电路。51系列单片机内部有一个高增益反相放大器,这个反相放大器的作用就是用于构成振荡器用的,但要形成时钟,外部还需要加一些附加电路。第七页,共一百零五页,编辑于2023年,星期日XTAL1XTAL2通常外接一个晶振两个电容1MCS-51系列
方式一:利用内部的振荡器,在引脚Xtal1和Xtal2两端接晶振,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,外接晶振时,晶振两端的电容一般选择为30pf左右;这两个电容对频率有微调的作用,晶振的频率范围可在1.2MHz-12MHz之间选择。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。第八页,共一百零五页,编辑于2023年,星期日1MCS-51系列XTAL1XTAL2外部时钟信号方式二:是利用外部振荡脉冲接入XTAL1或XTAL2(18)。HMOS和CHMOS单片机外时钟信号接入方式不同,HMOS型单片机(例如8051)外时钟信号由XTAL2端脚注入后直接送至内部时钟电路,输入端XTAL1应接地。由于XTAL2端的逻辑电平不是TTL的,故建议外接一个上接电阻。8051外时钟源接法图第九页,共一百零五页,编辑于2023年,星期日1MCS-51系列XTAL1XTAL2外部时钟信号方式二:对于CHMOS型的单片机(例如80C51),因内部时钟发生器的信号取自反相器的输入端,故采用外部时钟源时,接线方式为外时钟信号接到XTAL1而XTAL2悬空。如下图本脚悬空80C51外时钟源接法图第十页,共一百零五页,编辑于2023年,星期日目前各大厂商推出的各类单片机产品都采用了CHMOS工艺。80C51系列单片机采用两种半导体工艺生产。一种是HMOS工艺,即高密度短沟道MOS工艺。另外一种是CHMOS工艺,即互补金属氧化物的HMOS工艺。CHMOS是CMOS和HMOS的结合,除保持了HMOS的高速度和高密度的特点之外,还具有CMOS低功耗的特点。例如8051的功耗为630mw,而80C51的功耗只有120mw。在便携式、手提式或野外作业仪器设备上低功耗是非常有意义的。因此,在这些产品中必须使用CHMOS的单片机芯片。第十一页,共一百零五页,编辑于2023年,星期日由于指令的字节数不同,取这些指令所需要的时间也就不同,即使是字节数相同的指令,由于执行操作有较大的差别,不同的指令执行时间也不一定相同,即所需的拍节数不同。为了便于对CPU时序进行分析,一般按指令的执行过程规定了几种周期,即时钟(振荡)周期、机器周期和指令周期,也称为时序定时单位。第十二页,共一百零五页,编辑于2023年,星期日回顾内容振荡(时钟)周期
=晶振频率fosc的倒数;1个机器周期
=6个状态周期;
=
12个振荡周期(时钟周期);1个指令周期
=1、2、4个机器周期P1P2S1振荡(时钟)周期机器周期机器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2状态周期第十三页,共一百零五页,编辑于2023年,星期日
通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。
MCS-51指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。执行这些指令需要的时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式:·单字节指令单机器周期;单字节指令双机器周期;
·双字节指令单机器周期;双字节指令双机器周期;
·三字节指令双机器周期;
·单字节指令四机器周期(如单字节的乘除法指令)第十四页,共一百零五页,编辑于2023年,星期日图中的ALE脉冲是为了锁存地址的选通信号,显然,每出现一次该信号单片机即进行一次读指令操作。从时序图中可看出,该信号是时钟频率6分频后得到,在一个机器周期中,ALE信号两次有效。1个机器周期ALE第十五页,共一百零五页,编辑于2023年,星期日单字节单周期指令例:INCAALE1个机器周期单字节单周期指令:
单字节单周期指令只进行一次读指令操作,当第二个ALE信号有效时,PC并不加1,那么读出的还是原指令,属于一次无效的读操作。第十六页,共一百零五页,编辑于2023年,星期日双字节单周期指令例:ADDA,DATA双字节单周期指令:
这类指令两次的ALE信号都是有效的,只是第一个ALE信号有效时读的是操作码,第二个ALE信号有效时读的是操作数。ALE第十七页,共一百零五页,编辑于2023年,星期日单字节双周期指令:
两个机器周期需进行四读指令操作,但只有一次读操作是有效的,后三次的读操作均为无效操作。
ALE单字节双周期指令例:INCDPTR第十八页,共一百零五页,编辑于2023年,星期日若MCS-51单片机外接晶振为fosc=12MHz时,则单片机的四个周期的具体值为:Tosc=振荡周期=1/12MHz=1/12μs=0.0833μsTcy=机器周期=振荡周期*12=1μs指令周期=1~4μs在MCS-51指令系统中,单字节、双字节指令占绝大多数,三字节指令很少(13条)。单字节或双字节指令可能是单周期或双周期的,三字节指令是双周期的,乘除指令是四周期的,因此,振荡频率为12MHz时,指令执行时间分别为1μs、2μs、4μs。第十九页,共一百零五页,编辑于2023年,星期日在MCS-51指令中,一般指令主要由操作码、操作数组成。指令应具有以下功能:(1)操作码指明执行什么性质和类型的操作。例如,数的传送、加法、减法等。(2)操作数指明操作的数本身或者是操作数所在的地址。(3)指定操作结果存放的地址。2、指令格式第二十页,共一百零五页,编辑于2023年,星期日单字节指令操作码和操作数在同一个字节中。双字节指令前一个字节为操作码,后一个字节为操作数。三字节指令前一个字节为操作码,后两个字节为操作数。第二十一页,共一百零五页,编辑于2023年,星期日指令描述符号介绍
Rn——当前选中的寄存器区中的8个工作寄存器R0~R7(n=0~7)。
Ri——当前选中的寄存器区中的2个工作寄存器R0、R1(i=0,1)。
direct——8位的内部数据存储器单元中的地址。
#——表明其后跟的是立即数(就是数字量本身),有8位、16位常数。addr16——16位目的地址。
addr11——11位目的地址。第二十二页,共一百零五页,编辑于2023年,星期日rel——8位带符号的偏移字节,简称偏移量。DPTR——
数据指针,可用作16位地址寄存器。bit——内部RAM或专用寄存器中的直接寻址位。A——
累加器。B——
专用寄存器,用于乘法和除法指令中。C——
进位标志或进位位,或布尔处理机中的累加器。@——寄存器间接寻址或基址寄存器的前缀,如@Ri,@DPTR。第二十三页,共一百零五页,编辑于2023年,星期日
/——
位操作数的前缀,表示对该位数操作取反,如/bit。
(×)——
片内RAM的直接地址或寄存器。((×))——
由×寻址的单元中的内容。
——
箭头左边的内容被箭头右边的内容所代替。
——
箭头右边的内容被箭头左边的内所代替。第二十四页,共一百零五页,编辑于2023年,星期日3.1、延时分析观察仿真教学练习1\单灯亮灭概念1下的仿真实验例题LJ20080304。结果有两个问题:第一,计算机执行指令的时间很快,执行完SETBP1.0后,灯是灭了,但在极短时间(微秒级)后,计算机又执行了CLRP1.0指令,灯又亮了,所以根本分辨不出灯曾灭过。第二,在执行完CLRP1.0后,跳转再去执行SETBP1.0指令,结果闪烁不定(又称余辉或鬼影)。(实物与仿真效果差别)第二十五页,共一百零五页,编辑于2023年,星期日3.2、解决方案为了解决这两个问题,我们可以做如下设想,第一,在执行完SETBP1.0后,延时一段时间(几秒或零点几秒)再执行第二条指令,就可以分辨出灯曾灭过了。第二在执行完第二条指令后,让计算机再去执行第一条指令,不断地在原地兜圈,我们称之为“循环”,这样就可以完成任务了。
第二十六页,共一百零五页,编辑于2023年,星期日3.3、程序分析;主程序:LOOP:SETBP1.0
;P1.0引脚灯灭
LCALLDELAY
;延时
CLRP1.0
;P1.0引脚灯亮
LCALLDELAY
;延时
AJMPLOOP
;跳转;以下是延时子程序DELAY:MOVR7,#250
;工作寄存器R7赋值D1:MOVR6,#250
;工作寄存器R6赋值D2:DJNZR6,D2;R6如果不等于0,就转移至D2
DJNZR7,D1;R6如果不等于0,就转移至D2
RET
;子程序返回指令
END
;程序结束指令LED亮灭有定之观察实例:仿真教学练习1\单灯亮灭概念1\LJ20080304C.ASM第二十七页,共一百零五页,编辑于2023年,星期日DELAY:MOVR7,#250;将250传送至R7
D1:MOVR6,#250;将250传送至R7
D2:DJNZR6,D2;原地转圈250次
DJNZR7,D1;
RET
指令分析:MOV:意思是传递数据。从指令MOVRi,#250中来分析,Ri是一个接受者,250是被传递的数。(i=6、7)DJNZ:指令的执行过程,它将其后面的第一个参数中的值减1,然后看一下,这个值是否等于0,如果等于0,就往下执行,如果不等于0,就转移至第二个参数所指位置。最终DJNZR6,D2指令将被执行250*250=62500次第二十八页,共一百零五页,编辑于2023年,星期日我们来计算刚才的延时,首先必须要知道晶振的频率,我们设所用晶振为12M,则一个机器周期就是1微秒。而DJNZ指令是双周期指令,所以执行一次要2个微秒。一共执行62500次,正好125000微秒,也就是125毫秒。要点分析:1、一个单元中的数是否可以超过255;2、如何分配两个数。3.4、延时估算第二十九页,共一百零五页,编辑于2023年,星期日在单片机的控制应用中,常有延时的需要,CPU过一段时间再去作某件事情,称之为延时。延时有两种方法,即软件延时和硬件延时.硬件延时是通过定时/计数器来实现的,这种方法不占用CPU的工作时间。软件延时一般采用循环程序,通过CPU执行一个具有固定延迟时间的循环体来实现的。3.5、延时精确计算过程第三十页,共一百零五页,编辑于2023年,星期日延时程序的延时时间主要与两个因素有关,一是所用晶振,二是延时程序中的循环次数,一旦晶振确定之后,则主要是如何设计与计算需给定的延时循环次数。设单片机的晶振频率为6MHz,则一机器周期为2us;设单片机的晶振频率为12MHz,则一机器周期为1us;第三十一页,共一百零五页,编辑于2023年,星期日汇编语言常用延时程序所用到的指令指令占用的机器周期数MOVRn,#Data
1DJNZRn,Rel
2RET2NOP1ACALLAddr112LCALLAddr162ADDA,Ri1INCDPTR2用得最多的延时指令第三十二页,共一百零五页,编辑于2023年,星期日基本延时程序模式及延时时间的计算分以下几种情况:1、单循环延时程序DEL2:
MOVR0,#X
;1周期DEL1:
DJNZR0,DEL1;2周期
RET;2周期延时时间=2*X*T+1*T+2*T=(2X+3)T整个程序的延时时间范围以晶振频率6MHz为例:10us<=t<=1030us;以晶振频率12MHz为例:5us<=t<=515us;第三十三页,共一百零五页,编辑于2023年,星期日延时时间的范围的计算设X是装入寄存器R0的时间常数,R0是8位寄存器(以下的R1、R2、Ri均为8位),因为0<=R0<=255,R0=0,延时时间最长,R0=1,延时时间最短。当Ri=0时,由汇编语言的特征知其将从零开始判断,共256次,所以应在公式中代入256,因此这个程序的最长定时时间为1030us。第三十四页,共一百零五页,编辑于2023年,星期日2、双重循环延时程序:DEL3:
MOVR1,#Y;1周期DEL2:
MOVR0,#X;1周期DEL1:
DJNZR0,DEL1;2周期
DJNZR1,DEL2;2周期
RET;2周期延时时间=(2*X+1+2)*Y*T+1*T+2*T=(2XY+3Y+3)T整个程序的延时范围为:16us<=t<=263668us;第三十五页,共一百零五页,编辑于2023年,星期日3、三重循环延时程序DEL4:
MOVR2,#Z;1周期DEL3:
MOVR1,#Y;1周期DEL2:
MOVR0,#X;1周期DEL1:
DJNZR0,DEL1;2周期
DJNZR1,DEL2;2周期
DJNZR2,DEL3;2周期
RET;2周期延时时间=[(2*X+1+2)*Y+1+2]*Z*T+1*T+2*T=(2XYZ+3YZ+3Z+3)T整个程序的延时时间范围为:22us<=t<=67503622us=67503.622ms=67.503622s第三十六页,共一百零五页,编辑于2023年,星期日练习1:设计一个延时100微秒的程序设单片机的晶振频率为12MHz,则一机器周期为1us,打算延时100us,只要用下面的代码,就可以满足一般的需要:
MOVR0,#049;1周期Loop:DJNZR0,loop;2周期
RET;2周期一个周期=1us。上述程序延时时间=2*49*1+1*1+2*1=101us若将立即数的值改为048,则延时时间为=99us第三十七页,共一百零五页,编辑于2023年,星期日简单:MOVR0,#048;1周期
NOP;1周期Loop:DJNZR0,Loop;2周期
RET;2周期说明:延时精确调整可用NOP空操作指令进行调控,该指令机器周期为1.如何精确到100us呢????????搞定!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!第三十八页,共一百零五页,编辑于2023年,星期日练习1:设计一个延时100毫秒的程序练习2:设计一个延时1秒的程序第三十九页,共一百零五页,编辑于2023年,星期日ORG1000HDELAY:MOVR6,#200;
1TmNEXT:
MOVR7,#248;1TmDJNZR7,$;2Tm
NOP
;1TmDJNZR6,NEXT;2TmRET;2Tm1、软件循环延时100mS(晶振12MHz)☆1Tm=1uS、100mS=100000uS☆MOVRn,#data和NOP是单机器周期指令☆DJNZRn,rel是双机器周期指令1+248*2=497us(497+2+1)*200=100000us=100ms1us+100000us+2us=100003us=100.003ms第四十页,共一百零五页,编辑于2023年,星期日
ORG1000HDL1S:MOVR7,#10DL1:MOVR6,#200DL2:
MOVR5,#250DL3:DJNZR5,DL3DJNZR6,DL2
DJNZR7,DL1RET2、软件循环延时1S(晶振12MHz)☆1Tm=1uS
1S=1000000uS☆MOVRn,#data是单机器周期指令☆DJNZRn,rel是双机器周期指令1+250*2=501us1us+[501us
+2us]*200=1+100600us1us+(100601+2)*10=1006031us1006031us+2us=1006033us=1006.033ms=1.006033s第四十一页,共一百零五页,编辑于2023年,星期日立即寻址直接寻址寄存器寻址寄存器间接寻址变址寻址(基址寄存器+变址寄存器间接寻址)相对寻址位寻址寻址方式:指令按地址获得操作数的方式七种寻址方式,一条指令可能含多种寻址方式。4、单片机指令的寻址方式第四十二页,共一百零五页,编辑于2023年,星期日1、立即寻址指令中直接给出操作数的寻址方式。立即操作数用前面加有#号的8位或16位数来表示。例如:MOV
A,#60H
;A←#60HMOVDPTR,#3400H;DPTR←#3400HMOV
30H,#40H;30H单元←#40H上述三条指令执行完后,累加器A中数据为立即数据60H,DPTR寄存器中数据为3400H,30H单元中数据为立即数40H。注意:符号“#”表明其后跟的是立即数,
立即数——就是数字量本身。第四十三页,共一百零五页,编辑于2023年,星期日2、直接寻址 指令中直接给出操作数地址的寻址方式,能进行直接寻址的存储空间有SFR寄存器和内部数据RAM。例如:MOVR1,1FH;(R1)←(1FH)
MOV30H,4AH;(30H)←(4AH)在本单片机中规定:访问特殊功能寄存器SFR只能采用直接寻址方式。例如:MOVA,SP;(A)←(SP)MOVA,81H;(A)←(SP)MOVP1,#5AH;(P1)←(#5AH)MOV90H,#5AH;(P1)←(#5AH)MOVB,30H;(B)←(30H)相同相同第四十四页,共一百零五页,编辑于2023年,星期日3、寄存器寻址 以通用寄存器的内容为操作数的寻址方式。通用寄存器指A、B、DPTR以及R0~R7
。从寄存器中读取操作数或存放操作数进寄存器例如:CLR A ;A←0INC DPTR ;(DPTR)←(DPTR+1)ADD R5,#20H ;(R5)←(R5+#20H)MOVA,B;(A)←(B)
MOV30H,R0;(30H)←(R0)
MOVA,R1;(A)←(R1)第四十五页,共一百零五页,编辑于2023年,星期日4、寄存器间接寻址寄存器中的内容是一个地址,由该地址单元寻址到所需的操作数。间接寻址的存储器空间包括内部数据RAM和外部数据RAM。能用于寄存器间接寻址的寄存器有R0,R1,DPTR,SP。其中R0、R1必须是工作寄存器组中的寄存器。SP仅用于堆栈操作。注意:1)“间接”表示某寄存器中的“内容”只是一个“单元地址”,这个地址单元中存放的数据才是要找的“操作数”。2)符号“@”表示“在…”,其含义与读音皆同“at”。第四十六页,共一百零五页,编辑于2023年,星期日例如:MOV@R0,A;内部RAM(R0)←A
其指令操作过程示意图如图3-1所示。
片内RAMR0A30H34H图3-1MOV@R0,A间接寻址示意图R0指定存贮地址指定地址编号数据传送过程30H34H:::::第四十七页,共一百零五页,编辑于2023年,星期日又如:MOVXA,@R1;A←外部RAM(P2R1)
其指令操作过程示意图如图3-2所示。片外RAMP2A3410H45HR1图3-2MOVXA,@R1间接寻址示意图
生成地址指定地址编号数据传送过程34H10H45H::::::第四十八页,共一百零五页,编辑于2023年,星期日再如:MOVX@DPTR,A;外部RAM(DPTR)←A
其指令操作过程示意图如图3-3所示。片外RAMDPTRA2000H30H图3-3MOVX@DPTR,A间接寻址示意图::::::2000H30H第四十九页,共一百零五页,编辑于2023年,星期日5、变址寻址 变址寻址只能对程序存储器中数据进行操作。由于程序存储器是只读的,因此变址寻址只有读操作而无写操作,在指令符号上采用MOVC的形式(如图3-4所示)。例如:MOVCA,@A+DPTR;A←(A+DPTR)[设:A中已存有#10H,DPTR中已存有#2000H]操作:将10H+2000H=2010H单元中的数放进累加器A又如,MOVCA,@A+PC;A←(A+PC)这条指令与上条指令不同的是,基址寄存器是PC。第五十页,共一百零五页,编辑于2023年,星期日图3-4变址寻址示意图程序存储器DPTRA2010H64H2000H2000H10H生成数据地址编号2010H10H64HMOVCA,@A+DPTR;A←(A+DPTR):::::第五十一页,共一百零五页,编辑于2023年,星期日6、相对寻址
以当前程序计数器PC的内容为基础,加上指令给出的一字节补码数(偏移量)形成新的PC值的寻址方式。相对寻址用于修改PC值,主要用于实现程序的分支转移。
SJMPrel操作:跳转到的目的地址=当前地址计数器+rel注意:1)“当前地址计数器”指程序中下一条指令所在的首地址,是一个16位数;2)符号rel表示“偏移量”,是一个带符号的单字节数,范围是:-128—+127(80H—7FH),第五十二页,共一百零五页,编辑于2023年,星期日程序存储器例如,SJMP08H;PC←PC+2+08H
图3-5相对寻址示意图2000H2000H200AHSJMP08H08HPCor$orIP2000H+2指令指针寄存器准备修改计算跳转地址**H200AH:::::第五十三页,共一百零五页,编辑于2023年,星期日7、位寻址位寻址只能对有位地址的单元作位寻址操作。位寻址其实是一种直接寻址方式,不过其地址是位地址。
指令中直接给出了操作数所在的位地址。例如:SETB10H;将10H位置1若22H单元中存放着数据40H,22H单元的D0位的位地址为10H,执行上述指令后(22H)=41H。又如:MOV32H,C;32H←进位位CORL
C,32H;C←C∨32H第五十四页,共一百零五页,编辑于2023年,星期日基于proteus单片机仿真过程(简单)从零开始设计上述电路原理图仿真过程第五十五页,共一百零五页,编辑于2023年,星期日1、单片机简单系统常用元器件列表1、单片机,名称:
AT89C51\AT89C52;
2、晶振,名称:CRYSTAL;3、晶振两端接瓷片电容20-100pf,名称:CAP;4、
电源输入端跨接10~100uf的电解电容器(上电复位部分),名称:CAP-ELEC;百例(周润景)P72电源输入端跨接1uf~100uf的有极性电容器(上电复位部分),名称:CAP-POL;百例(周润景)P585、上拉电阻,名称:PULLUP;
6、电阻,名称:Res;7、按钮,名称:BUTTON;
8、开关,名称:SWITCH;9、7段数码管,名称:7SEG;带译码器的7段管,名称:7SEG-BCD;10、发光二极管,名称:LED;第五十六页,共一百零五页,编辑于2023年,星期日2、鼠标操作特点放置对象:单击鼠标左键,可放置元件、连线;选中对象:单击鼠标右键,选择元器件、连线、的其它对象,此时选中的对象以红色显示;删除对象:双击鼠标右键,删除元器件、连线等;编辑对象:先单击鼠标右键然后鼠标左键,编辑元件属性;块选择:操作略移动对象:操作略缩放对象:操作略第五十七页,共一百零五页,编辑于2023年,星期日3、新建设计文件A:启动proteus进入isis即智能原理图设计系统后,自动出现一个空白设计,模板默认为“Default”,其后缀自动为.DSN。B:单出菜单中的“File->NewDesign”,出现选择模板窗口,可任选。第五十八页,共一百零五页,编辑于2023年,星期日4、设定绘图纸大小当前用户图纸大小默认A4纸,若要改变图纸大小,单出菜单中的“System->SetSheetSize”,弹出下图,可供图纸选择或自定义。第五十九页,共一百零五页,编辑于2023年,星期日5、选取元器件并添加到对象选择器中单击下图中的“P”按钮,弹出元器件选择对话框(右图)。选取方法:“关键字查找法”、“分类查找法”第六十页,共一百零五页,编辑于2023年,星期日6、网格单位:默认是100th,在菜单中“View”中可调;7、放置、移动、旋转元器件;8、放置电源、地(终端):单击模式选择工具栏中的的终端按钮9、电路图布线;10、设置、修改元器件属性;第六十一页,共一百零五页,编辑于2023年,星期日11、电气规则检测:设计电路完成之后,单击电气规则检测按钮,会出现检查结果窗口,前面是一些文本信息,接着是电气检查结果列表,若有错,会有相应说明,也可以通过菜单操作“Tools->ElectricalRuleCheck…”
12、源程序设计(编写编辑源程序、编译源程序、生成目标代码);
13、加载目标代码文件、设置时钟频率;
14、上电仿真。
第六十二页,共一百零五页,编辑于2023年,星期日ISIS智能原理图输入流程开始新建设计文档设置编辑环境放置元器件原理图连线建立网络表电气规则检查存盘、报表输出结束调整是否合格NY设置编辑环境:用户可自定义图形外观,包括线宽、填充类型、字符等。原理图连线:点击元件引脚或者先前连好的线,就能实现连线;也可使用自动连线工具连线;建立网络表:网络表是电路板与电路原理图之间的纽带。建立的网表用于PCB制板。报表输出:材料报表、ERC报表等。第六十三页,共一百零五页,编辑于2023年,星期日PROTEUS设计与仿真流程Proteus电路设计源程序编辑生成目标代码文件加载目标代码文件设置时钟频率Proteus仿真因在单片机的属性窗口中,可以设置时钟频率,并以其为准,所以在编辑区设计仿真电路时,可以略去振荡电路。复位电路也可以略去,引脚也可悬空。但若要进行电路电气规则检测,则不可略去。第六十四页,共一百零五页,编辑于2023年,星期日分类指令 1、数据传送类指令2、算术运算类指令3、逻辑运算与循环类指令4、程序转移类指令5、调用子程序及返回指令6、位操作指令7、空操作指令第六十五页,共一百零五页,编辑于2023年,星期日数据传送类指令数据传送类指令共28条,是将源操作数送到目的操作数。指令执行后,源操作数不变,目的操作数被源操作数取代。数据传送类指令用到的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8种。源操作数可采用寄存器、寄存器间接、直接、立即、变址5种寻址方式寻址,目的操作数可以采用寄存器、寄存器间接、直接寻址3种寻址方式。MCS-51单片机片内数据传送途径如图3-6所示。第六十六页,共一百零五页,编辑于2023年,星期日直接地址direct累加器A直接地址direct间接地址@Ri寄存器Rn立即数#data寄存器DPTR图3-6MCS-51单片机片内数据传送图第六十七页,共一百零五页,编辑于2023年,星期日1.以A为目的操作数MOVA,Rn ;A←RnMOVA,direct;A←(direct)MOVA,@Ri ;A←(Ri)MOVA,#data;A←#data例:MOVA,R1MOVA,10HMOVA,@R1 MOVA,#30H第六十八页,共一百零五页,编辑于2023年,星期日2.以Rn为目的操作数MOVRn,A;Rn←AMOVRn,direct;Rn←(direct)MOVRn,#data;Rn←#data例:MOVR1,A MOVR1,10HMOVR1,#10H第六十九页,共一百零五页,编辑于2023年,星期日3.以直接地址为目的操作数MOVdirect,A;(direct)←AMOVdirect,Rn;(direct)←(Rn)MOVdirect1,direct2;(direct1)←(direct2)MOVdirect,@Ri;(direct)←(Ri)MOVdirect,#data;(direct)←#data第七十页,共一百零五页,编辑于2023年,星期日4.以间接地址为目的操作数MOV@Ri,A ;(Ri)←AMOV@Ri,direct ;(Ri)←(direct)MOV@Ri,#data ;(Ri)←#data例如:设(30H)=6FH,R1=40H,执行MOV@R1,30H后,30H单元中数据取出6FH送入R1间接寻址的40H单元,(40H)=6FH。第七十一页,共一百零五页,编辑于2023年,星期日5.以DPTR为目的操作数MOVDPTR,#data16;DPTR←#data16例如执行MOVDPTR,#2000H后,(DPTR)=2000H。第七十二页,共一百零五页,编辑于2023年,星期日6.访问外部数据RAMMOVXA,@DPTR ;A←(DPTR)MOVX@DPTR,A ;(DPTR)←AMOVXA,@Ri
;A←(P2Ri)MOVX@Ri,A ;(P2Ri)←A例如:MOV@R0,A若执行前:ACC=12H,R0=22H,存贮器(22H)地址的内容为56H执行后:ACC=12H,R0=22H,存贮器(22H)地址的内容为12H第七十三页,共一百零五页,编辑于2023年,星期日7.读程序存储器MOVCA,@A+DPTR;A←(A+DPTR)MOVCA,@A+PC;A←(A+PC)例如:若执行前A=10H,DPTR=2000H,程序存储器单元(2010H)=64H指令:MOVCA,@A+DPTR执行前:A=10H,DPTR=2000H,程序存储器单元(2010H)=**H。(A)=**H第七十四页,共一百零五页,编辑于2023年,星期日图3-4变址寻址示意图程序存储器DPTRA2010H64H2000H2000H10H生成数据地址编号2010H10H64HMOVCA,@A+DPTR;A←(A+DPTR):::::第七十五页,共一百零五页,编辑于2023年,星期日8.数据交换字节交换XCHA,Rn ;A<=>RnXCHA,direct;A<=>(direct)XCHA,@Ri ;A<=>(Ri)半字节交换XCHDA,@Ri ;A0~3<=>(Ri)0~3SWAPA ;A0~3<=>A4~7第七十六页,共一百零五页,编辑于2023年,星期日9.堆栈操作所谓堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据的进栈出栈由指针SP统一管理。
堆栈的操作有如下两条专用指令:PUSHdirect;SP←(SP+1),(SP)←(direct)POPdirect;(direct)←(SP),SP←SP-1上述两条指令执行过程分析如下:第七十七页,共一百零五页,编辑于2023年,星期日片内RAM30H11H10HSP40H片内RAM50H40H11H10H50HSP30H片内RAM40H11H10H34HSP30H34H34H执行前执行前执行PUSH指令后执行POP指令后图3-7指令PUSH操作示意图图3-8指令POP操作示意图片内RAM50H40H11H10H××SP30H××××××××××堆栈指令的静态执行过程观察图第七十八页,共一百零五页,编辑于2023年,星期日××34H片内RAM40H11H10H34HSP30H图3-7指令PUSH执行过程示意图图3-8指令POP执行过程示意图片内RAM50H40H11H10H××SP30H××××50H堆栈指令的动态执行过程演示图第七十九页,共一百零五页,编辑于2023年,星期日【例3.1】将片内RAM30H单元与40H单元中的内容互换。方法1(直接地址传送法):
MOV 31H,30HMOV 30H,40HMOV 40H,31HSJMP $方法2(间接地址传送法):
MOV R0,#40HMOV R1,#30HMOV A,@R0MOV B,@R1MOV @R1,AMOV @R0,BSJMP $第八十页,共一百零五页,编辑于2023年,星期日方法3(字节交换传送法):
MOVA,30HXCHA,40HMOV30H,ASJMP$方法4(堆栈传送法):
PUSH30HPUSH40HPOP 30HPOP 40HSJMP $第八十一页,共一百零五页,编辑于2023年,星期日算术运算类指令 1.加法指令ADDA,Rn ;A←A+RnADDA,direct;A←A+(direct)ADDA,@Ri ;A←A+(Ri)ADDA,#data;A←A+#data第八十二页,共一百零五页,编辑于2023年,星期日2.带进位加指令ADDCA,Rn ;A←A+Rn+CADDCA,direct;A←A+(direct)+CADDCA,@Ri ;A←A+(Ri)+CADDCA,#data;A←A+#data+CC为来自PSW状态寄存器中的进位位C。指令:ADDC
A,R0执行前:A=20H,R0=21H,C=1执行后:A=42H,R0=21H,C=1
第八十三页,共一百零五页,编辑于2023年,星期日3.带借位减指令SUBBA,Rn ;A←A-Rn-CSUBBA,direct;A←A-(direct)-CSUBBA,@Ri ;A←A-(Ri)-CSUBBA,#data;A←A-#data–C指令:SUBBA,@R0执行前:A=39H,R0=20H,(20H)=32H,C=1执行后:A=06H,…………..第八十四页,共一百零五页,编辑于2023年,星期日4.乘法指令MULA,B ;BA←A×BA和B中各存放一个8位无符号数,指令执行后,16位乘积的高8位在B中,低8位存A中。指令:MULAB
执行前:A=30H,B=60H,执行后:A=00H,B=12H。第八十五页,共一百零五页,编辑于2023年,星期日
5.除法指令
DIVA,B;A÷B→商在A中,余数在B中
A和B中各存放一个8位无符号数,A放被除数,B放除数。指令执行后,A中存放商,B中存入余数。若B=00H,则指令执行后OV=1,A与B不变。指令:DIVAB执行前:A=30H,B=07H,执行后:A=06H,B=06H。第八十六页,共一百零五页,编辑于2023年,星期日6.加1指令INCA ;A←A+1INCRn ;Rn←Rn+1INCdirect;(direct)←(direct)+1INC@Ri ;(Ri)←(Ri)+1INCDPTR;DPTR←DPTR+1指令:INC30H
执行前:(30H)=22H,执行后:(30H)=23H。第八十七页,共一百零五页,编辑于2023年,星期日7.减1指令DECA ;A←A-1DECRn ;Rn←Rn-1DECdirect ;direct←(direct)-1DEC@Ri ;(Ri)←(Ri)-1指令:DEC@R0执行前:R0=30H,(30H)=22H,执行后:R0=30H,(30H)=21H。第八十八页,共一百零五页,编辑于2023年,星期日8.十进制调整指令DAA;把A中按二进制相加的结果调整成按BCD码相加的结果。指令序列:ADD A,BDA A执行前:A=65BCD,B=78BCD,C=0,执行后:A=43BCD,B=78BCD,C=1。第八十九页,共一百零五页,编辑于2023年,星期日【例题】把存放在R1R2和R3R4中的两个16位数相加,结果存于R5R6中。解:参考程序如下:
MOV A,R2;取第一个数的低8位
ADD A,R4;两数的低8位相加
MOV R6,A;保存和的低8位
MOV A,R1 ;取第一个数的高8位
ADDC A,R3 ;两数的高8位相加,并把低8位相加时的进位位加进来
MOVR5,A;把相加的高8位存入R5寄存器中
SJMP$第九十页,共一百零五页,编辑于2023年,星期日1.“与”操作指令2.“或”操作指令3.“异或”操作指令4.求反与清除指令5.移位指令逻辑运算类指令第九十一页,共一百零五页,编辑于2023年,星期日逻辑与(ANL),逻辑或(ORL),逻辑异或(XRL)累加器清零/取反操作(CLR,CPL——2条)CLRA——对累加器清零CPLA——对累加器按位取非指令形式ByteTmANL(ORL,XRL)direct,A21ANL(ORL,XRL)direct,#data32ANL(ORL,XRL)A,#data21ANL(ORL,XRL)A,direct21ANL(ORL,XRL)A,@Ri11ANL(ORL,XRL)A,Rn11第九十二页,共一百零五页,编辑于2023年,星期日逻辑运算指令的常见用法逻辑与ANL用于清0或者保留某些位:例:ANLA,#0FH;则(A)=0AH(设累加器A中内容为:9AH)逻辑或ORL用于置1或者保留某些位:例:ORLA,#0FH;则(A)=9FH逻辑异或XRL用于取反或者保留某些位:例:XRLA,#0FH;则(A)=95H(A)10011010#0FH0000111195H10010101第九十三页,共一百零五页,编辑于2023年,星期日移位类指令累加器移位操作:(RL,RLC,RR,RRC——4条)RLA左环移累加
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福州市人民医院机械通气技术操作资格分级认证
- 湖州市中医院产科主治医师晋升考核
- 嘉兴市人民医院并发症质量改进考核
- 宜春市中医院家庭医生签约服务质量考核
- 莆田市中医院皮肤病健康教育与咨询考核
- 青岛市人民医院碎石中心副主任医师评审
- 建行内部审计笔试题目及答案
- 工程建筑垃圾处置专项方案
- 水利工程安全度汛专项施工方案审批稿
- 桥梁墩柱、桥台专项施工方案
- ISO9001-2026质量管理体系标准要求讲解、运用、推行培训教材
- 菌菇生产知识培训课件
- 科目一理论知识课堂培训课件
- 2025年汽车内饰材料气味释放质量控制探讨可行性研究报告
- 2026届新高考语文背诵篇目60篇(注音版)
- 高塔监测施工方案
- 2024-2025学年广东省广州六中等校联考七年级(上)期中语文试卷
- 2025关于团校入团培训考试100题题库(含答案)
- 2025年全国中小学心理健康教育教师、班主任网络培训示范班在线考试试题(两套)及答案【附:教师培训心得】
- 2025至2030中国健康管理行业发展形势及投资规划预测报告
- 2023年无锡市江阴文化商业旅游产业集团有限公司招聘考试真题及答案附答案详解(完整版)
评论
0/150
提交评论