任务一单片机控制单灯亮灭_第1页
任务一单片机控制单灯亮灭_第2页
任务一单片机控制单灯亮灭_第3页
任务一单片机控制单灯亮灭_第4页
任务一单片机控制单灯亮灭_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目一交通灯控制系统(1)项目描述:由MCS-51单片机控制十二个发光二极管亮灭,模拟交通灯管理。初始态为四个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车;延时一段时间后,东西路口的绿灯熄灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车;延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口的绿灯亮,东西方向通车;之后重复以上过程。(2)交通灯控制系统模拟(3)完成项目所需的任务任务一:单片机控制单灯亮灭任务二:单片机控制流水灯任务三:单片机串行口控制流水灯任务四:简单交通灯控制系统任务五:带时间显示的交通灯控制系统任务六:8255A控制交通灯系统任务一单片机控制单灯亮灭1.18051单片机基本结构及引脚功能1.2存储器结构1.3数据传送指令与寻址方式1.4单片机开发环境1.5单片机控制单只发光二极管亮灭任务描述针对第一个项目——交通灯控制系统,由单片机控制十二只发光二极管,分别对应四个路口的红绿黄灯,定时让相应的红绿灯亮、黄灯闪烁。为了实现这一目标,首先必须解决单片机如何控制单只发光二极管亮和灭的问题,因此本任务就是通过学习,使学生学会利用单片机控制任意一只发光二极管发光和不发光。1.1单片机基本结构及引脚功能MCS-51系列单片机都是以8051为核心电路发展起来的,包括51子系列(基本型)和52子系列(增强型)两大类,因此它们都具有MCS-51的基本结构与软件特征,具有很强的兼容性。MCS—51系列单片机配置1.1.1MCS-51系列单片机的内部结构(1)1个8位的中央处理器(CPU,具有位处理功能)和1个全双工的异步串行口。(2)2个16位定时器/计数器(3)3个逻辑存储空间64KB程序存储器空间(包括4KB片内程序存储器ROM)128B内部数据存储器(RAM)64KB数据存储器空间(4)4个双向并可按位寻址的I/O口(5)5个中断源,具有两个优先级(6)片内还有振荡器和时钟电路VCCALERAM地址寄存器RAMP0锁存器P2锁存器ROMP0驱动器P2驱动器ACC寄存器B暂存2暂存1SP程序地址寄存器缓冲器PC加1PCDPTRPSWP1驱动器P3驱动器P1锁存器P3锁存器SFR特殊功能寄存器PSENVSSEARESET内部时钟外接晶振P1.0~P1.7P3.0~P3.7P0.0~P0.7P2.0~P2.7中断、串行口及定时器ALU定时及控制指令寄存器指令译码器用EPROM,为8751无ROM为80311.1.2MCS-51系列单片机的结构框图P0P1P2P3并行接口CPU时钟电路串行接口中断系统ROMRAM定时/计数器T0T1TXDRXD1.1.3MCS-51系列单片机CPU的结构

1.

CPU结构MCS-51内部有一个8位CPU(8位是CPU的字长,指CPU对数据的处理是按一个字节进行的),它象通常的微处理器一样,也是由算术逻辑运算单元ALU、定时控制部件(即控制器)和各种专用寄存器等组成的。ALU

由定时和控制部件构成的控制器,包括定时控制逻辑、指令寄存器、指令译码器、数据指针DPTR、程序计数器PC、堆栈指针SP、RAM地址寄存器以及16位地址缓冲器等。运算器(ALU、专用寄存器)2.CPU的专用寄存器组MCS-51的CPU专用寄存器组包括6个寄存器程序计数器PC累加器ACC寄存器B程序状态标志寄存器PSW堆栈指针SP数据指针DPTR。除PC外,其余5个寄存器均为可编程可访问寄存器。专用寄存器组中只有PC在物理上是独立的(即没有与其他器件共同编码的物理地址),其余5个寄存器都有相应的直接地址(称字节地址)。

