单片机原理及接口技术答案

更新时间:2024-05-22 07:48:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

章3 80C51的指令系统

1.答:执行时间短。1个机器周期指令有64条,2个机器周期指令有45条,而4个机器周期指令仅有2条(即乘法和除法指令);

指令编码字节少。单字节的指令有49条,双字节的指令有45条,三字节的指令仅有17条; 位操作指令丰富。这是80C51单片机面向控制特点的重要保证。

2.答:80C51单片机的寻址方式有七种。即:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。 这些寻址方式所对应的寄存器和存储空间如下表所示。 序号 1 2 3 4 5 6 7 寻址方式 寄存器寻址 直接寻址 寄存器间接寻址 立即寻址 变址寻址 相对寻址 位寻址 寄存器或存储空间 寄存器R0~R7,A、AB、DPTR和C(布尔累加器) 片内RAM低128字节、SFR 片内RAM(@R0,@R1,SP) 片外RAM(@R0,@R1,@DPTR) ROM ROM(@A+DPTR,@A+PC) ROM(PC当前值的+127~-128字节) 可寻址位(内部RAM20H~2FH单元的位和部分SFR的位) 3.答:直接寻址和位寻址方式。

4.答:直接寻址、寄存器间接寻址和位寻址方式。 5.答:寄存器间接寻址。

6.答:立即寻址、变址寻址和相对寻址方式。

7.答:单片机指令系统中的布尔指令集、存储器中的位地址空间与CPU中的位操作构成了片内的布尔功能系统,它可对位(bit)变量进行布尔处理,如置位、清零、求补、测试转移及逻辑“与”、“或”等操作。在实现位操作时,借用了程序状态标志器(PSW)中的进位标志Cy作为位操作的“累加器”。 8.寄存器间接寻址方式。

9. (1)MOV A,#88H----------------74H, 88H (2)MOV R3,50H----------------ABH,50H (3)MOV P1,#55H----------75H,90H,55H (4)ADD A,@R1---------------------27H (5)SETB 12H----------------------D2H,12H 10.答: (1)MOV A,R0 MOV R1,A (2)MOV R2,60H (3)MOV DPTR,#1000H MOVX A,@DPTR MOV 60H,A (4)MOV DPTR,#1000H MOVX A,@DPTR MOV R2,A

(5)MOV DPTR,#1000H MOVX A,@DPTR

MOV DPTR,#2000H MOVX @DPTR, A 11.答:(R1)=7FH (A)=60H (30H)=08H (40H)=60H 12.答:(1)(A)=2CH (2)(40H)=0CH

(3)(A)=22H,(CY)=1,(AC)=1,(OV)=0 (4)(A)=8EH (5)(20H)=0EH,P=1 (6)(A)=EFH,(20)=08H

13.答:(A)=3BH,(R0)=40H,(40H)=00H,(41H)=3BH,(42H)=3BH。 14.答:(1)SETB ACC.0 (2)ANL A,#0FH (3)ANL A,#87H 15.答:MOV 2FH,20H MOV 2EH,21H

MOV 2DH,22H 16.答:CLR CY MOV 30H,#7FH MOV 31H,#4DH MOV R0,#31H MOV A,@R0 SUBB A,#4E

MOV @R0,A ;保存低字节相减结果 DEC R0 MOV A,@R0 SUBB A,#2BH

MOV @R0,A ;保存高字节相减结果

17.答:MOV A,R2 ANL A,#0F0H ORL R1,A 18.答:MOV A,20H MOV B,21H MUL AB MOV R3,A MOV R2,B

19.答:(CY)=1,(P1)=10111011B,(P3)=00111100B

章4 80C51的汇编语言程序设计

1.答:汇编语言结构紧凑、灵活,汇编成的目标程序效率高,具有占存储空间少、运行速度快、实时

性强等优点。它是面向机器的语言,对于单片机硬件的操作直接、方便,有利于初学者对单片机结构的认知。

但它与高级语言相比移植性不好、编程复杂、对编程人员的基础要求高。 2.答:一、任务分析

首先,要对单片机应用系统的设计目标进行深入分析,明确系统设计任务:功能要求和技术指标。然后对系统的运行环境进行调研。这是应用系统程序设计的基础和条件。

二、算法设计

