单片机教案2.docx
《单片机教案2.docx》由会员分享,可在线阅读,更多相关《单片机教案2.docx(20页珍藏版)》请在冰豆网上搜索。
![单片机教案2.docx](https://file1.bdocx.com/fileroot1/2023-4/17/54c6eadc-5012-467a-900c-0500fdcf14b7/54c6eadc-5012-467a-900c-0500fdcf14b71.gif)
单片机教案2
常州轻工职业技术学院
单片机原理及应用课程授课教案NO3
授课日期
授课班级
课题
指令系统
授课类型
讲授
授课时数
2
教学
目的
(1)了解指令系统的概述
(2)熟悉寻址方式(3)掌握MCS-51系列单片机指令
重点
难点
寻址方式、MCS-51系列单片机指令
寻址方式
教具
挂图
多媒体课件
教学
及
过程分配
主要教学内容
教学方法
的运用
20分钟
10分钟
10分钟
5分钟
5分钟
10分钟
5分钟
5分钟
10分钟
10分钟
第二章MCS-51单片机指令系统
一.指令的表达形式
1.二进制代码(机器码)指令
2.助记符(汇编语言)指令
助记符指令:
MOVA,#30H
二进制代码指令:
0111010000110000
助记符指令必须转换成二进制代码指令才能存入存储器。
二、汇编语言指令格式
操作码[第一操作数][,第二操作数][,第三操作数]
(1)操作码:
用来规定指令进行何种操作,是指令中不能空缺的部分。
(1)操作数:
表示参与指令操作的数据或数据所在的地址。
为可选项。
有两个操作数时,前一个为目的操作数,后一个为源操作数。
三.指令中有关操作数符号的说明
Rn——工作寄存器R0~R7(n=0、1、2…7)。
Ri——工作寄存器R0和R1(i=0或1)。
Direct——内部RAM的单元地址,地址范围为00~FFH。
#data——8位立即数,即常数。
#data16——16位立即数。
addr16——16位目的地址。
Addrll——11位目的地址。
四.MCS-51单片机指令系统
MCS—51的指令按功能分为五大类:
数据传送、算术运算、逻辑运算、控制转移和位操作指令。
(一)数据传送类指令
注意:
源操作数在传送前后保持不变。
1.内部数据传送指令
【例2-1】设(30H)=40H,(40H)=10H,(P1)=0CAH,试判断下列程序执行后的结果。
MOVR0,#30H;R0←#30H
MOVA,@R0;A←(30H),(A)=40H
MOVR1,A;R1←(A),(R1)=40H
MOVB,@R1;B←(40H),(B)=10H
MOV@R1,P1;(R1)←(P1),(40H)=0CAH
MOVP2,P1;P2←(P1),(P2)=0CAH
结果是:
(A)=40H,(B)=10H,(40H)=0CAH,(P2)=0CAH
2.外部数据传送指令
此类指令完成对片外RAM单元中数据的读/写操作。
注意:
用R0和R1间接寻址时,要占用P2寄存器放外部RAM的高8位地址,R0和R1放低8位地址。
使用时,要先将低8位地址送入Ri(R0或R1),高8位地址送入P2寄存器,然后再用上述指令。
【例2-2】将片外RAM1000H单元中的内容送到2000H单元。
方法一MOVDPTR,#1000H;DPTR←#1000H
MOVXA,@DPTR;A←((DPTR))
MOVDPTR,#2000H;DPTR←#2000H
MOVX@DPTR,A;(DPTR)←(A)
方法二MOVP2,#10H;P2←#10H
MOVR0,#00H;R0←#00H
MOVXA,@R0;A←((R0))
MOVP2,#20H;P2←#20H
MOVX@R0,A;(R0)←(A)
注意:
在两个片外RAM单元之间是不能直接进行数据的传送的,必须经过片内的累加器A来间接地传送。
3.访问程序存储器的传送指令(查表指令)
MOVCA,@A+PC;PC←(PC)+1,A←((A)+(PC))
MOVCA,@A+DPTR;A←((A)+(DPTR))
其功能是到程序存储器中查表格数据送入累加器A。
程序存储器中除了存放程序之外,还会放一些表格数据,又称查表指令。
指令中的操作数为表格数据。
前一条指令将A中的内容与PC的内容相加得到16位表格地址;后一条指令是将A中的内容与DPTR中的内容相加得到16位表格地址。
4.数据交换指令
数据交换是在内部RAM单元与累加器之间进行,有字节和半字节交换两种。
(1)字节交换指令
XCHA,Rn
XCHA,direct
XCHA,@Ri
(2)半字节交换指令
XCHDA,@Ri
5.堆栈操作指令
在片内RAM的00H~7FH地址区域中,可设置一个堆栈区,主要用于保护和恢复CPU的工作现场。
(1)进栈指令
PUSHdirect;SP←(SP)+1;
(SP)←(direct);
(2)出栈指令
POPdirect;direct←((SP));
SP←(SP)-1;
二、算术运算类指令
注意大部分指令的执行结果将影响程序状态字PSW的有关标志位。
如果把参加运算的两个操作数看作是无符号数(0~255),加法运算对CY标志位的影响如下:
(1)若结果的第7位向前有进位(C7’=1),CY=1
(2)若结果的第7位向前无进位(C7’=0),CY=0
【例2-3】设有两个无符号数放在A和R2中,设(A)=0C6H(198),(R2)=68H(104),
执行指令:
ADDA,R2
试分析运算结果及对标志位的影响。
解:
写成竖式
(A)11000110198
(R2)+01101000+104
(A)100101110302
结果是:
(A)=2EH,CY=1。
【例2-4】设有两个16位无符号数,被加数存放在内部RAM的30H(低位字节)和31H(高位字节)中,加数存放在40H(低位字节)和41H(高位字节)中。
试写出求两数之和,并把结果存放在30H和31H单元中的程序。
参考程序为:
MOVR0,#30H;地址指针R0赋值
MOVR1,#40H;地址指针R1赋值
MOVA,@R0;被加数的低8位送A
ADDA,@R1;被加数与加数的低8位相加,和送A,并影响CY标志
MOV@R0,A;和的低8位存30H单元
INCR0;修改地址指针R0
INCR1;修改地址指针R1
MOVA,@R0;被加数的高8位送A
ADDCA,@R1;被加数和加数的高8位与CY相加,和送A
MOV@R0,A;和的高8位存31H单元
(二)减法指令
1、带借位减法指令
该组指令的功能是从累加器A减去源操作数及标志位CY,其结果再送累加器A。
CY位在减法运算中是作借位标志。
SUBB指令对标志位的影响如下:
(1)若第7位向前有借位(C7’=1),则CY=1;
(2)若第7位向前无借位(C7’=0),则CY=0,
【例2-5】在A和R3中存有两个无符号数,设(A)=98H,(R3)=6AH,CY=1,执行指令:
SUBBA,R3
分析执行结果及对标志位的影响
解:
(A)1001100098H
(R3)–011010106AH
CY–1–1
(A)001011012DH
结果是:
(A)=2DH,CY=0
2、减1指令
指令操作机器码
DECA;A←(A)-100010100
DECRn;Rn←(Rn)-100011rrr
DECdirect;direct←(direct)-100010101direct
DEC@Ri;(Ri)←((Ri))-10001011i
(四)乘法指令
指令操作机器码
MULAB;BA←(A)Х(B)10100100
指令的功能是把累加器A和寄存器B中两个8位无符号整数相乘,并把乘积的高8位存于寄存器B中,低8位存于累加器A中。
乘法运算指令执行时会对标志位产生影响:
CY标志总是被清0,即CY=0;OV标志则反映乘积的位数,若OV=1,表示乘积为16位数;若OV=0,表示乘积为8位数。
(五)除法指令
指令操作机器码
DIVAB;A商,B余←(A)÷(B)10000100
指令的功能是把累加器A和寄存器B中的两个8位无符号整数相除,所得商的整数部分存于累加器A中,余数存于B中。
除法指令执行过程对标志位的影响:
CY位总是被清0,OV标志位的状态反映寄存器B中的除数情况,若除数为0,则OV=1,表示本次运算无意义,否则,OV=0。
三、逻辑运算类指令
在MCS—51指令系统中,逻辑运算类指令有25条,可实现与、或、异或等逻辑运算操作。
这类指令有可能会影响CY和P标志位的状态。
(一)累加器A的逻辑操作指令
1、累加器A清0
CLRA;A←00H
2、累加器A取反
CPLA;A←(
)
3、累加器A循环左移
RLA
利用左移指令,可实现对A中的无符号数乘2的目的。
4、累加器A带进位循环左移
RLCA
7、累加器A半字节交换
SWAPA
(二)逻辑指令
【例2-10】将工作寄存器R2中数据的高4位和R3中的低4位拼成一个数,并将该数存入30H。
MOVRO,#30H;R0作地址指针
MOVA,R2
ANLA,#OFOH;屏蔽低4位
MOVB,A;中间结果存B寄存器
MOVA,R3
ANLA,#OFH;屏蔽高4位
ORLA,B;组合数据
MOV@RO,A;结果存30H单元。
【例2-11】分析下列程序的执行结果。
MOVA,#77H;(A)=77H
XRLA,#0FFH;(A)=77H⊕FFH=88H
ANLA,#0FH;(A)=88H∧0FH=08H
MOVP1,#64H;(P1)=64H
ANLP1,#0F0H;(P1)=64H∧F0H=60H
ORLA,P1;(A)=08H∨60H=68H
指令系统简介
讲解
板书
板书
举例讲解
举例
讲解
讲解
讲解
举例
讲解
举例
讲解
举例
课
后
小
记
授课教师
常州轻工职业技术学院
单片机原理及应用课程授课教案NO4
授课日期
授课班级
课题
指令系统
授课类型
讲授
授课时数
2
教学
目的
(1)了解指令系统的概述
(2)熟悉寻址方式(3)掌握MCS-51系列单片机指令
重点
难点
寻址方式、MCS-51系列单片机指令
寻址方式
教具
挂图
多媒体课件
教学
及
过程分配
主要教学内容
教学方法
的运用
10分钟
15分钟
20分钟
10分钟
5分钟
10分钟
10分钟
10分钟
四、控制转移类指令
转移指令的功能是通过修改程序计数器PC的值,使程序执行的顺序发生变化,从而改变程序执行的方向。
1.无条件转移指令
无条件转移指令是使程序无条件转移到指定的地址去执行。
LJMPaddr16;PC←addr1600000010a15~a8a7~a0
AJMPaddr11;PC←(PC)+2a10a9a800001a7~a0
PC10~0←addr11
SJMPrel;PC←(PC)+2+rel10000000rel
JMP@A+DPTR;PC←(A)+(DPTR)01110011
2.条件转移指令
条件转移指令要求对某一特定条件进行判断,当满足给定的条件,程序就转移到目标地址去执行,条件不满足则顺序执行下一条指令。
可用于实现分支结构的程序。
这类指令中操作数都为相对寻址方式,目标地址的形成与SJMP指令相类似。
当满足转移范围的条件下,均可用“addr16”代替“rel”。
【例2-17】将片内RAM的40H单元开始的数据块传送到片外RAM的1000H开始的单元中,当遇到传送的数据为零则停止传送。
START:
MOVR0,#40H;片内RAM数据块首址
MOVDPTR,#1000H;片外RAM数据块首址
LOOP:
MOVA,@R0;取数
JZABD;等于零,结束
MOVX@DPTR,A;不为零,送数
INCR0;地址指针加1
INCDPTR;地址指针加1
SJMPLOOP;转LOOP,继续取数
ABD:
SJMPABD;踏步
2、比较转移指令
【例2-13】当Pl口输入数据为55H时,程序继续运行,若不为55H则程序进入等待状态。
程序如下:
WAIT:
MOVA,P1;A←(P1)
CJNEA,#55H,WAIT;(A)≠55H,转向WAIT;(A)=55H,则顺序执行
……
【例2-17】某温度控制系统中,温度的测量值T存在累加器A,温度的给定值Tg存在60H单元。
要求:
T=Tg时,程序返回(符号地址为FH);
T>Tg时,程序转向降温处理程序(符号地址为JW);
T<Tg时,程序转向升温处理程序(符号地址为SW),试编制程序。
相应的程序如下:
CJNEA,60H,L00P;T≠Tg,转向L00P
AJMPFH;T=Tg,转向FH
LOOP:
JCSW;TAJMPJW;T>Tg,转向JW
3、循环转移指令
【例2-15】将片内RAM的30H~39H单元置初值00H~09H。
MOVR0,#30H;设定地址指针
MOVR2,#0AH;数据区长度设定
MOVA,#00H;初值装入A
LOOP:
MOV@R0,A;送数
INCR0;修改地址指针
INCA;修改待传送的数据
DJNZR2,LOOP;未送完,转LOOP地址继续送,否则传送结束
HERE:
SJMPHERE;踏步
(三)子程序调用和返回指令
1、调用指令
LCALLaddr16;addr16:
子程序入口地址
ACALLaddr11
RET;从子程序返回到主程序的断点地址。
RETI;从中断服务程序返回到主程序的断点地址。
NOP;PC←(PC)+100000000
空操作指令是单字节指令。
该指令执行时不进行任何有效的操作,但需要消耗一个机器周期的时间,所以在程序设计中可用于短暂的延时。
五、位操作指令
在MCS-51存储器中有两个可位寻址的区域,可利用位操作指令对这些位进行单独的操作。
存储器中的两个位寻址区的分布是:
(1)片内RAM的20H~2FH区域;
(2)特殊功能寄存器中地址可被8整除的单元。
位操作指令中,bit是位变量的位地址,可使用四种不同的表示方法,下面以CY位为例进行说明。
(1)位地址(如:
D7H)
(2)位定义名(如:
CY)
(3)寄存器名.位(如:
PSW.7)
注意:
累加器必须表示成:
ACC.0~ACC.7。
(4)字节地址.位(如:
D0H.7)
标志位CY在位操作指令中称作位累加器,用符号C表示。
1.位传送指令
MOVC,bit;CY←(bit)
MOVbit,C ;bit←(CY)
2.置位和清零指令
CLRC;CY←0
CLRbit;bit←0
SETBC;CY←1
SETBbit;bit←1
【例2-15】SETBRS1
CLRRS0;设定工作寄存器2区为当前工作区
3.位逻辑运算指令
ANLC,bit;CY←(CY)∧(bit)
ANLC,/bit;CY←(CY)∧(
)
ORLC,bit;CY←(CY)∨(bit)
ORLC,/bit;CY←(CY)∨(
)
CPLC;CY←(
)
CPLbit;bit←(
)
【例2-17】用编程的方法实现图2-2所示电路的功能。
程序清单:
MOVC,P1.1
ORLC,P1.2
ANLC,P1.0
MOVP1.3,C
简单讲解
板书
举例
举例
讲解
讲解
讲解
讲解
举例讲解
课
后
小
记
授课教师
常州轻工职业技术学院
单片机原理及应用课程授课教案NO__5_
授课日期
授课班级
课题
实验一:
单片机认识实验
授课类型
讲授
课时数
2
教学
目的
1、掌握WAVE6000软件的使用
2、熟悉MCS-51系列单片机的指令系统。
重点
难点
传送及算术指令的功能、用途
进一步理解寻址方式
教具
挂图
教学过程
及
时间分配
教学方法的应用
10分钟
10分钟
准备工作检查和明确实验要求
一、实验目的:
1、掌握WAVE6000软件的使用
2、熟悉MCS-51系列单片机的指令系统。
二、实验仪器:
PC机(WAVE6000软件)
三、实验内容:
在PC机上使用WAVE6000软件,分别输入下面两段程序并调试执行
程序1MOV30H,#40H
MOVR0,#30H
MOVA,@R0
MOVR1,A
MOVDPTR,#1000H
MOVX@DPTR,A
程序2
MOVA,60H
XCHA,70H
MOV60H,A
讲解
20分钟
四、实验说明
(一)WAVE6000软件菜单命令说明(MCS-51系统)
1.FILE菜单(ALT-F)[文件]
File\Open(F3)[打开文件…]
打开一个编辑窗口,出现对话框,如图2.3.5所示,在输入框中输入要打开的文件名,或在列表框找到该文件后按下鼠标按钮,单击OK按钮表示打开一个新的编辑窗口;单击Replace按钮表示替代当前编辑窗口中的内容。
File\Save(F2)[存盘]
将当前编辑窗口中的文件存到磁盘上。
File\Saveas[换名存盘]
更换文件名后再存盘。
File\LoadOBJas[调入机器码]
将目标代码从磁盘上调入,操作与File\SaveOBJas相仿。
2.Edit(ALT-E)[编辑]
Edit\Cut[剪切]
删除程序中选定的正文,并将其置于裁剪板ClipBoard窗口中。
Edit\Copy[复制]
保留选定的正文,同时将它拷贝到ClipBoard窗口中,再用地Edit\Paste条命令将裁剪板中的内容复制在光标处。
Edit\Paste[粘贴]
将裁剪板中的内容插入到当前窗口的光标位置,裁剪板中的内容不变。
利用裁剪板和本命令可实现文本块的移动和复制。
Edit\Clear[删除]
删除程序中选定的正文,但不将其置于裁剪板中。
3.Run菜单(ALT-R)[运行程序]
Run\Programreset(CTRL-F2)[程序复位]
中止当前调试过程,将CPU复位。
如果是用Run\Run调试程序,则要用Ctrl+C,来中止正在运行的程序。
Run\Gotocursor(F4)[执行到光标处]
程序从当前指针PC一直执行到光标所在的位置。
如果光标所在的行不包含可执行语句,将显示警告信息:
‘Nocodegenerateonthisline’。
Run\Traceinto(F7)[跟踪执行]
跟踪执行程序。
由用户控制一步一步地执行程序,碰到过程调用时仍将一步一步地执行程序中的每条语句,而不是一步执行完整个过程。
Run\Stepover(F8)[单步执行]
单步执行程序与跟踪执行相仿,不同的是当碰到过程调用时,一步执行完整个过程。
Run\Exec[自动单步执行]
放慢程序执行的速度,以用户可以查看的速度一步一步的自动执行程序。
讲解
40分钟
10分钟
Run\Run(CTRL-F9)[全速执行]
从当前PC处,全速执行程序。
Run\SetPC[设置PC]
将程序PC值,设置为光标所在的行的PC值。
4.Assemble[汇编]
Assemble\Assemble(ALT-F9)[汇编]
汇编当前窗口中的文件。
Assemble\Make(F9)[汇编主文件]
如果用户程序是由多个文件构成,其中有一个应为主文件,由它用INCLUDE伪指令引用其他的文件。
按F9后,不论当前窗口是否为主文件,汇编总从主文件开始.主文件由Option\MainFile命令设定。
Assemble\List[生成列表文件]
汇编源程序并生成列表文件,后缀为.LST。
列表文件是一种同时包含有源程序、地址码、机器码的文件,对于调测,尤其是仿真器独立调测是必不可少的。
Assemble\Disassemble[反汇编]
打开一个对话框,在FileName中填入文件名,在Startaddress,EndAddress中填入始末地址,按ENTER键开始反汇编。
反汇编生成两种格式的文件:
WithLabel:
带标号反汇编,缺省文件扩展名为.ASM。
Withaddress:
带地址,机器码反汇编,缺省文件扩展名为.DIS。
(二)软件使用方法及步骤
1.新建文件(*.ASM)
2.设置仿真器类型,仿真头类型,CPU类型.
3.输入(或调入)汇编语言源文件.
4.编译(或汇编)源文件
集成环境首先对源程序进行汇编,若发现错误,立即返回编辑状态,并打开一个错误信息窗口,用户可按提示修改源程序,若无错误则返回编辑窗口等待调试。
5.单步或全速调试程序
6.检查运行结果
五、实验步骤
1、启动WAVE6000软件
2、输入练习程序
3、保存程序
4、汇编源程序
5、程序执行前的检查
6、运行,调试程序
单步法运行程序
断点法运行程序
连续法运行程序
8、检查运行结果
六、实验结果
程序1
地址
运行前内容
运行后内容
30H
1000H
程序2
地址
运行前内容
运行后内容
60H
70H
课
后
小
记
授课教师