是一个独立的计数器,用于存放下一条待执行指令的地址。PC的基本工作过程可以描述为:PC中的数作为指令地址输出给程序存储器,程序存储器按此地址输出指令字节,同时PC本身自动加1,指向下一条指令。MCS-51的PC是一个16位寄存器,其寻址范围是64KB(即216Byte)。(1)程序计数器PC(ProgramCounter)(2)累加器ACC(Accumulator)简称A寄存器或累加器A,是一个具有特殊用途的8位寄存器,主要用来存放一个操作数或存放运算的结果。累加器ACC是CPU中使用最频繁的寄存器,MCS-51指令系统中多数指令的执行都通过它进行。(3)寄存器B寄存器B也是一个8位寄存器,在乘法和除法运算中用作ALU的输入之一。乘法运算时,ALU的两个输入分别为A、B,运算结果存放在AB寄存器中,其中A存放积的低8位,B则存放积的高8位。除法运算时,被除数取自A,除数取自B;运算结果商存于A,而余数存于B。其它情况下,B可作为一个工作寄存器使用。(4)程序状态字PSW(ProgramStateWord)CyACF0RS1RS0OV…PD7D6D5D4D3D2D1D0PSW进位标志、“位累加器”

辅助进位标志

用户通用状态标志

溢出标志

奇偶标志位

保留位

工作寄存器组选择控制位

若A中有奇数个“1”,则P置位,否则清零

RS1、RS0与片内工作寄存器组的对应关系RS1RS0寄存器组片内PAM地址通用寄存器名称000组00H~07HR0~R7011组08H~0FHR0~R7102组10H~17HR0~R7013组18H~1FHR0~R71.1.4单片机的引脚及功能8、P3口的第二功能2、振荡电路:XTAL1、XTAL23、复位引脚:RST4、并行口:P0、P1、P2、P37、ALE:地址锁存控制信号1、电源线:VCC(+5V)、VSS(地)5、EA:访问片外ROM控制信号6、PSEN:外部ROM读选通信号VCCVSSXTAL2

XTAL1RST/VPDP0.0

P0.1

P0.2P0.3P0.4P0.5P0.6P0.7P1.0

P1.1

P1.2P1.3P1.4P1.5P1.6P1.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0ALEP3.0

P3.1

P3.2P3.3P3.4P3.5P3.6P3.7EAPSENRXD/

TXD/

INT0/INT1/

T0/

T1/

WR/

RD/1

2

3

4

5

6

7

8

9

10111213141516171819

2040

39

38

37

36

35

34

33

32

313029282726252424222180318051875189C51VCC(40脚):接+5V电源正端;VSS(20脚):接+5V电源地端。1.主电源引脚2.外接晶体引脚

XTAL1(19脚):接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。

XTAL2(18脚):接外部晶体的另一端。在单片机内部,接至片内振荡器的反相放大器的输出端。(1)RST/VPD(9脚):RST即为RESET,VPD为备用电源,所以该引脚为单片机的上电复位或掉电保护端。VPD是备用电源输入端,当单片机掉电或电源发生波动导致电源电压下降到一定值时,备用电源通过VPD端给内部RAM供电,保持其中的信息,直至单片机工作电压恢复正常。

(2)(30脚):当访问外部存储器时,ALE(允许地址锁存信号)以每机器周期两次的信号输出,用于锁存出现在P0口的低8位地址,的功能是8751等片内含有ROM器件的编程脉冲输入端。3.控制信号(3)(29脚):片外程序存储器读选通信号输出端,低电平有效。(4)/VPP(31脚):为访问外部程序存储器控制信号,低电平有效。VPP是编程电源输入端。(1)P0口(39脚~32脚):P0.0~P0.7统称为P0口。(2)P1口(1脚~8脚):P1.0~P1.7统称为P1口,可作为准双向I/O接口使用。(3)P2口(21脚~28脚):P2.0~P2.7统称为P2口,一般可作为准双向I/O接口。(4)P3口(10脚~17脚):P3.0~P3.7统称为P3口。4.输入/输出(I/O)P3口的第二功能1.2存储器结构普林斯顿(Princeton)结构:将程序和数据合用一个存储器空间的结构。哈佛(Harvard)结构:程序存储器和数据存储器截然分开,ROM和RAM独立编址并分别寻址的结构,相互间不会冲突。在MCS-51系列单片机中,不仅在片内预留了一定容量的程序存储器、数据存储器以及众多的特殊功能寄存器(SFR),而且还具有很强的外部存储器扩展能力,可扩展到64KB,寻址和操作简单方便。1