经过任务分析和环境调研后,已经明确的功能要求和技术指标可以用数学方法(或模型)来描述,进而把一个实际的系统要求转化成由计算机进行处理的算法。并对各种算法进行分析比较,并进行合理的优化。

三、流程描述

程序的总体构建。先要确定程序结构和数据形式,资源分配和参数计算等。然后根据程序运行的过程,规划程序执行的逻辑顺序,用图形符号将程序流程绘制在平面图上。应用程序的功能通常可以分为若干部分,用流程图将具有一定功能的各部分有机地联系起来。

流程图可以分为总流程图和局部流程图。总流程图侧重反映程序的逻辑结构和各程序模块之间的相互关系;局部流程图反映程序模块的具体实施细节。

3.答:顺序程序:无分支、无循环结构的程序,其执行流程是依指令在存储器中的存放顺序进行的; 分支程序:可以改变程序的执行顺序;

循环程序:按某种控制规律重复执行的程序,控制一部分指令重复执行若干次,以便用简短的程序完成大量的处理任务。

4.答:利用累加器或寄存器; 利用存储器; 利用堆栈。

5.答:伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。常用的伪指令包括: ORG,功能是向汇编程序说明下面紧接的程序段或数据段存放的起始地址; END,功能是结束汇编;

DB,功能是从标号指定的地址单元开始,在程序存储器中定义字节数据; DW,功能是从标号指定的地址单元开始,在程序存储器中定义字数据空间; EQU,功能是将表达式的值或特定的某个汇编符号定义为一个指定的符号名; BIT,功能是将位地址赋给指定的符号名。 6.答:程序如下:

ORG 0000H MOV R0,#21H MOV R1,#23H MOV A,@R0 ADD A,@R1 MOV 25H,A DEC R0 DEC R1 MOV A,@R0 ADDC A,@R1 MOV 24H,A SJMP $ END

7.答:ORG 0000H MOV DPTR,#1000H MOV R0,#30H MOV R7,#32 LOOP:MOVX A,@DPTR MOV @R0,A INC R0 INC DPTR DJNZ R7,LOOP RET 8.答:ORG 0000H

MOV A,R1 ADD A,R7 MOV 61H,A MOV A,R0 ADDC A,R6 MOV 60H,A SJMP $ END

9.答:延时时间: 2μs*{[1+((1+2*250+2)*246)+2]+2}=0.247486秒(含调用指令2个机器周期)

10.答: ORG 0000H BIG DATA 2FH ONE DATA 2AH TWO DATA 2BH

START:MOV R7,#7 ;比较次数 MOV R0,#30H LOOP:MOV A,@R0 MOV ONE,A INC R0 MOV TWO,@R0 CLR C SUBB A,@R0

JC NEXT ;ONE小,TWO大继续比下一对数 MOV @R0,ONE ;ONE大放后面(交换) DEC R0 MOV @R0,TWO ;TWO小放前面 INC R0 ; NEXT:DJNZ R7,LOOP MOV BIG,37H SJMP $ END

11.答:单字节二进制数转换为压缩的BCD码仅需要2个字节;在将压缩的BCD码拆分存于3个单元。 org 0

MOV 52H,#0 MOV 51H,#0 MOV 50H,#0 MOV A,#0FDh LCALL DCDTH SJMP $

DCDTH:MOV R7,#8

MOV R0,A ;暂存于R0 LOOP:CLR C MOV A,R0 RLC A MOV R0,A MOV R1,#51H;

MOV A,@R1 ; ADDC A,@R1 ; DA A ; MOV @R1,A ; DEC R1 MOV A,@R1 ADDC A,@R1 DA A MOV @R1,A DJNZ R7,LOOP

INC R1 ;50H已是结果,R1指向51H,51H单元需拆分 MOV A,#00H XCHD A,@R1 MOV 52H,A MOV A,@R1 SWAP A

MOV @R1,A RET END 12.答: ORG 0 MOV R1,#5BH MOV A,R1 ANL A,#0F0H SWAP A ACALL ASCII MOV R3,A MOV A,R1 ANL A, #0FH ACALL ASCII

MOV R4, A SJMP $ ASCII:PUSH ACC CLR C SUBB A, #0AH POP ACC JC LOOP ADD A, #07H LOOP: ADD A, #30H RET END

