在单片机上z=方程5x 3y 44的程序怎么写

当前位置: >> 单片机 课后答案(赵晓安主编) 1-1 请写出下列各十进制数在八位微型机中的原码、反码和补码形式: (1)X=十48 (2)X=+123 (3)X=-34 (4)X=-115真值 X +48 +123 -34 原码 30H 7BH 反码 30H 7BH 补码 30H 7BH 0DEHA2 0DDH H-115
F3H 8CH8DH1-2 将下列数看作八位微型机中带符号数的原码、反码和补码时,写出相应的真值: (1)B (2)B (3)B (4)B原码 真值 X 反码 真值 X 补码 真值 X 000101B -36H=-54 +45H=+69 B -72H=-114 B -0DH=-13 B -0EH=-14 B -2DH=-45 B -52H=-82 B -53H=-83000101B -49H=-73 +45H=+69000101B -4AH=-74 +45H=+691-3写出下列各数的 BCD 码: (1)47 ---47H B(2)78 --78H --115HB 01B(3)1996 --1996H01 0110B (4)1151-4用十六进制形式写出下列字符的 ASCll 码:无校验 ASCll 码 1BH 奇校验 ASCll 码 9BH 偶校验 ASCll 码 1BH字符串 (1)ESC (2)STUDENT53H 54H 55H 44H 45H 0D3H 54H 0D5H 0C4H 53H 0D4H 55H 44H 4EH 54H 45H 0CEH 54H 0C5H 4EH 0D4H(3)X1AB9658H 31H 41H 42H 39H 58H 31H 0C1H 0C2H 0D8H 0B1H 41H 42H 36H 0B9H 0B6H 39H 36H(4)COMPUTER 43H 4FH 4DH 50H 55H 43H 4FH 0CDH 0D0H 0C3H 0CFH 4DH 50H 54H 45H 52H 0D5H 54H 45H 52H 55H 0D2H 0D4H 0C5H1-5 将下列数据进行加法和减法运算,写在前面的数为被加数或被减数(写出竖式) 。 (1)97H 和 OFH (2)0A6H 和33H (3)0F3H 和0F4H (4)0B6H 和0EDH 一、加法 (1)97H 和 OFH 被加数 加数 + 和 1 0 C8=0 ,C7=0 分析: 无符号数: CY=0, 97H+0FH=0A6H=166 ∵151+15=166 1 0 0 1 1 0 B =A6H 1 0 0 0 0 1 0 0 0 1 1 1 1 1 1 B 1 B =97H =0FH0V =0 ,CY =0带符号数: OV=0, 97H+0FH=0A6H 真值=-5AH=-90 ∵-69H+15=-105+15=-90 (2)0A6H 和33H 被加数 加数 + 和 1 1 C8=0 ,C7=0 分析: 无符号数: CY=0, A6H+33H=0D9H=217 ∵166+51=217 带符号数: OV=0, A6H+33H=0D9H 真值=-27H=-39 ∵-5AH+51=-90+51=-39 0 1 1 0 0 1 B =F9H 1 0 0 0 1 0 0 1 1 0 1 1 0 1 0 B 1 B =A6H =33H0V =0 ,CY =0(3)0F3H 和0F4H 被加数 加数 + 和 1 1 1 1 0 0 1 1 1 B =E7H 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 B 0 B =F3H =F4HC8=1 ,C7=1 分析:0V =0 ,CY =1无符号数: CY=1, F3H+F4H=100H+0E7H=1E7H=487∵243+244=487带符号数: OV=0, F3H+F4H=0E7H 真值=-19H=-25 ∵-13+(-12)= -25(4)0B6H 和0EDH 被加数 加数 + 和 1 1 0 1 0 0 0 1 1 B =A3H 1 0 1 1 1 1 0 1 0 1 1 1 1 0 0 B 1 B =B6H =EDH C8=1,C7=1 分析:0V =0 ,CY =1无符号数: CY=1,B6H+EDH=100H+0A3H=1A3H ∵182+237=419 带符号数: OV=0, B6H+EDH=0A3H 真值=-5DH=-93 ∵-4AH-13H=-74-19=-93二、减法: (1)97H 和 OFH 被减数 B - 减数 B求补B 取反+ + 进1加1B 位 差 分析: B无:CY=/C8=/1=0,∵97H-0FH=88H, 151-15=136 带:C8=1,C7=1 OV=0, ∵97H-0FH=88H, 真值=-78H=-120 ∴ -105-15=-120(2)0A6H 和33H 被减数 B - 减数 B求补B 取反 + 1 加1 + 差1100011B 分析:无:CY=/C8=/1=0,∵0A6H-33H=73H, 166-51=115 带:C8=1,C7=0,OV=1, ∵0A6H-33H=63H, OVER ∴ -90-51=-141&-128(3)0F3H 和0F4H被减数 B - 减数 B求补B 取反 + + 差 1 加1111111B 分析:无:CY=/C8=/0=1,∵0F3H-0F4H=-100H+0FFH=-1 带:C8=0,C7=0,OV=0, ∵0F3H-0F4H=0FFH, 真值=-(00H-0FFH)=-1(4)0B6H 和0EDH被减数 B - 减数 B求补B 取反 + 1 加1 + 差001001B 分析:无:CY=/C8=/0=1,∵0B6H-0EDH=-100H+0C9H=-37H=-55 带:C8=0,C7=0,OV=0, ∵0B6H-0EDH=0C9H, 真值=-(00H-0C9H)=-37H=-551-6完成下列数据的乘除运算,写在前面的数为被乘数或被除数(写出竖式) 。 (1)1100B 和1101B被乘数 乘数 ×1 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 1 1 0 0 + 1 1 0 0 1 0 0 1 1 1 0 0B B乘积B(2)ll0ll0llB 和B被乘数 乘数 ×1 1 0 1 1 0 1 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1B B 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 乘积 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 B(1)1100B 和1101B0 .1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 0 0 0(2)ll0ll0llB 和B1 1 1 0 1 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 0 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0.011110 0 1 1 0 0 1 1 00 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 0 1 1 0 0 0 1 11-7 将下列数据分别进行逻辑乘、逻辑加和逻辑异或运算(写出竖式) 。 (1)33H 和0BBH 0 0 1 0 ∧ 0 01 1 0 1 1 10 1 0 11 B 1 B=33H =BBH1 1 00 11 B=33H0 0 1 0 ∨ 1 01 1 0 1 1 10 1 0 11 B 1 B=33H =BBH1 1 10 11 B=BBH0 0 1 0 ∨ 1 01 1 0 1 1 10 1 0 11 B 1 B=33H =BBH0 0 10 00 B=88H(2)0ABH 和7FH1 0 0 1 ∧ 0 01 0 1 1 1 10 1 1 11 B 1 B=ABH =7FH1 0 10 11 B=2BH1 0 0 1 ∨ 1 11 0 1 1 1 10 1 1 11 B 1 B=ABH =7FH1 1 11 11 B=FFH1 0 0 1 ∨ 1 11 0 1 1 1 10 1 1 11 B 1 B=ABH =7FH0 1 01 00 B=D4H(3)0CDH 和80H1 10 0 11 01 B=CDH 1 0 ∧ 1 00 0 0000 B=80H0 0 00 00 B=80H1 1 1 0 ∨ 1 10 0 1 0 0 01 0 001 B 0 B=CDH =80H0 0 11 01 B=CDH11 0 0 1 1 00 1 B=CDH∨1 0 0 0 0 00 0 B =80H 1 0 0 1 1 0 1 B =4DH(4)78H 和 OFH 0 1 0 0 ∧ 0 0 0 0 1 0 0 0 B =08H 1 1 1 0 0 1 0 0 1 1 0 B 1 B =78H =0FH0 1 0 0 ∨ 0 11 1 1 0 0 10 0 1 10 B 1 B=78H =0FH1 1 11 11 B=7FH0 1 0 0 ∨ 0 11 1 1 0 0 10 0 1 10 B 1 B=78H =0FH1 1 01 11 B=77H1-8 把下列各数按补码运算规则求出 X+Y 的补码及其真值: (1)X=十48 Y=十38 被加数 加数 + 和0 0 0 01 1 0 1 0 00 0 1 10 B 0 B[X]补=30H [Y]补=26H0 10 1 01 10 B=56HC8=0,C7=00V =0 真值=+56H=+86∵[X]补+[Y]补=[X+Y]补=56 H(2)X=+123Y=―49被加数 加数 + 和0 1 1 11 1 1 0 0 10 1 1 11 B 1B[X]补=7DH [Y]补=CFH1 0 10 0 10 10 B=4AHC8=1,C7=1,0V=0 ∵[X]补+[Y]补=[X+Y]补=4A H 真值=+4AH=+74(3)X=-34Y=+87被加数 加数 + 和1 1 0 10 1 1 0 1 01 1 1 10 B 1 B[X]补=DEH [Y]补=57H1 0 01 1 01 01 B=35HC8=1,C7=10V =0∵[X]补+[Y]补=[X+Y]补=35 H真值=+35H=+53(4)X=-115 Y=-15被加数 加数 + 和1 0 1 10 0 1 1 1 01 0 0 01 B 1 B[X]补=8DH [Y]补=F1H1 0 11 1 11 10 B=7EH C8=1,C7=00V =1∵[X]补+[Y]补=7EH≠[X+Y]补负溢出第二章习题答案 2-2 8051单片机内部包含哪些主要逻辑部件?各自的功能是什么? 答:8051单片机内部包含: 1、 中央处理器 CPU:它是单片机内部的核心部件,决定了单片机的主要功能特性, 由运算器和控制器两大部分组成。 2、 存储器:8051单片机在系统结构上采用了哈佛型,将程序和数据分别存放在两个 存储器内,一个称为程序存储器,另一个为数据存储器。在物理结构上分程序存储器和数据 存储器,有四个物理上相互独立的存储空间,即片内 ROM 和片外 ROM,片内 RAM 和片外 RAM。 3、 定时器/计数器(T/C) :8051单片机内有两个16位的定时器/计数器,每个 T/C 既 可以设置成计数方式,也可以设置成定时方式,并以其定时计数结果对计算机进行控制。 4、 出。 并行 I/O 口:8051有四个8位并行 I/O 接口(P0~P3),以实现数据的并行输入输5、 串行口:8051单片机有一个全双工的串行口,可实现单片机和单片机或其他设备 间的串行通信。 6、 中断控制系统:8051共有5个中断源,非为高级和低级两个级别。它可以接收外 部中断申请、定时器/计数器申请和串行口申请,常用于实时控制、故障自动处理、计算机 与外设间传送数据及人机对话等。 2-3 8051单片机的存储器分哪几个空间?通过什么信号来区别不同空间的寻址? 答:有四个物理上相互独立的存储空间:片内 ROM 地址为0000H-0FFFH 此时/EA=1;片外 ROM 地址为0000H-0FFFFH 此时/EA=0。片内数据存储器地址为00H-0FFH;片外数据存储 器地址为0000H-0FFFFH;区分片内片外数据存储器通过指令 MOV 与 MOVX。 2-6 内部 RAM 低128单元划分为哪三个主要部分?各部分主要功能是什么? 答:分为三部分:工作寄存器去,位寻址区,用户 RAM 区(堆栈、数据缓冲) 。 工作寄存器区(00H-1FH) :32个 RAM 单元共分四组,每组8个寄存单元(R0-R7) 。寄 存器常用于存放操作数及中间结果等。位寻址区(20H-2FH) :此部分16个单元的每一位都 有一个8位表示的位地址,位寻址取得每一个单元既可作为一般 RAM 单元使用,进行字节 操作,也可以对单元中的每一位进行位操作。用户 RAM 区:也是数据缓冲区,一般用于存 放用户数据及作堆栈区使用。 第三章习题答案 3-1 MCS-51的寻址方式及特点 MCS-51的寻址方式有七种: 1.直接寻址:指令中直接给出操作数所在的单元地址或位地址 P68 2.立即寻址:在指令中紧跟在操作码之后的字节是操作数 3.寄存器寻址:操作数在指令中给出的寄存器内 4.寄存器间接寻址:指令中指定的寄存器内存的是操作数的地址 5.变址寻址:指令中给出由基址加变址形成的16位地址作为操作数的地址 6.相对寻址:指令中给出相对偏移量,该相对偏移量与 PC 当前值求和得到转移地址 7.位寻址: 指令中给出的位地址或位寄存器里存是所寻的位操作数 3-2 MCS-51的指令按功能分类及各类的作用P69 P69 P70 P71 P72 P71MCS-51的指令按功能分5类: 1.数据传送指令:主要用于数据的传送与交换和栈操作。 P81 3.逻辑运算指令:主要用来作“与”、“或”、“异或”、“清除” “求反”及“左右移位”等逻辑运算。 P88 4.位操作指令:主要用来作 “与”、“或”、 “清除”、“置位” “求反”等布尔操作及“位传送” 操 作。 P90 5.控制转移指令:主要用于改变程序计数器 PC 的值, 以控制程序执行的走向,有转移、调 用及返回操作.P91 3-3 变址寻址和相对寻址中偏移量的异同点 变址寻址 :@A+DPTR @A+PC ;基址:DPTR, ;基址:PC 当前值, 变址:A 变址:A P742. 算 术 运 算 指 令 : 主 要 用 来 作 算 术 四 则 运 算 、 增 量 、 减 量 及 二 ― 十 进 制 调 整 。变址:A 中为8位二进制无符号数偏移量(A)∈[0,255] 即[00H,0FFH] 相对寻址: 相对偏移量为8位二进制带符号数的补码 rel ∈[-128,+127] [rel]补码∈[00H,0FFH] 相同点:偏移量∈[00H,0FFH] 不同点:变址寻址 中偏移量为8位二进制无符号数; 相对寻址中偏移量为8位二进制带符号 数的补码 3-4 指出下面每条指令的寻址方式: MOV A,#30H C寄存器、立即C30H 立即数 MOV C,30H C寄存器、位 C30H 位地址MOVX A,@DPTR C寄存器、间接 jC LAB1 C相对 C直接、间接 C30H 字节地址MOV 30H,@R1MOV 30H,R5 C直接、寄存器 C30H 字节地址 MOVC A,@A+PC C寄存器、变址 sjmp LAB2C相对3-5 运行下列程序后各单元及 A、PSW 的内容(1) 1. MOV A,#2 MOV R1,#30H MOV @R1,A MOV 35H,R1 XCH A,R1 ;(A)=02 H ;(R1)=30H ;((R1))=(30H)=02 H ;(35H)=30H ;(A)=30H, (R1)= 02 H (psw) 00 01 2. MOV A,#0F5H MOV 30H,#9BH MOV R0,#30H ADD A,#28H ADDC A, @R0 3. CLR C MOV 40H,#7AH MOV A,#92H MOV R0,#40H SUBB A,@R0 4. MOV A,#79H MOV 30H,#89H ADD A,30H DA A SWAP A ;(A)=79H ;(30H)=89H ;(A)=02H ;(A)=68H ;(A)=86H 01 ;(CY)=0 ;(40H)=7AH ;(A)=92H ;(R0)=40H ;(A)=92H-7AH-0=18H, (PSW)=44H ;(A)=0F5H ;(30H)=9BH ;(R0)=30H ;(A)=1D H ;(A)=0B9H 003-6 写出能完成下列数据传送的指令 ⑴ R1内容传送到 R0 MOV A,R1; MOV R0,A(2)内部 RAM25H 单元内容送到 35H 单元 MOV 35H,25H 或 MOV A,25H ; MOV 35H,A ;MOV 35H,25H(3)内部 RAM25H 单元内容送到 P1口 ① MOV A,25H ; MOV P1,A ; ② ③MOV P1,25H MOV 90H,25H;(4)内部 RAM40H 单元内容送外部 RAM 2005H 单元 MOV A,40H;MOV DPTR,#2005H;MOVX @DPTR,A (5)外部 RAM3000H 单元内容送内部 RAM 25H 单元 MOV DPTR,#3000H; MOVX A,@DPTR;MOV 25H,A (6)外部 ROM1000H 单元内容送内部 RAM 35H 单元 MOV DPTR,#1000H; CLR A ;MOVC A,@A+DPTR;MOV 35H,A (7)外部 ROM4000H 单元内容送外部 RAM4000H 单元 MOV DPTR,#4000H; CLR A;MOVC A,@A+DPTR;MOVX @DPTR,A (8)外部 RAM 1000H 单元内容送 SP 堆栈指针 MOV DPTR,#1000H;MOVX A,@DPTR; MOV SP,A 3-7 BCD 码减法,求H=3797H。 算法1: ? ? 999AH-H H 并调整 ORG 0000H BCDS: MOV A,#9AH CLR C SUBB A,#57H MOV 30H,AMOV A,#99H SUBB A,#41H MOV 31H,A MOV A,#54H ADD A,30H DA A MOV 20H,A MOV A,#79HADDC A,31H DA A MOV 21H,A CPL C MOV 2FH,C SJMP $ END 循环程序 ORG 0000H BCDS1: MOV 20H,#54H MOV 21H,#79H MOV 30H,#57H MOV 31H,#41H MOV R0,#30H CLR C MOV A,#9AH SUBB A,@R0 MOV 40H,A INC R0 MOV A,#99H SUBB A,@R0 MOV 41H,A CLR C MOV R0,#40H MOV R1,#20H MOV R2,#2 LOOP: MOV A,@ R0 ADDC A,@R1 DA A MOV @R0,A INC R0 INC R1 DJNZ R2,LOOP CPL C MOV 7FH,C SJMP $ END3-7 顺序程序 ORG 0000H BCDS1:算法2MOV 20H,#54H MOV 21H,#79H MOV 30H,#57H MOV 31H,#41H MOV R0,#30H CLR C MOV A,#9AH SUBB A,@R0 ADD A,20H DA A ; ; ; CY)=0MOV 40H,A CPL C INC R0 MOV A,#9AH SUBB A,@R0 ADD DA A,21H A ;(CY)=0 ; ( CY)=1MOV 41H,A CPL C MOV 7FH,C SJMP $ END3-8写出下段程序中每一步 A、B 中的结果 MOV A,#22H MOV B,#05H MOV R0,#08H MUL AB MOV B,R0 DIV AB ;(A)=15H,(B)=02H ; (A)=0AAH,(B)=0 ;(A)=22H ; (B)=05H3-9 试写出完成如下操作的程序 (1) ORG 0000H MOV DPTR,#1000H MOVX A,@DPTR ANL A,#B MOVX @DPTR,A SJMP$(2) ORL 50H,#B (3) XRL 50H,#B (4) MOV 50H,#B (5) XRL 50H,#0FFH3-10 30H 开始的20个单元数据传送到外部3000H ORG 0000H MOV R0,#30H MOV DPTR,#3000H MOV R7,#20 Loop1: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,Loop1 SJMP $ END 3-11 根据 R3条件转移 ORG 0000H Cjne R3,#15,NEQ sjmp L1 NEQ: jnC L1 sjmp $ L1: nop . ORG 0000H Cjne R3,#15,NEQ sjmp Halt NEQ: jC L1 sjmp Halt L1: nop Halt: sjmp $ ;&15 ; ≥15 ;&15 ;=15 ;&15 ;&15 ;≥15 1 ORG 0000H Cjne R3,#15,NEQ sjmp L1 NEQ: jC L1 sjmp $ L1:≤15ORG 0000H Cjne R3,#15,NEQ sjmp Halt NEQ: jnC L1 sjmp Halt L1: nop Halt: sjmp $ ;&153-11 根据 R3条件转移2ORG 0000H CLR C MOV A,R3 SUBB A,#15 JNC …. (R3)-15 GE15 ;≥15ORG 0100H CLR C MOV A,R3 SUBB A,#15 JC …. (R3)-15 GE15 ;&15 ORG 0000H CLR C MOV A,#15 SUBB A,R3 JNC …. 15-(R3) GE15 ;≤15ORG 0000H CLR C MOV A,#15SUBB A,R3JC …. 15-(R3) GE15 ;>15 >3-12 已知(SP)=53H,(PC)=37FEH 执行: ACALL 3A00H 后:(SP)=(SP)+2=55H (PC)=3A00H ((SP-1))=(54H)=00H ;PCL ((SP))=(55H)=38H ;PCH37FEH: ACALL 3A00H 3800H:思考题与习题4及答案 第四章汇编语言程序设计 思考题与习题 及答案 4-13 试编程实现将20H 单元的两位 BCD 数相乘,结果以 BCD 码的形式存于21H 单元当 - 中。 4-13-1 ORG 0000HMOV 20H,#56H MOV A,20H ANL A,#0FH MOV B,A MOV A,20H ANL A,#0F0H SWAP A MOV R2,A DEC B LOOP: ADD A,R2 DA A DJNZ B,LOOP MOV 21H,A SJMP $ END 4-13-2 ORG 0000H MOV 20H,#56H MOV A,20H MOV R0,#21H MOV 21H,#0 XCHD A,@R0 MOV B,@R0 SWAP A MOV R2,A DEC B LOOP: ADD A,R2 DA A DJNZ B,LOOP MOV 21H,A SJMP $ END 4-7 设一个加数在50H~52H 单元中,另一个加数在53H~55H 中,进位存放在位地址00 - 中,试编程实现两数求和。 ORG 000H ONE TWO WEI DATA 50H DATA 53H BIT 00HMOV R0,#ONE MOV R1,#TWO ; MOV C,WEI CLR C MOV R2,#3 LOOP: MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R2,LOOP MOV WEI,C SJMP $ END 4-7-2 ORG 0000H ONE TWO WEI DATA 50H DATA 53H BIT 00HMOV R0,#ONE MOV R1,#TWO CLR C MOV R2,#3 SETB RS0 MOV R0,#58H CLR RS0 LOOP: MOV A,@R0 ADDC A,@R1 INC R0 INC R1 SETB RS0 MOV @R0,A INC R0 CLR RS0 DJNZ R2,LOOP MOV WEI,C SJMP $ END 4-11试用除法指令将20H 单元的两位 BCD 码变成 ASCII 码后存入21H 和22H 单元。 - ORG 0000H MOV 20H,#67H MOV A,20H MOV B,#10H DIV AB ADD A,#30H MOV 21H,A ORL B,#30H MOV 22H,B SJMP $ END 4-1从20H 单元开始存放一组带符号数,其数目已存在1FH 单元。要求统计出大于0、小于0 - 和等于0的个数并存于 ONE、TWO、THREE 三个单元。 ORG 0000H ONE TWO THREE EQU 30HEQU 31H EQU 32HNUM EQU 1FH MOV NUM,#0FH MOV R0,#20H;-1,2,34,0A0H,0.... MOV R1,#ONE LOOP: INC R1 CJNE R1,#34H,LOOP LOOP1: MOV A,@R0 JZ MTHREE JB ACC.7,MTWO INC ONE SJMP DJNZZ MTHREE: INC THREE SJMP DJNZZ MTWO: INC TWO DJNZZ: INC R0 DJNZ NUM,LOOP1;NUM=0FH SJMP $ END MOV @R1,#0 4-5在用 JMP 指令实现128分支的程序中,试用 LJMP 代替 AJMP 指令。修改后的程序有何 - 特点?最多能实现多少分支? 4-5 AJMP 指令表 128分支占128*2=256 字节 MEMORY LJMP 指令表 可以实现256/3=85 个分支 特点:各分支可在64KB 存储器中转移。4-2设自变量 X 为一无符号数, - 存放在内部 RAM 的 VAX 单元, 函数 Y 存放在 FUNC 单元, 请编出满足如下关系的程序:X Y= 2XX≥50 5X X<20 ORG 0000H 50>X≥20VAX FUNCEQU 30H EQU 31H MOV VAX,#55;15;20;25;50;55 MOV A,VAX CJNE A,#20,DO1DO1: JNC DO2 MOV B,#2 MUL AB SJMP MEM DO2: DO3: CJNE A,#50,DO3 JNC MEMMOV B,#5 MUL AB MEM: MOV FUNC,A SJMP $ ENDX 15 20 25 Y 2X=30=14H X 50 Y X=50=32H X=55=37H5X=100=64H 55 5X=125=7DH4-3外部 RAM 从2000H 到2100H 有一数据块,请编出将它们传送到外部 RAM3000H 到 - 3100H 区域的程序。 4-7 ORG 0000HMOV DPTR,#2000H MOV P2,#30H MOV R0,#00H MOV R2,#0 LOOP:MOVX A,@DPTR MOVX @R0,A INC DPTR INC R0 DJNZ R2,LOOP MOVX A,@DPTR INC P2 MOVX @R0,A SJMP $ END 4-4在内部 RAM 中,有一个以 BLOCK 为始址的数据块,块长在 LEN 单元。请用查表指 - 令编一程序,先检查它们若是16进制中的 A~F,则把它们变为 ASCⅡ码;若不是,则把它 们变为00H。 4-4 BLOCK EQU 31H LEN N EQU 30H EQU 30 ORG 0000H MOV R0,#BLOCK MOV LEN,#N MOV R2,LEN LOOP: MOV A,@R0 CJNE A,#0AH,DO1 DO1: JNC DO2 SJMP DO5 DO2: CJNE A,#0FH,DO3 SJMP DO4 DO3: DO5: JC DO4 MOV A,#0 ;0―FF--0 ;(DPTR)=2100H ;31HSJMP NEXT DO4: CLR CMOV DPTR,#TABSUBB A,#0AH MOVC A,@A+DPTR NEXT: INC R0 DJNZ R2,LOOP SJMP $ TAB: END DB 'A','B','C','D','E','F' MOV @R0,A4-6试编写一个子程序将字符串: - “MCS-51 Microcntrol”装入外部 RAM 8000H 开始的显示 缓冲区。 4-9ORG 0000H MOV DPTR,#TAB MOV P2,#80H MOV R0,#00H MOV R2,#19 LOOP: MOV A,#0MOVC A,@A+DPTR MOVX @R0,A INC R0 INC DPTR DJNZ R2,LOOP SJMP $ tab: END 4-10将内部 RAM 的 AAA 单元中8位无符号二进制数转换成用 BCD 码表示的十进制数。要 - ( 求用连续除10的方法实现) 4-10 ORG 0000H AAA DATA 0FFH ORG 1000H AAA EQU 0FFH DB 'MCS-51 Microcontrol'MOV A,#AAA MOV B,#0AH DIV AB MOV 30H,BMOV A,#AAA MOV R0,#30H MOV B,#0AH DIV AB MOV B,#0AH DIV AB MOV 31H,B MOV 32H,A SJMP $ ENDMOV @R0,B INC R0 JNZ LOOP SJMP $ END4-9求8个数的算数平均值 Y=(∑Xi)/8 (i=0,…7) - ORG 0000H MOV SP,#6FH CALL ZHISHU MOV R2,#0 ;QIU HEA MOV R3,#0 ;QIU HE B MOV R0,#30H MOV R4,#08 LOOP: MOV A,@R0JZ NEXT MOV B,#08H DIV AB ADD A,R2 MOV R2,A MOV A,B ADD A,R3 MOV R3,A NEXT: INC R0 DJNZ R4,LOOP MOV A,R3 MOV B,#08H DIV AB ADD A,R2 MOV R2,A MOV R3,B SJMP $ ZHISHU: MOV 30H,#0FFH MOV 31H,#0FFH MOV 32H,#0FFH MOV 33H,#0FFH MOV 34H,#0FFH MOV 35H,#0FFH MOV 36H,#0FFH MOV 37H,#0FFH MOV 38H,#0FEH;FH MOV 39H,#0FFH RET END 4-16设逻辑运算表达式为 - 其中变量 A、B、C 分别为 P1.0、P1.4、定时器溢出标志 TF1,D、E、F 分别为22H.2、 22H.3的位地址、外部中断标志 IF1,输出变量 Y 为 P1.5,请编写程序用软件方法实现上 述逻辑功能。 4-16-1 A1 B1 C1 D E F Y BIT P1.0 BIT P1.4 BIT TF1 BIT 22H.2 BIT 22H.3 BIT IE1 BIT P1.5 ORG 0000H MOV C,B1 ORL C,/C1 CPL C ANL C,A1 MOV F0,C MOV C,E ORL C,/F CPL C ANL C,D ORL C,F0 MOV Y,C SJMP $ END4-17 解:A-T 20个合法字符,散转程序设计。方法1:键盘键入 A-T 按 ASCII 码考虑,则有:字母 A B C D E F G H I JASCII 码 41H 42H 43H 44H 45H 46H 47H 48H 49H 4AH地址表中的偏移量 (41H-41H)*2=0 (42H-41H)*2=02H (43H-41H)*2=04H (44H-41H)*2=06H (45H-41H)*2=08H (46H-41H)*2=0AH (47H-41H)*2=0CH (48H-41H)*2=0EH (49H-41H)*2=10H (4AH-41H)*2=12H字母 K L M N O P Q R S TASCII 码 4BH 4CH 4DH 4EH 4FH 50H 51H 52H 53H 54H地址表中的偏移量 (4BH-41H)*2=14H (4CH-41H)*2=16H (4DH-41H)*2=18H (4EH-41H)*2=1AH (4FH-41H)*2=1CH (50H-41H)*2=1EH (51H-41H)*2=20H (52H-41H)*2=22H (53H-41H)*2=24H (54H-41H)*2=26H方法2:字母 A B C D E F G H I J 自定义 1H 2H 3H 4H 5H 6H 7H 8H 9H 0AH 地址表中的偏移量 (1H-1H)*2=0 (2H-1H)*2=02H (3H-1H)*2=04H (4H-1H)*2=06H (5H-1H)*2=08H (6H-1H)*2=0AH (7H-1H)*2=0CH (8H-1H)*2=0EH (9H-1H)*2=10H (0AH-1H)*2=12H 字母 K L M N O P Q R S T 自定义 0BH 0CH 0DH 0EH 0FH 10H 11H 12H 13H 14H 地址表中的偏移量 地址表中的偏移量 (0BH-01H)*2=14H (0CH-01H)*2=16H (0DH-01H)*2=18H (0EH-01H)*2=1AH (0FH-01H)*2=1CH (10H-01H)*2=1EH (11H-01H)*2=20H (12H-01H)*2=22H (13H-01H)*2=24H (14H-01H)*2=26H按方法1编程如下: ORG MAIN: 1000H ;方法2 #01HCJNE A,#41H,DO1 SJMP DO2 DO1: JC ERRCJNE A,#54H,DO3 ;方法2 #14H SJMP DO2 DO3: JNC ERRH)=38HDO2:CLR C ;方法2#01HSUBB A,#41H ADD A,ACCMOV DPTR,#ADDLAB MOV R2,A MOVC A,@A+DPTR MOV R3,A INC R2 MOV A,R2 MOVC A,@A+DPTR MOV DPL,A MOV DPH,R3 CLR AJMP @A+DPTR ADDLAB: DW AAAA,BBBB,CCCC,DDDD,EEEE,FFFF,GGGG,HHHH,IIII,JJJJ DW KKKK,LLLL,MMMM,NNNN,OOOO,PPPP,QQQQ,RRRR,SSSS,TTTT ERR: … … AAAA:… BBBB:… … TTTT:……注:程序中变址(A)&0FFH。第五章输入/输出和中断 第五章输入 输出和中断 部分习题参考答案 5-2什么叫 I/O 接口?I/O 接口的作用是什么? I/O 接口是计算机和外设进行数据交换的桥梁。 I/O 接口的作用: 锁存作用:防止由于 CPU 速度快,外设慢而产生的丢数现象 隔离作用:防止 DB 上的信息重叠 变换作用:在 CPU 与外设之间进行信息类型、电平、传送接收方式变换 联络作用:在 CPU 与外设之间进行联络,Ready Busy 5-3 I/O 端口有哪两种编址方式?各有什么特点? I/O 端口编址方式:统一编址、独立编址 统一编址:I/O 接口与内存储器采用一套地址,完全相存储器单元一样处理,使用访问存储 器的指令。如:movx 类指令。 独立编址:采用一套与存储器不同的地址,利用/MREQ(存储器请求)和/IORQ(输入输出 请求) CPU 有专门的 I/O 指令 如:IN, OUT 。 , 5-4 I/O 数据有哪四种传送方式? 无条件传送方式 条件传送方式(查询方式) 中断方式 存储器直接存取(DMA)方式 5-6 结合图5-17说明 DMA 传送的工作过程 外设向 DMAC 发 DMA 申请 DMAC 向 CPU 发 BUSRQ CPU 发 BUSAK 响应 DMAC 发存储器地址和读写信号 DMA 控制结束,恢复 CPU 对总线控制 5-13 中断允许寄存器 IE 各位的定义是什么?请写出允许定时器/计数器 T/C1溢出中断的指 令。 IE.8:EA,中断允许触发器 IE.4:ES,串行口中断允许位 IE.3:ET1, 定时器/计数器1中断允许位 IE.2:EX1,外部中断1允许位 IE.1:ET0, 定时器/计数器0中断允许位 IE.0:EX0, 外部中断1允许位 允许定时器/计数器 T/C1溢出中断的指令: Setb ET1 Setb EA Setb TR1 5-17 MCS-51的中断处理程序能否存储在64kB 程序存储器的任何区域?若可以,则如何实 现? 可以。 实现方法:在中断向量入口处,放一条长跳转指令,跳转到中断服务程序处。第六章习题参考答案 6-1 8051单片机内部有四个8位并行 I/O 口,命名为 P0、P1、P2、P3。这4个并行 I/O 口都可以 作准双向通用 I/O 口,即先执行一条指令 MOV P1,#0FFH。P0、P2和 P3口还有复用的第二 功能。每个口都包含一个(8位)锁存器(即特殊功能寄存器 P0~P3) ,一个输出驱动器, 和两个三态缓冲器。 P0口功能: 可作通用 I/O 口,是漏级开路的。因此必须外接上拉电阻,以保证“1”信号正常输出。 也可作为分时作为地址/数据总线使用。 P1口功能:可作通用 I/O 口,也是一个“准双向”口,作输入口时要先将输出驱动管截止。 P2口功能:可用作通用 I/O 口,与 P1口类似,也 可用作高8位地址总线。 P3口功能:可用作通用 I/O 口,另外,还有其第二功能。 6-2 “读锁存器”指令是 P0~P3作目的操作数的指令,能实现“读―修改―写”口锁存器的操作。 “读引脚”指令的特点是:P0~P3 作为源操作数出现在指令中,但在读引脚数据之前,必须 对所读的口或口位的 D 锁存器写入“1”。 要正确读引脚数据, 必须先写一条 MOV PX, #0FFH 指令或能对所读的口或口位的 D 锁存器写入“1”的指令,而后紧接着写指令。6-3 在单片机实时应用系统中,定时器/计数器有定时和对外部事件计数的功能,可用于定时控 制、延时、对外部事件检测和计数等场合.定时是对周期已知的脉冲信号计数。计数是对外 部发生事件进行计数,对周期未知的外来脉冲信号计数。采用可编程的定时器/计数器 可以方便灵活地修改定时或计数的参数或方式,与 CPU 并行工作,大大提高了 CPU 的工作 效 率。 6-4 MCS-51单片机内部有2个16位的可编程的定时器/计数器:定时器/计数器0(T/C0) ,定时器 /计数器1(T/C1) 。 定时方式下,T/C 计数8051内部机器周期信号的个数 ,由计数个数可以计算出定时时间。 每个机器周期使 T/C 的计数器增加1,直至计满回零后自动产生溢出中断请求,表示定时时 间到。 计数方式下,T/C 计数来自引脚 T0(P3.4)和 T1(P3.5)的外部脉冲信号的个数。输入脉冲由 1变0的下降沿时,计数器的值增加1直到回零产生溢出中断,表示计数已达预期个数。 6-5 MCS-51单片机的定时器/计数器共有四种工作方式:方式0、1、2、3。 方式0是高8位和低5位的一个13位计数器的运行方式。 TL1的低5 位溢出时, TH1进位, 当 向 而 TH1溢出(回零)时向 TF1标志进位(硬件置位 TF1) ,并申请中断。还可以通过查询 TF1 是否置位来判断 TH1是否回零溢出。 方式1是一个16为定时器/计数器,结构几乎与方式0完全一样,唯一的差别是方式1中的 TH1(TH0)和 TL1(TL0)均是8位的,构成16位计数器。 方式2中,T/C 被拆成一个8位的寄存器 TH1(TH0)和一个8位计数器 TL1(TL0) ,两者构 成可以自动重装载的8位 T/C。 每当它计满回零时,一方面向 CPU 发出溢出中断请求, 另一方面从 TH1(或 TH0)中重新获得初值并启动计数;也就是 CPU 自动将 TH1(或 TH0) 中存放的初值重新装回到 TL1(或 TL0) ,并在此初值的基础上对 TL1(或 TL0)开始新一 轮计数,周而复始,直到下停止计数或更改工作方式命令为止。方式3下 T/C0和 T/C1功能就不同了。此时,TH0和 TL0按两个独立的8位计数器工作, T/C1 只能按不中断的方式工作, 常常利用它的定时功能作串行口波特率发生器。 T/C0方式3时,TL0 占用了 T/C0的 C/T、GATE、TR0、TF0、T0(P3.4)和 INT0控制引脚 。TH0只有简单的内 部定时功能,它占用了 T/C1的 TR1控制位和 TF1中断标志位,其启动/关闭仅受 TR1控制。 6-6 定时器/计数器用做定时时,定时时间与时钟的振荡频率和定时器/计数器的设定初值有 关。用做计数时,最高输入信号频率为振荡频率的1/24。即计数周期=2机器周期。6-7 在 T/C0工作在方式3时, T/C1仍可设置为方式0~2。 由于 TR1和 TF1已被 T/C0 (TH0) 占用, 计数开关已被接通,此时仅用 T/C1的 C/T 来切换其定时或计数工作方式就可使 T/C1工作。 计数器(8位、13位或16位)回零溢出时,只能将输出送入串行口或用于不需要中断的场合。 一般情况下,当 T/C1用作串行口波特率发生器时,T/C0才设置为工作方式3。 此时,常把 T/C1设置为方式2用作波特率发生器。 6-8 T/C0的实际作用为计时,当达到106mS 后中断. 6-14 ORG 0000H LJMP START ORG 001BH LJMP TT1 ORG 1000H START: MOV TMOD,#20H ;8位自动重新装入 ;TIMER1中断MOV TH1,06H ;装入初始值 MOV TL1,06H MOV R2,#00H ;用于统计250us 的个数 SETB P1.1 SETB P1.0 SETB EA SETB ET1 SETB TR1 SJMP $ TT1: CPL P1.1 ;主程序踏步 ;取反 P1.1产生250us 方波 ;计数值增一,统计250us 的个数 ;开放中断 ;初始化 P1.0 P1.1INC R2CJNE R2,#4,CONT ;达到1s? CPL P1.0 CLR R2 CONT: END RETI ;产生2ms 方波 ;重新统计 ;中断返回思考题与习题7参考答案 第七章 思考题与习题 参考答案 7-1 答:在 MCS-51扩展系统中,程序存储器与数据存储器共用16根地址线和8根数据线,两个 存储空间不会发生冲突。因为,访问外部程序存储的读选通信号是/PSEN,而访问外部数据 存储器使用/RD 引脚信号作读选通,用/WR 引脚信号作写选通,即虽然地址总线与数据总 线相同,但控制信号不同,因此,两个存储空间不会发生冲突。 7-2 答: P2口是双功能口,当它作地址总线高8位后,不再适宜作通用 I/O 口。因为,P2口线 已经与8031外部的存储器的地址线相连,此时,P2口不能再与外部 I/O 口的数据线相连,当 CPU 不断地访问外部存储器时,由 P2口不断输出所访问存储空间的高8位地址,若此时 P2 口与外部 I/O 口的数据线相连,特别是在访问外部数据存储器时,输出的高8位地址信号会 使 I/O 口作为 I/O 数据,从而可能产生误操作,严重的可能引起 I/O 设备的损坏。 7-3 答: 扩展系统中,程序存储器是只读的,其时序中读选通信号是/PSEN,当 ALE 下降沿时, P0口上的地址是稳定的程序存储器的低8位地址,来自 PC 指针,当/PSEN 地电平期间,P0 口上是从选中的程序存储器单元中读出的指令码, P2口输出的是来自 PC 指针的高8位地址。 地址锁存允许信号 ALE 和/PSEN 读程序存储器的时序中分别出现两次。 数据存储器的读/写时序,与前者的主要区别在于:在第二个机器周期中,地址锁存允 许信号 ALE 和/PSEN 信号丢失一次,存储器的读选通信号是/RD,写选通信号是/WR。当 ALE 下降沿时,P0口出现的是数据存储器的低8位地址,来自 DPL 或 R0,当/RD 低电平期 间,P2口上的地址来自 DPH 或 P2口锁存器,P0口作数据总线,其数据了来自选中的数据存 储单元。在/WR 有效期间,P0口是由 CPU 输出的数据。 7-4 答:扩展2764三片和一片6264 ,要求用74LS273锁存地址,译码用74LS138。画图如下: 喜欢此文档的还喜欢 单片机 课后答案(赵晓安主... 33页 1财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。...《单片机原理与接口技术》课后答案(段晨东主编)详尽版_工学_高等教育_教育专区。教材名称:《单片机原理与接口技术》出版社:清华大学出版社主编:段晨东第...单片机原理及接口技术课后习题答案――胡健主编(机械工业出版社)_工学_高等教育_...第一章一、计算题 (0.A) 16 1、①( (87)16 ② (0 .101) ...单片机课后题答案(霍孟友主编)_工学_高等教育_教育专区。2-1. 8051单片机芯片内部包含哪些主要逻辑功能部 件? 答: 一个8位微处理器 (CPU) 片内数据存储器RAM...单片机原理及接口技术第二版李全利主编课后答案_工学_高等教育_教育专区。绪论 1.第一台计算机的问世有何意义? 答: 第一台电子数字计算机 ENIAC 问世,标志着计算机...单片机原理及应用(C语言版)习题答案(主编周国运)_信息与通信_工程科技_专业资料。单片机原理及应用(C语言版)习题答案(主编周国运),有了答案,在课后习题再也不会心...5.什么叫单片机?其主要特点有哪些? 答: 在一片集成电路芯片上集成微处理器、存储器、I/O 接口电路,从而构成了单芯片微型计算机, 即单片机。单片机主要特点有:...单片机基础(第三版)课后答案李广弟_工学_高等教育_教育专区。单片机基础(第三版)课后答案李广弟单片机基础课后答案第三版(就是它了)第一章 一、填空题 1. 1110...单片机原理与应用设计课后答案(张毅刚)_信息与通信_工程科技_专业资料。单片机原理与应用设计答案“单片机原理及应用”课程习题与解答 参考教材:张毅刚主编,单片机原理及...单片机原理及应用技术课后习题答案主编牛月兰_工学_高等教育_教育专区。单片机应用技术习题解答 3-4. 假定累加器 A 中的内容为 30H,执行指令 1000 H: MOVC 后,... All rights reserved Powered by copyright ©right 。文档资料库内容来自网络,如有侵犯请联系客服。}

我要回帖

更多关于 5x 3y 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信