2

3

4

5

6

7

8

9

10

11

12

13

1428

27

26

25

24

23

22

2120

19

18

17

16

15EPROM27641

2

3

4

5

6

7

8

9

10

11

12

13

1428

27

26

25

24

23

22

2120

19

18

17

16

15EPROM27641

2

3

4

5

6

7

8

9

10111213141516171819

2040

39

38

37

36

35

34

33

32

31302928272625242422211

2

3

4

5

6

7

8

9

10

11

12

13

1428

27

26

25

24

23

22

2120

19

18

17

16

15RAM62641

2

3

4

5

6

7

8

9

10

11

12

13

1428

27

26

25

24

23

22

2120

19

18

17

16

15RAM6264

80318751805189C51片内RAM片内ROM256B(字节)4KB64K64KMCS-51存储器结构

三大逻辑存储空间内部数据存储器

程序存储器片内ROM0FFFFH1000H片外RAM及输入输出端口(64K)0000H0FFFFH0FFFH0000H片内ROM

EA=10FFFH0000H片外ROM

EA=10080H00FFH特殊功能寄存器0000H007FH内部RAM外部数据存储器1.2.1

程序存储器程序存储器(Programmemory)主要用于存放经调试正确的应用程序和常数表格。由于MCS-51系列单片机采用16位的程序计数器PC和16位的地址总线,因而程序存储器可扩展的地址空间为64KB,并且这64KB地址在空间分布范围上是连续和统一的。程序存储器的应用形态

MCS-51片内程序存储器为固定的只读存储器ROM。如8051中含有4KB容量的掩膜ROM,8751中含有4KB容量的EPROM,89C51中含有4KB容量的FlashROM。8031/8032中不设程序存储器,这种单片机在供应状态上称为ROMLess型器件,使用过程中必须外部扩展ROM。0000HFFFFH(64K)外部数据存储器00HFFH7FH80H(高128B)(低128B)内部RAM特殊功能

寄存器0组R0R7R0R7R0R7R0R71组2组3组工作寄存器区可位寻址区20H2FH7F78070030H7FH数据缓冲区/堆栈区内部RAM存储器18H1FH10H17H08H0FH00H07H1.2.2内部数据存储器RS1RS0000组011组102组013组1.3数据传送指令与寻址方式1.3.1指令1.3.2数据传送指令1.3.3寻址方式1.3.1指令1.指令指令:指挥计算机工作的命令计算机指令系统:一种计算机所能执行的指令集合MCS-51单片机主要有两种指令形式:不同机器的指令系统不相同机器指令汇编语言指令(1)机器指令用二进制代码表示的指令称为机器语言指令,也称机器码。例如:“累加器A加1”指令用二进制数表示时,是“00000100”,在程序存储器中占用一个字节单元。(2)汇编语言指令用容易记忆的缩写符号表示机器语言指令就是汇编语言指令。例如,“A加B”用英语写出来是“AddBtoA”,缩写成“ADDA,B”。这个“ADDA,B”就是汇编语言指令。MCS-51单片机的开发商约定:“ADDA,B”与25F0H对应。我们将“ADD”缩写符号称为“助记符”。编写机器语言程序实质上就是用汇编语言编写程序。两种语言指令对照:汇编语言指令机器语言指令MOVA,#0AH74H0AHADDA,#14H24H14H2.汇编语言指令的格式指令组成:操作码助记符操作数括号内的部分是可选项。每个字段之间要用分隔符分隔,可以用作分隔符的符号有空格、冒号、逗号、分号等。

