授课日期 班次 授课时数 2
课题,任务二,P1口外接 8只 LED发光二极管模拟彩灯(二)
教学目的,掌握 MCS-51指令的寻指方式以及指令在 CPU内部的执行过程重点,MCS-51指令的寻指方式难点,MCS-51指令的寻指方式、指令在 CPU内部的执行过程教具,多媒体作业,3.1 3.5
自用参考书:《单片机应用技术》耿长清主编、《单片机应用技术》刘守义主编教学过程:
一、复习提问
1.描述任务二并画出其硬件电路。
2,MCS-51的有哪些数据传送类指令?
二、新授由上节课任务二 控制彩灯数据有的直接在指令中提供了,但如何在片内传送?
以生活中如找东西来引入本节内容
1.寻址的概念
2.指令的寻址方式直接寻址、寄存器寻址、寄存器间接寻址、立即寻址、变址寻址位寻址、相对寻址
3.指令在 CPU内部的执行过程
4.应用举例
5.课堂小结课后小结:
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
2、什么是指令的寻址方式? MCS-51单片机指令系统采用了哪几种寻址方式?
直接寻址指令中操作数直接以单元地址形式出现,例如:
MOV A,68H
这条指令的意义是 把内部 RAM中的 68H单元中的数据内容传送到累加器 A中 。值得注意的是直接寻址方式只能使用 8位二进制地址,
因此这种寻址方式仅限于内部 RAM进行寻址。低 128位单元在指令中直接以单元地址的形式给出。对于特殊功能寄存器可以使用其直接地址进行访问,还可以以它们的符号形式给出,只是特殊功能寄存器只能用直接寻址方式访问。
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
2、什么是指令的寻址方式? MCS-51单片机指令系统采用了哪几种寻址方式?
寄存器寻址寄存器寻址对选定的 8个工作寄存器 R0-R7进行操作,也就是操作数在寄存器中,因此指定了寄存器就得到了操作数,寄存器寻址的指令中以寄存器的符号来表示寄存器,例如:
MOV A,R1
这条指令的意义是 把所用的工作寄存器组中的 R3的内容送到累加器
A中。
值得一提的是工作状态寄存器的选择是通过程序状态字寄存器来控制的,在这条指令前,应通过 PSW设定当前工作寄存器组。
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
2、什么是指令的寻址方式? MCS-51单片机指令系统采用了哪几种寻址方式?
寄存器间接寻址寄存器寻址方式,寄存器中存放的是操作数,而寄存器间接寻址方式,
寄存器中存放的则为操作数的地址,也即操作数是通过寄存器指向的地址单元得到的,这便是寄存器间接寻址名称的由来。
例如指令:
MOV A,@R0
这条指令的意义 是 R0寄存器指向地址单元中的内容送到累加器 A中 。
假如 R0=#56H,那么是将 56H单元中的数据送到累加器 A中。
寄存器间接寻址方式可用于访问内部 RAM或外部数据存储器。访问内部 RAM或外部数据存储器的低 256字节时,可通过 R0和 R1作为间接寄存器。然而有必要指出,内部 RAM的高 128字节地址与专用积存器的地址是重叠的,所以这种寻址方式不能用于访问特殊功能寄存器
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
2、什么是指令的寻址方式? MCS-51单片机指令系统采用了哪几种寻址方式?
立即寻址立即寻址就是把操作数直接在指令中给出,即操作数包含在指令中,
指令操作码的后面紧跟着操作数,一般把指令中的操作数称为立即数,
因此而得名。为了与直接寻址方式相区别,在立即数前加上,#” 符号,
例如:
MOVX A,#0EH
这条指令的意义 是将 0EH这个操作数送到累加器 A中 。
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
2、什么是指令的寻址方式? MCS-51单片机指令系统采用了哪几种寻址方式?
变址寻址变址寻址是以 DPTR或 PC作为基址寄存器,以累加器 A作为变址寄存器,将两寄存器的内容相加形成 16位地址形成操作数的实际地址。
例如:
MOV A,@A+DPTR
MOVX A,@A+PC
JMP @A+DPTR
在这三条指令中,A作为偏移量寄存器,DPTR或 PC作为变址寄存器,A作为无符号数与 DPTR或 PC的内容相加,得到访问的实际地址。
其中前两条是程序存储器读指令,后一条是无条件转移指令
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
2、什么是指令的寻址方式? MCS-51单片机指令系统采用了哪几种寻址方式?
位寻址在 MCS-51单片机中,RAM中的 20H— 2FH字节单元对应的位地址为
00H— 7FH,特殊功能寄存器中的某些位也可进行为寻址,这些单元既可以采用字节方式访问它们,也可采用位寻址的方式访问它们。
相对寻址相对寻址方式是为了程序的相对转移而设计的,其夜里是以 PC的内容为基址,加上给出的偏移量作为转移地址,从而实现程序的转移。转移的目的地址可参见如下表达式:
目的地址 =转移指令地址 +转移指令字接数 +偏移量值得注意的是,偏移量是有正负号之分的,偏移量的取值范围是当前 PC值的 -128— +127之间。
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
3、指令在 CPU内部的执行过程?
指令是以二进制的形式存放在程序存储器中的,CPU执行指令的过程是不断的从程序存储器取指令,指令译码器对指令进行译码,并发出与指令相应的微操作信号,完成指令的执行。在这一过程当中,需要根据相应的时序进行操作,程序存储器操作时序如图所示
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
4、应用举例
【 例 3.1】 在程序存储器中从而 2000H单元开始依次存放置 0~9的平方值,0,1,4,9,…,81,要求依据累加器 A中的值 ( 0~9) 来查找所对应的平方值,分析下述程序的结果 。
MOV DPTR,#2000H
MOV A,#09H
MOVC A,@A+DPTR
执行结果,( DPTR) =2000H,( A) =51H。
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
4、应用举例
【 例 3.2】 仍以上例程序存储器中 2000H单元开始存放 0~9的平方值,以 PC
作为基址寄存器进行查表,设 MOVC指令所在地址 ( PC) =1FF0F。
解,偏移量 =2000H— ( 1FF0H+1) =0FH
相应的程序如下:
MOV A,#09H
ADD A,#0FH
MOVC A,@A+PC
执行结果,( PC) =1FF1H,( A) =51H
这是以 PC作为基址寄存器,CPU取完该指令操作码时 PC会自动加工厂,指向下一条指令的第一个字节地址,即此时是用 ( PC) +1作为基址的,目标地址为
( A) +( PC) +1。 另外,由于累加器 A中的内容为 8位无符号整数,这不使得本指令查表范围只能在以 PC当前值开始后 256个字节范围内 ( 即 ( PC)
+1H~100H),使表格地址空间分配受到限制 。 同时编程时还需进行偏移量的计算,即 MOVC A,@A+PC指令所在地址与表格存放首地址间的距离量计算,并需要一条加法指令 ADD进行地址调整 (ADD指令将在下节介绍 )。 偏移量计算公式为:
偏移量 =表首地址 — ( MOVC指令所在地址 +1)
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
4、应用举例
【 例 3.3】 若在程序存储器中 2000H单元开始依次存放 0~9的平方值,
数据指针 ( DPTR) =3A00H,用查一指令取出 2003H单元的数据后,要求保持 DPTR中的内容不变,完成以上功能的程序如下:
MOV A,#03H ; ( A) ← 03H
PUSH DPH ; 保护 DPTR高 8位入栈
PUSH DPL ; 保护 DPTR低 8位入栈
MOV DPTR,#2000H ; ( DPTR) ← 2000H
MOVC A,@A+DPTR ; ( A) ← ( 2000H+03H)
POP DPL ; 弹出 DPTR低 8位
POP DPH ; 弹出 DPTR高 8位,( 先进后出 )
执行结果,( A) =09H,( DPTR) =3A00H。
由此可见,虽然在程序中改变了 DPTR的内容,但利用 PUSH和 POP指令可对其进行保护和恢复,要注意的是堆栈先进后出的原则,否则 DPH弹出时互换 。
课堂小结:
1、什么是指令的寻址方式?
2,MCS-51单片机指令系统采用了哪几种寻址方式?
3、指令在 CPU内部的执行过程作业:
1、预习模拟彩灯实验实训项目,完成预习报告并编写控制程序
2,P69 3.1 3.5