13.答:ORG 0000H MOV R7,#10 MOV R0,#50H MOV B,#10 CLR C CLR A LOOP:ADDC A,@R0 INC R0 DJNZ R7,LOOP DIV AB MOV 5AH,A SJMP $ END

14.答:实现程序如下: TEMP EQU 30H ORG 0000H JMP START ORG 0100H START:MOV SP,#5FH

MOV P0,#8CH ; MOV P3,#0FFH ; CLR CY NOKEY:MOV A,P3 CPL A

JZ NOKEY ; MOV TEMP,P3 ; CALL D10ms MOV A,P3

CJNE A,TEMP,NOKEY ; MOV R2,#0 ; MOV A,TEMP LP:RRC A JNC DONE

正序显示\ 输入方式 无键按下 有键按下 去抖动 键号计数器复位 INC R2 SJMP LP DONE:MOV A,R2 MOV DPTR,#CODE_P0 MOVC A,@A+DPTR MOV P0,A JMP NOKEY

D10ms:MOV R5,#10 ;10MS D1ms:MOV R4,#249 DL:NOP NOP

DJNZ R4,DL

DJNZ R5,D1ms RET CODE_P0:

DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH END

章5 80C51的中断系统及定时/计数器

1.答:5个中断源,分别为外中断和、T0和T1溢出中断、串口中断。

电平方式触发的外中断标志与引脚信号一致;边沿方式触发的外中断响应中断后由硬件自动复位。 T0和T1,CPU响应中断时,由硬件自动复位。 RI和TI,由硬件置位。必须由软件复位。

另外,所有能产生中断的标志位均可由软件置位或复位。

各中断入口地址:―0003H,T0—000BH,—0013H,T1—001BH,RI和TI—0023H。 2.答:将3个中断信号经电阻线或,接。

ORG 0000H LJMP MAIN ORG 00013H LJMP ZDFZ ORG 0040H MAIN:SETB EA SETB EX1 SJMP $

0RG 0200H ZDFZ:PUSH PSW PUSH ACC JB P1.0,DV0 JB P1.1,DV1 JB P1.2,DV2 INRET:POP ACC POP PSW

RETI

ORG 2000H DV0:------------

JMP INRET ORG 2100H DV1:------------ JMP INRET ORG 2200H DV2:------------

JMP INRET

3答:当IT0=0时,为电平触发方式。电平触发方式时,CPU在每个机器周期的S5P2采样引脚电平,当采样到低电平时,置IE0=1向CPU请求中断;采样到高电平时,将IE0清0。在电平触发方式下,CPU响应中断时,不能自动清除IE0标志。

电平触发方式时,外部中断源的有效低电平必须保持到请求获得响应时为止,不然就会漏掉;在中断服务结束之前,中断源的有效的低电平必须撤除,否则中断返回之后将再次产生中断。该方式适合于外部中断输入为低电平,且在中断服务程序中能清除外部中断请求源的情况。

当IT0=1时,为边沿触发方式。边沿触发方式时,CPU在每个机器周期的S5P2采样引脚电平,如果在连续的两个机器周期检测到引脚由高电平变为低电平,即第一个周期采样到=1,第二个周期采样到=0,则置IE0=1,产生中断请求。在边沿触发方式下,CPU响应中断时,能由硬件自动清除IE0标志。

边沿触发方式时,在相继两次采样中,先采样到外部中断输入为高电平,下一个周期采样到为低电平,则在IE0或IE1中将锁存一个逻辑1。若CPU暂时不能响应,中断申请标志也不会丢失,直到CPU响应此中断时才清0。另外,为了保证下降沿能够被可靠地采样到,和引脚上的负脉冲宽度至少要保持一个机器周期(若晶振频率为12MHz,为1微秒)。边沿触发方式适合于以负脉冲形式输入的外部中断请求。

4.答:定时/计数器实质是加1计数器。

不同点:设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值乘以机器周期就是定时时间。设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。

相同点:它们的工作原理相同,它们都有4种工作方式,由TMOD中的M1M0设定,即 方式0:13位计数器; 方式1:16位计数器;

方式2:具有自动重装初值功能的8位计数器; 方式3:T0分为两个独立的8位计数器,T1停止工作。

5.答:方式0位13位计数器,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。

计数初值计算的公式为: X=213-N

方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。计数个数与计数初值的关系为:

X=216-N