指令格式:[标号:]操作码[目的操作数][,源操作数];[注释]

LOOP:MOVA,

3AH;(A)←(3AH)

(1)标号标号是语句地址的标志符号,代表该语句指令代码第一个字节的地址。(1)标号由1~8个ASCII字符组成,且第一个字符必须是字母,其余字符可以是字母、数字或其他特定字符。(2)不能使用该汇编语言已经定义了的符号作为标号。如指令助记符、寄存器符号名称等。(3)标号后必须跟冒号。

(2)操作码操作码用于规定语句执行的操作。它是汇编语句中唯一不能空缺的部分,也是语句的核心它用指令助记符表示。(3)操作数操作数用于给指令的操作提供数据或地址。在一条汇编语句中操作数可能是空缺的,也可能包括一项,还可能包括两项或三项。当有多个操作数时,各操作数间以逗号分隔。操作数字段的内容:(1)工作寄存器名。(2)特殊功能寄存器名。(3)标号名。(4)常数。(5)符号“$”,表示程序计数器PC的当前值。(6)表达式。(4)注释注释不属于汇编语句的功能部分,它只是对语句的说明。注释字段可以增加程序的可读性,有助于编程人员的阅读和维护。注释字段必须以分号“;”开头,长度不限可以换行接着书写,但换行时应注意在开头使用分号“;”。

指令的描述中经常用到一些特殊符号

Rn工作寄存器R0~R7,即n=0~7。Ri寄存器R0、R1,即i=0、1。direct8位内部RAM单元的地址#data:指令中的8位立即数。#data16指令中的16位立即数。addr16:16位的目的地址addr1111位的目的地址rel8位带符号的偏移量字节bit:内部数据RAM或SFR的可直接寻址位。/位操作数的前缀,表示对该位取反。(X)X中的内容。((X))由X寻址的单元中的内容。←表示数据的传送方向。<=>表示数据交换。1.3.2数据传送类指令MCS-51单片指令系统中,数据传送指令共29条,分为内部数据传送指令、外部数据传送指令、堆栈指令和数据交换指令。数据传送指令是MCS-51单片机指令系统中数目最多、使用最频繁的指令。除了用POP或MOV操作向PSW传送数据的指令外,其他传送指令均不影响标志位。“传送”操作的功能是将源地址单元的内容传送到目的地址单元中去,而源地址单元的内容不变。累加器A直接地址direct立即数#data寄存器R0~R7寄存器间接@R0、@R1数据指针DPTR16位入、出栈@SP入出位累加器C11数据传送类指令示意图1.内部数据传送指令是指数据在内部RAM单元之间传送。内部数据传送指令的助记符为MOV其汇编语言指令格式为:MOV[目的地址],[源地址](1)以累加器A为目的的传送指令

功能

执行时间

(A)←(Rn)1Tcy(A)←(direct)1Tcy(A)←((Ri))1Tcy(A)←#data1Tcy11101rrr汇编语言指令MOVA,RnMOVA,directMOVA,@RiMOVA,#data机器语言指令11100101direct1110011i01110100data指令中Rn表示工作寄存器R0~R7,用机器码指令中的低3位指代工作寄存器的地址,其中:rrr=000~111,对应的工作寄存器R0~R7。而MOVA,30H的机器吗是1110010100110000,即E530H,它是双字节指令。本组指令涉及的寻址方式寻址方式,就是指如何找到存放被操作数据的位置(地址)的方法。具体寻址方式MOVA,RnMOVA,directMOVA,@RiMOVA,#data寄存器寻址(A、B、Rn)直接寻址寄存器间接寻址@为间接寻址指示符立即数寻址#为立即数的标识符十六进数的最高位数字是A~F时,应在其前面加一个数字“0”。(2)以直接地址为目的的传送指令MOVdirect,A;(direct)←(A)MOVdirect,Rn;(direct)←(Rn)MOVdirect1,direct2;(direct1)←(direct2)MOVdirect,@Ri;(direct1)←((Ri))MOVdirect,#data;(direct1)←data这组指令的目的操作数都是直接寻址单元,源地址操作数采用寄存器寻址、直接寻址、寄存器间接寻址和立即数寻址。(3)以通用寄存器Rn为目的的传送指令MOVRn,A;(Rn)←(A)MOVRn,direct;(Rn)←(direct)MOVRn,#data;(Rn)←data

