DA A MOV @R0,A INC R0 INC R1 DJNZ 30H,SJZB RET OVER2: NOP END
(4)在外RAM中把8000H单元开始的30H字节数据传送到8100H开始的单元中去,用编程实现。 答案一:
ORG 0000H MOV R2,#00H
MOV R3,#80H MOV R4,#00H MOV R5,#81H MOV R7,#30H LOOP:MOV DPL,R2 MOV DPH,R3 MOVX A,@DPTR INC DPTR MOV R2,DPL MOV R3,DPH MOV DPL,R4 MOV DPH,R5 MOVX @DPTR,A INC DPTR MOV R4,DPL MOV R5,DPH DJNZ R7,LOOP END 答案二: ORG 0000H MOV DPTR,#8000H MOV P2,#81H MOV R0,#00H MOV R7,30H LOOP:MOVX A,@DPTR MOVX @R0,A INC DPTR INC R0 DJNZ R7,LOOP
END (5)若片外RAM的容量不超过256个字节,试编写程序将片外RAM 50H中的内容传送到片内RAM 30H单元中。 答: ORG 0000H MOV DPTR, #0050H MOVX A, @DPTR MOV 30H, A END 或: ORG 0000H MOV R0, #50H MOVX A, @R0 MOV 30H, A END
(6)用两种方法将程序存储器20F0H单元中的常数读入累加器中,如下所示。
方法1: 2010H MOV A,# NNH MOVC A,@A+PC 试写出NNH的具体值。
答:由于“MOV A,# NNH”是2字节指令,“MOVC A,@A+PC”是1字节指令,因此PC中的值是2013H,20F0H-2013H=00DDH,NNH的具体值是DDH。
方法2: MOV DPTR,# MMMMH MOV A,# NNH MOVC A,@A+DPTR
试写出NNH、MMMMH的具体值。 答:MMMMH=20F0H,NNH=00H
练习题四
1. 问答题
(1)什么是接口?接口的基本功能是什么?
答:CPU执行程序具有快速的特点,而一些外围设备,如键盘、显示器等处理数据却呈现慢速的特性。为了使CPU和外围设备在信息传输和处理速度上匹配,在两者之间需要一种装置作媒介,这种媒介称为输入/输出(I/O)接口,简称接口。
接口的基本功能有:输入/输出数据,扩展外部存儲器、D/A和A/D转换器、可编程I/O芯片等,作为三总线(AB, DB, CB)使用,作为串行通信线和外部中断输入线等。 (2)P1口、P0口、P2口和P3口具有什么特点? 答:
P1口的特点:
P1口为单功能口:通用I/O口。 P1口由于有内部上拉电阻,引脚没有高阻抗状态,即引脚状态非0即1,称为准双向口。作输出口时,通过上拉电阻R可以向外输出高电平,不需要再在片外接上拉电阻。
P1口读引脚时,必须先向输出锁存器写1。 P1口能驱动4个TTL负载。
CPU不占用P1口,完全由用户支配。
P0口的特点:
P0口为双功能口:通用I/O口和地址/数据复用线。一般情况下,如果P0已作地址/数据复用口,就不能再作通用I/O口使用。
当P0口作地址/数据复用口时,是一个真正的双向口。外接ROM和RAM时,不需要片外接上拉电阻。
当P0口作通用I/O口时,需要在片外接上拉电阻,此时是一个准双向口。为保证引脚的正确读入,应首先向锁存器写1.
P0口能驱动8个TTL负载。
P2口的特点:
P2口是双功能口:通用I/O口功能和高8位地址口。
作为地址输出线时,与P0口输出的低8位地址一起构成16位地址线,可以寻址64KB的地址空间。
当P2口作为高8位地址输出口时,由于地址不是来自输出锁存器,因此输出锁存器的内容保持不变。
作通用I/O时,是准双向口。作输入时,应先向锁存器写1。 P2口能驱动4个TTL负载。
P3口的特点:
P3口内部有上拉电阻,不存在高阻抗输入状态,为准双向口。
P3口作为第一功能通用输入,或作为第二功能的输出/输入,均需将相应位的锁存器置1。实际应用中,由于上电复位后P3口锁存器自动置 1,就可以进入功能操作。
在某位不作为第二功能使用时,可作为第一功能I/O口使用。
引脚的输入有两个缓冲器,第一功能的输入通过BUF2获取,第二功能的输入通过BUF3获取。
(3)P0口作通用I/O口时,应注意什么问题?
答:当P0口作通用I/O口时,需要在片外接上拉电阻。 (4)并行I/O口在什么情况下为准双向口?为什么? 答:如果一个并行I/O口作为通用I/O口使用时为准双向口,因为此时I/O口的输出只有高、低两状态,没有高阻态,且读入数据时需先对I/O口置1。 (5)单片机对口进行读操作时,何时读锁存器?何时读引脚? 答:如果单片机对口进行的读操作是“读-修改-写”则为读锁存器,其它读操作为读引脚。 (6)试比较: MOV A,P1;MOV P1,A;ANL P1,A指令操作过程有何不同? 答:MOV A,P1为读引脚操作;MOV P1,A为写端口操作,ANL P1,A为读锁存器操作。
(7)80C51中断向量地址是怎样分配的? 答:
中断源 外部中断0(INT0) 定时器0(T0)中断 外部中断1(INT1) 定时器1(T1)中断 串行口中断 发送中断 接收中断 向量地址 0003H 000BH 0013H 001BH 0023H (8)80C51共有几个中断源?它们对中断请求是如何控制的?
答:中断源是向CPU发出中断请求的来源,80C51共有6个中断源:2个外部中断源、2个定时器/计数器溢出中断以及2个串行中断。
中断源申请中断时,要将相应的中断请求标志置位。CPU查询到这些有效标志位,便响应中断。单片机转入中断服务程序时,这些中断请求标志有的是由片内硬件自动清除,有的是由用户软件清除。中断控制主要包括中断请求触发方式的选择,中断是否允许以及中断优先级的确定等。
(9)TCON中,哪些位用来表示中断标志、中断信号方式和启动定时器?
答:TCON中的中断标志位有:TF1、TF0、IE1、IE0;中断信号方式位有:IT1、IT0;启动定时器位有:TR1、TR0。
(10)SCON寄存器反映中断状态标志的是哪些位? 答:SCON寄存器反映中断状态标志的是:TI、RI。
(11)什么是中断优先级?中断优先级处理的原则是什么?
答:80C51单片机具有高、低两个中断优先级。各中断源的优先级由IP寄存器有关位设定。设定为1时为高优先级;设定为0时为低优先级。中断优先级是为中断嵌套服务的。
80C51单片机中断优先级的控制原则是:
①低优先级中断请求不能打断高优先级的中断服务,但高优先级的中断请求可以打断低优先级的中断服务。
②如果一个中断请求已被响应,则同级的中断响应将被禁止,即同级的中断不能相互打断。
③如果同级的多个中断请求同时出现,则由单片机内部硬件直接查询,按自然响应顺序确定执行哪一个中断。
(12)对于外部中断方式,怎样进行有关控制器的初始化?
答:IT0(或IT1)=1时,INT0 (或INT1)信号为脉冲触发方式,脉冲负跳变有效;IT0(或IT1)=0时,INT0 (或INT1)信号为电平触发方式,低电平有效。