方式2为自动重装初值的8位计数方式。TH0为8位初值寄存器。当TL0计满溢出时,由硬件使TF0置1,向CPU发出中断请求,并将TH0中的计数初值自动送入TL0。TL0从初值重新进行加1计数。周而复始,直至TR0=0才会停止。计数个数与计数初值的关系为:

X=28-N

方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。方式3时,T0分成为两个独立的8位计数器TL0和TH0,TL0使用T0的所有控制位。当TL0计数溢出时,由硬件使TF0置1,向CPU发出中断请求。而TH0固定为定时方式(不能进行外部计数),并且借用了T1的控制位TR1、TF1。因此,TH0的启、停受TR1控制,TH0的溢出将置位TF1。

6答:TMOD中GATE的值不同:完全由TR1、TR0确定时GATE为0;完全由、高低电平控制时GATE为1。

7.答:T0用作方式3时,T1可以工作在方式0、1和2。T1的开启由TR1控制,即TR1=1时,T1开始工作;TR1=0时或者定时/计数器工作在方式3时,T1停止工作。

8.答:采用定时20ms,然后再计数1、49次的方法实现。

a、T0工作在定时方式1时,控制字TMOD配置:

M1M0=01,GATE=0,C/=0,可取方式控制字为01H;

b、计算计数初值X:

晶振为12 MHz,所以机器周期Tcy为1。 N=t/ Tcy=20×10-3/1×10-6=20000

X=216-N=65536-20000=45536=4E20H

即应将4EH送入TH1中,20H送入TL1中。

c、实现程序如下: ORG 0000H

AJMP MAIN ;跳转到主程序

ORG 0030H

MAIN:MOV TMOD,#01H ;设T1工作于方式2 MOV TH0,# 4EH ;装入循环计数初值 MOV TL0,#20H ;首次计数值 LP0:SETB P1.0 ACALL NT0 CLR P1.0

MOV R7,#49 ;计数49次 LP1:ACALL NT0 DJNZ R7,LP1 AJMP LP0 NT0:MOV TH0,# 4EH MOV TL0,#20H SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET END 9.答:采用T0实现

a、T0工作在定时方式1时,控制字TMOD配置:

M1M0=01,GATE=0,C/=0,可取方式控制字为01H;

b、计算计数初值X:

晶振为12 MHz,所以机器周期Tcy为1。1/1000=1×10-3 N=t/ Tcy=0.5×10-3/1×10-6=500

X=216-N=65536-500=65036=FE0CH

即应将FEH送入TH0中,0CH送入TL0中。

c、实现程序如下: ORG 0000H

AJMP MAIN ;跳转到主程序 ORG 000BH ;T0的中断入口地址 LJMP DVT0 ORG 0030H

MAIN:MOV TMOD,#01H ;设T0工作于方式2 MOV TH0,#0FEH ;装入循环计数初值 MOV TL0,#0CH ;首次计数值 SETB ET0 ;T0开中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 SJMP $ ;等待中断 DVT0:CPL P1.1 MOV TH0,#0FEH MOV TL0,#0CH SETB TR0 RETI

END

10.答:a、T1工作在计数方式2时,控制字TMOD配置: M1M0=10,GATE=0,C/=1,可取方式控制字为60H; T1工作在定时方式1时,控制字TMOD配置:

M1M0=01,GATE=0,C/=0,可取方式控制字为10H;

b、计算初值X: 定时10ms时:

晶振为12 MHz,所以机器周期Tcy为1。 N=t/ Tcy=10×10-3/1×10-6=10000

X=216-N=65536-10000=55536=D8F0H

即应将D8H送入TH1中,F0H送入TL1中。 计数100时:

N=100

X=28-N=256-100=156=9CH c、实现程序如下: ORG 0000H

AJMP MAIN ;跳转到主程序 ORG 001BH ;T1的中断入口地址 LJMP DVT1 ORG 0030H

MAIN:MOV TMOD,#60H ;T1工作于计数方式2 MOV TH1,#9CH ;装入计数初值 MOV TL1,#9CH ; CLR P1.7

SETB ET1 ;T1开中断 SETB EA ;CPU开中断 SETB TR1 ;启动T1 SJMP $ ;等待中断

DVT1:SETB P1.7 CLR ET1 CLR TR1

本文来源:https://www.bwwdw.com/article/cnv7.html

Top