这三条指令都是以工作寄存器为目的操作数,源操作数的寻址方式有寄存器寻址、直接寻址和立即数寻址。

(4)以寄存器间接地址为目的的传送指令

MOV@Ri,A;((Ri))←(A)MOV@Ri,direct;((Ri))←(direct)MOV@Ri,#data;((Ri))←data这组指令的目的操作数都是间接寻址单元,源地址单元可采用寄存器寻址、直接寻址和立即数寻址方式。例1-1设内部RAM中的30H单元的内容为50H,试分析执行下面程序后各有关单元的内容。MOV60H,#30HMOVR0,#60HMOVA,@R0MOVR1,AMOV40H,@R1MOV60H,30H30H60H30H30H00H01H40H60HE0H片内RAMR1R0A30H…………50H50H50H2.16位数据传送指令MOVDPTR,#data16;(DPTR)←data16DPTR(数据指针)是一个16位的专用寄存器,其高位字节寄存器用DPH表示、低位字节寄存器用DPL表示。既可作为一个16位寄存器DPTR来处理,也可作为两个独立的8位寄存器DPH和DPL来处理。DPTR主要用来存放16位地址,可通过它访问64KB外部数据存储器或外部程序存储器空间。MSC-51单片机指令系统中仅此一条传送16位数据的指令,功能是将16位数据送入寄存器DPTR中,其中数据的高8位送入DPH中,低8位送入DPL中。

3.数据交换指令数据交换指令是在内部RAM的某一个单元和累加器A之间进行的,并且累加器A总是作为目标操作数。数据交换指令分为两种;整字节交换和半字节交换。

XCHA,Rn;(A)<=>(Rn)XCHA,direct;(A)<=>(direct)XCHA,@Ri;(A)<=>((Ri)) 这组指令的功能是将累加器A的内容与源操作数(Rn、direct或@Ri)所指定单元相互交换内容。(1)整字节交换MOVA,30HXCHA,40HMOV30H,A88HA88H30H40H11H…88H11H11H例1-2已知(30H)=88H,(40H)=11H,指出下列程序段执行的结果和功能。结果为(30H)=11H,(40H)=88H,而功能是将30H和40H单元内容互换。(2)半字节交换指令XCHDA,@Ri;(A)3~0

<=>((Ri))3~0SWAPA;(A)3~0<=>(A)7~4第一条指令将Ri间接寻址的单元内容的低4位与累加器A内容的低4位互换,高四位内容不变,不影响标志位。例如,设(A)=0ABH,(R0)=30H,(30H)=12H,执行指令XCHDA,@R0后,(A)=A2H,(30H)=1BH。第二条指令将累加器A的高4位与低4位内容互换,不影响标志位。例1-3设内部数据存储器的60H、61H单元中连续存放着4位BCD码,试编写一段程序将这4位BCD码倒序排列。MOVR0,#60H;(R0)=60HMOVR1,#61H;(R1)=61HMOVA,@R0;(A)=((R0))=(60H)=a3a2SWAPA;A中的内容、低4位互换(A)=a2a3XCHA,@R1;(A)<=>((R1))SWAPA;(A)=a0a1MOV@R0,A;((R0))=(A),(60H)=a0a160H61H60H61Ha3a2a0a1a1a0a2a34.片外数据存储器传送指令当把一个数据送到单片机外部扩展RAM的某个单元或外部扩展I/O口某个端口,或者从该单元、端口将数据取回到单片机内部的时候,就要用到这种指令。MOVXA,@Ri;(A)←((Ri))片外MOVXA,@DPTR;(A)←((DPTR))片外MOVX@Ri,A;((Ri))片外←(A)MOVX@DPTR,A;((DPTR))片外←(A)片外RAM读指令片外RAM写指令。例1-4将累加器A中的内容送入外部数据存储器的60H单元。MOVR0,#60H;地址送间址寄存器MOVX@R0,A;A中内容送外部数据存储器的0060H单元例1-5将外部存储器的2000H单元的内容送入2100H单元。MOVDPTR,#2000H;(DPTR)=2000HMOVXA,@DPTR;(A)=((DPTR))MOVDPTR,#2100H;(DPTR)=2100HMOVX@DPTR,A;((DPTR))=(A)5.ROM数据访问指令MOVCA,@A+DPTR;(A)←((A)+(DPTR))ROMMOVCA,@A+PC;(PC)←(PC)+1,(A)←((A)+(PC))ROM1065HALU1060H+05H=1065H程序存储器PCMOVCA,@A+DPTR34H…………05HDPLDPHA10H60H…指令执行后,A中的内容则为34H,而不再是5H34H变址寻址(基址+变址)两个指令的比较MOVCA,@A+DPTRMOVCA,@A+PC执行结果只与指针DPTR及累加器A的内容有关,与该指令存放的地址无关。执行结果不仅与累加器A的内容有关,还与该指令存放的地址有关。表格的大小和位置可以在64KB程序存储器中任意安排。表格可以为各个程序块所共用。表格只能放在该条查表指令后面的256个单元之内,表格的大小受到限制。表格只能被一段程序所利用。例1-6:设A的内容为BCD码(高4位为全0),试用查表法来求得相应的ASCII码。方法(一):BCD_ASC:MOVDPTR,#TABMOVCA,@A+DPTRRETTAB:DB30H,31H,32H,33H,34HDB35H,36H,37H,38H,39H方法(二):BCD_ASC:INCAMOVCA,@A+PCRETTAB:DB30H,31H,32H,33H,34H

DB35H,36H,37H,38H,39H为什么要加INCA语句???6.栈操作指令堆栈是指用户在单片机内部RAM中开辟的、遵循“先进后出”原则、只能从一端存取数据的一个存储区。存取数据的一端称为栈顶。堆栈主要用于保护和恢复CPU的工作现场,也可实现内部RAM单元之间的数据传送。凡是关系到堆栈操作的场合,都需要借助MCS-51的CPU中一个专用8位寄存器SP来指示堆栈中数据存取的位置,该寄存器被称为堆栈指针SP。MCS-51的堆栈是向上(即向地址增加的方向)生成的,在堆栈操作过程中,SP始终指向堆栈的栈顶。(1)入栈指令:PUSHdirect;(SP)←(SP)+1,((SP))←(direct)

89H80H70H50H栈底SPSP入栈过程PUSHACC89HA先将堆栈指针寄存器的内容加1,指向堆栈顶的一个单元中,然后将指令指定的直接寻址单元内容传送到这个单元中。(2)出栈指令:POPdirect;(direct)←((SP));(SP)←(SP)-1出栈指令是将当前堆栈指针寄存器SP所指示单元内容传送到该指令指定的直接寻址单元中去,然后SP内容减1指向新栈顶。出栈过程POPACCSP89HSPA89H80H70H50H栈底例1-7已知(SP)=30H,(40H)=88H,(50H)=11H,指出下列程序段的执行结果和功能。PUSH40HPUSH50HPOP40HPOP50H30H31H40H50HE0H片内RAM32H………SP88H11HSP88HSP11HSPSP11HSP88HSP1.3.3寻址方式我的信在她那!找信去!②①注:找信是寻找信的“地址”!寻址方式,就是指如何找到存放被操作数据的位置(地址)的方法。1.

寄存器寻址寄存器寻址是指令中指定寄存器的内容作为操作数的寻址方式。寄存器目的地R0~R7ABDPTRMOVA,R12.直接寻址直接寻址是指令直接给出操作数所在单元的地址的寻址方式。指令中操作数部分给出直接地址,用direct表示。

XXH目的地内部RAMSFRMOVA,3AH例:MOVA,3AH操作码直接地址APC+1程序存储器…0011101011100101PC内部RAM…3AH39H100111111…10011111XXH目的地R0、R1DPTRMOVA,@R13.寄存器间接寻址指令操作数的地址事先存放在某个寄存器中,由该寄存器的内容指定操作数地址的寻址方式,称为寄存器间接寻址,@为间接寻址指示符。信在XXH中寄存器可寻址内部RAM128B、外部RAM寻址外部RAMMOVA,@R0PC操作码程序存储器11100110….….….~内部RAM47H65H65HR0….~~~47HA4.立即数寻址立即数寻址是由指令直接给出操作数的寻址方式。#为立即数的标识符。目的地MOVA,#30H速递快信30HA立即数寻址立即数寻址大都是双字节指令,仅有指令:MOVDPTR,#DATA16是三字节指令,它提供两字节立即数,如:MOVDRTR,#1600H,它的机器指令格式下所示:100100000001011000000000对立即数的书写一般有要求:十六进数的最高位数字是A~F时,应在其前面加一个数字“0”。对于直接地址和偏移量也按相同方法书写。5.变址寻址(基址寄存器+变址寄存器间接寻址)变址间接寻址是将指令中基地址(基址寄存器)和偏移量地址(变址寄存器)的内容相加形成真正的操作数地址。基址寄存器1000H变址寄存器PCDPTRA程序存储器65H….….1000H+30H1030H30H65H如:MOVCA,@A+DPTR6.相对寻址以当前的PC值加上指令中给出的相对偏移量rel而形成转移目的地址的寻址方式。2000H+2H+28H······SJMP28H202AH程序存储器2002H2000H源地址目的地址rel转移指令本身字节数rel是有符号的8位二进制数,用补码表示。相对偏移在+127~-128字节单元之间。如:SJMP28H7.位寻址位寻址适用于可以进行单独位操作的指令,指令中直接给出位地址寻找位操作数。参与操作的数据是1bit而不是1B。位地址用bit表示,以区别字节地址direct。PCPC+110100010

00110111程序存储器操作码0CyACF0RS1RS0OVPPSW内部RAM位地址空间26H

3736353433323130

MOVC,37H0寻址可涉及的存储器空间寻址方式存储器空间寄存器寻址R0~R7、A、B、DPTR直接寻址内部数据存储器00H~7FH字节单元特殊功能寄存器寄存器间接寻址内部数据存储器(@R1、@R0)外部数据存储器(@R1、@R0、@DPTR)立即数寻址程序存储器(操作常数)变址间接寻址程序存储器(@A+DPTR、@A+PC)相对寻址程序存储器(修改了PC值)位寻址内部数据存储器及特殊功能寄存器中某些单元位1.4单片机开发环境的使用单片机开发环境包括两个部分:1.Dais-MCS51仿真开发系统,主要用于完成项目之前相关任务的模拟、程序调试等。仿真器、烧录器,针对项目中的相关任务,制作硬件电路后由仿真器进行仿真调试,调试成功后用烧录器将程序固化到芯片中。——本次课主要学习Dais-MCS51仿真开发系统的使用。1.4.1Dais-MCS51仿真开发系统的组成与使用1.单片机开发环境的系统组成Dais系列单片机微机仿真实验系统的MCS-51单片机实验与仿真由管理CPU89C52系统单元、目标CPU8032或438单元、接口实验单元和内置稳压电源组成,通过RS232C串行接口与PC微机相连。2.硬件安装步骤

(1)把CPU选择开关拨至51位置。(2)若外置电源,应把随机所配的通信线/电源线带有电源输入端的一头插入主机板上的RS232-9芯插座,根据电源线颜色接入电源,具体方法如下:红+5V黑⊥橙+12V绿-12V(3)若内置电源,只要通过随机所配的三芯电源线连接AC220V电网即可。(4)打开电源开关,系统应显示闪动的“P.”,处于待命状态;否则按下RESET键,如仍再不显示,应立即切断电源,检查后重新进行。(5)系统功能自检:在闪动的“P.”状态下按键:[MOVE]→0000→[STEP]→[EXEC],系统以连续方式运行“8”字循环右移程序,若6位LED出现跑“8”显示,说明系统已进入正常工作状态,可按RESET键返“P.”待令。(1)在桌面上点击图标,然后选择以实验系统所插串口一致的选项,点击“确定”便进入Dais集成调试环境。(2)点击工具条中“”图标,在打开对话框中双击.asm文件,进入实验源程序的编辑窗口。(3)点击工具条中“”图标,进行源文件的编译、装载,在出现编译成功的对话框后点击“OK”框自动进入源文件调试状态。(4)在工具条中点击所需的运行方式:“”单步、“”宏单步、“”运行。(5)若需要以断点方式运行,可直接点击源语句行前的“”图标来完成所需断点的设置与清除,然后再点击“”图标进入断点运行状态。(6)系统一旦进入运行状态后若需终止该程序的运行请点击“”图标退出当前操作返回待令状态。3.快捷键的使用4.启动Dais-MCS51仿真开发系统(1)点击“开始”→“程序”→“启东达爱思仿真开发系统”→“MCS51单片机实验系统”,并选择正确的参数设置。(2)选择进入联机操作或模拟操作。如果没有连接实验仪器,屏幕上将出现出错对话框,请确认是否需要连接。如果不需连接,则点击“NO”,则软件将进入模拟操作状态;如果要进入连机操作状态,请在确认仪器连接与参数设置正确后,点击“Yes”,软件将进入联机操作模式。 经过以上步骤,屏幕上出现Dais-MCS51仿真开发系统。5.利用Dais-596仿真开发系统进行实验的步骤(1)点击“型号选择”“产品型号”“Dais-596H”。(2)选择实验项目。如果进行软件实验,则点击“实验指导”→“软件项目”,从中选择相应实验项目;若进行硬件实验,则点击“实验指导”→“硬件项目”,从中选择相应实验项目。(3)查看“程序流程图”和“实验电路”。通过“实验指导”可以进行相关操作,当然,也可通过该菜单查看实验目的及实验内容等信息。(4)实验连线。对于硬件实验,一般要进行实验连线,则通过点击“实验指导”→“实验连线”,打开下图所示的窗口,通过点击“查看下一根连线”可以得知实验连线的方法,连线过程中,也可通过点击“查看上一根连线”检查前面连线是否正确。(5)打开“实验程序”。点击“实验指导”→“实验程序”打开实验源程序。(6)编译及装载。点击“编译”→“项目编译、连接、装载”或按“Ctrl+F9”,对源程序进行编绎、连接及装载。(7)运行。选择“调试”菜单下的相关命令,可实现“连续运行”或“单步运行”,也可设置断点进行“断点运行”。实验的步骤1.4.2利用Dais-MCS51开发系统调试顺序结构程序汇编语言程序设计的基本方法分析题目确定算法程序结构的设计编写源程序1.顺序结构程序顺序程序是指无分支、无循环结构的程序,程序的走向是惟一的,程序的执行顺序与书写顺序完全一致。2.数据传送程序程序执行前程序执行后78H56H34H12H20H21H22H23H56H34H12H00H20H21H22H23H78HA例1-8片内RAM的20H~23H单元中存储的数据。该编写程序所示的数据传送结果。方法一:MOVA,23H;2B,1个机器周期MOV23H,22H;3B,2个机器周期MOV22H,21H;3B,2个机器周期MOV21H,20H;3B,2个机器周期MOV20H,#00H;3B,2个机器周期方法二CLRA;1B,1个机器周期XCHA,20H;2B,1个机器周期XCHA,21H;2B,1个机器周期XCHA,22H;2B,1个机器周期XCHA,23H;2B,1个机器周期参考程序:方法一使用的指令代码占14B,执行时间为9Tcy。方法二的指令代码只有9B,执行时间也减少到了5Tcy。在实际应用中,注意程序的优化。

3.查表程序例1-9

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论