《单片机原理与应用技术》习题与思考题 1单片机基础 1.1什么是单片机?什么是嵌入式系统? 1.2单片机CPU与通用微机CPU有什么异同? 1.3单片机主要用途是什么?列举你所知道的目前应用较为广泛的单片机种类。 14假设某CPU含有16根地址线,8根数据线,则该CPU最多寻址能力是多少KB? 1.5为什么计算机要采用二进制数?学习十六进制数的目的是什么? 1.6将下列十进制数转换成二进制数: 270;91:16663;4 1.7把下列十六进制数转换为二进制数和十进制数 (1)41H(2)1AFH (3)0F1H(4)20FAH 18把下列二进制数转换为十六进制数和十进制数 (1)1010011B(2)10000000B(3)10111B(4)1100B 19为什么在计算机中带符号数不用原码表示而用补码表示?在8位二进制中,-12H的补码是多 少?-12H在16位二进制中的补码又是多少? 1.10用补码方法计算下列各式(设机器字长为8位) (1)X=7,Y=8,求X+Y; Y=9,求X-Y (3)X=6,Y=7,求X+Y (4)Ⅹ=11,Y=7,求XY。 1.11已知X=100110B,y=1100B,用算术运算规则求 X+Y:X-Y:X×Y:X/Y 1.12已知Ⅹ=0111010B,y=10101010B,用逻辑运算规则求 X+Y: XeY X 13在计算机里,一般具有哪三类总线?请说出各自的特征(包括传输的信息类型、单向传输还 是双向传输) 1.14计算机字长的含义是什么?80C51单片机的字长是多少?
《单片机原理与应用技术》习题与思考题 1.单片机基础 1.1 什么是单片机? 什么是嵌入式系统? 1.2 单片机 CPU 与通用微机 CPU 有什么异同? 1.3 单片机主要用途是什么?列举你所知道的目前应用较为广泛的单片机种类。 1.4 假设某 CPU 含有 16 根地址线,8 根数据线,则该 CPU 最多寻址能力是多少 KB? 1.5 为什么计算机要采用二进制数?学习十六进制数的目的是什么? 1.6 将下列十进制数转换成二进制数: 270; 91; 16663; 46 1.7 把下列十六进制数转换为二进制数和十进制数 (1)41H (2)1AFH (3)0F1H (4)20FAH 1.8 把下列二进制数转换为十六进制数和十进制数 (1)10110011B (2)10000000B (3)10111B (4)1100B 1.9 为什么在计算机中带符号数不用原码表示而用补码表示?在 8 位二进制中,-12H 的补码是多 少?-12H 在 16 位二进制中的补码又是多少? 1.10 用补码方法计算下列各式(设机器字长为 8 位): (1) X=7, Y=8,求 X+Y; (2) X=5, Y=9, 求 X-Y; (3) X=6, Y=-7,求 X+Y; (4) X=-11,Y=7, 求 X-Y。 1.11 已知 X=100110B,y=1100lB,用算术运算规则求: X+Y; X-Y; X Y; X/Y 1.12 已知 X=01111010B,y=10101010B,用逻辑运算规则求: X Y; X+Y; X⊕Y; X 1.13 在计算机里,一般具有哪三类总线?请说出各自的特征(包括传输的信息类型、单向传输还 是双向传输)。 1.14 计算机字长的含义是什么?80C51 单片机的字长是多少?
2单片机组成 2.1在89C51单片机应用系统中 EA/VPP引脚如何连接?为什么? 2289C52单片机内部含有哪几类存储器?各自的容量是多少? 23简述P1口的内部结构。为什么将P1口引脚作为输入引脚使用前,一定要向P1口锁存器相应 位写入“1”。 24地址/数据分时复用的含义是什么?80C31P0口与存储器,如27128相连时,两者之间需要加 接什么功能芯片才能锁存低8位地址信息? 2.5指出复位后工作寄存器组R7~RO的物理地址。 26如果希望工作寄存器组中R0对应的物理存储单元为10H,请写系统复位后实现这一要求的指 令 2.7说出访问下列寄存器或存储空间可以使用的寻址方式,并举例: (1)89C51系列内部数据存储器前128字节 (2)89C52系列内部数据存储器后128字节 (3)特殊功能寄存器。 2.8在MCS-51单片机应用系统中,外接程序存储器和数据存储器的地址空间允许重叠而不会发生 冲突,为什么?外部IO接口地址是否允许与存储器地址重叠?为什么? 2.9什么是时钟周期?什么是机器周期?什么是指令周期?89C51CPU机器周期与时钟周期是什 么关系?如果晶振频率为12MHz,则一个机器周期是多少微秒 2.10MCS-51单片机系统复位后,程序计数器PC的值是什么?在80C32单片机系统中,当采用两 片2764 EPROM存储器组成系统的程序存储器时,能否采用线选法连接?为什么 2.11分析MCS-51写外部数据存储器的写时序,说明为什么不宜使用74LS373扩展MCS-51的输 出口。 2.1289C51CPU复位后内部RAM各单元内容是否改变? 2.13MCS-51单片机通过什么指令读写外部数据存储器?通过什么引脚选通外部数据存储器? 2.14举例说明 Intel的MCS-51有哪些典型品种,它们有何区别? 2.158051单片机内部包含哪些主要功能部件?各功能部件的主要作用是什么? 2.16MCS-51单片机内部RAM可分为几个区?各区的主要作用是什么? 2.17ALU单元的作用是什么?一般能完成哪些运算操作? 2.18程序状态字寄存器PSW各位的定义是什么? 2.19在单片机系统中常使用哪些存储器?MCS-51存储器结构的主要特点是什么?程序存储器和数 据存储器各有何不同? 2.20MCS-51单片机的P0~P3四个IO端口在结构上有何异同?使用时应注意哪些事项 221为什么说单片机具有较强的位处理能力? 222MCS-51单片机有几种复位方法?复位后,CPU从程序存储器的哪一个单元开始执行程序?
2.单片机组成 2.1 在 89C51 单片机应用系统中 EA /VPP引脚如何连接?为什么? 2.2 89C52 单片机内部含有哪几类存储器?各自的容量是多少? 2.3 简述 P1 口的内部结构。为什么将 P1 口引脚作为输入引脚使用前,一定要向 P1 口锁存器相应 位写入“1”。 2.4 地址/数据分时复用的含义是什么?80C31 P0 口与存储器,如 27128 相连时,两者之间需要加 接什么功能芯片才能锁存低 8 位地址信息? 2.5 指出复位后工作寄存器组 R7~R0 的物理地址。 2.6 如果希望工作寄存器组中 R0 对应的物理存储单元为 10H,请写系统复位后实现这一要求的指 令。 2.7 说出访问下列寄存器或存储空间可以使用的寻址方式,并举例: (1) 89C51 系列内部数据存储器前 128 字节。 (2) 89C52 系列内部数据存储器后 128 字节。 (3) 特殊功能寄存器。 2.8 在 MCS-51 单片机应用系统中,外接程序存储器和数据存储器的地址空间允许重叠而不会发生 冲突,为什么?外部 I/O 接口地址是否允许与存储器地址重叠?为什么? 2.9 什么是时钟周期?什么是机器周期?什么是指令周期?89C51 CPU 机器周期与时钟周期是什 么关系?如果晶振频率为 12MHz,则一个机器周期是多少微秒? 2.10 MCS-51 单片机系统复位后,程序计数器 PC 的值是什么?在 80C32 单片机系统中,当采用两 片 2764EPROM 存储器组成系统的程序存储器时,能否采用线选法连接?为什么? 2.11 分析 MCS-51 写外部数据存储器的写时序,说明为什么不宜使用 74LS373 扩展 MCS-51 的输 出口。 2.12 89C51 CPU 复位后内部 RAM 各单元内容是否改变? 2.13 MCS-51 单片机通过什么指令读写外部数据存储器?通过什么引脚选通外部数据存储器? 2.14 举例说明 Intel 的 MCS-51 有哪些典型品种,它们有何区别? 2.15 8051 单片机内部包含哪些主要功能部件?各功能部件的主要作用是什么? 2.16 MCS-51 单片机内部 RAM 可分为几个区?各区的主要作用是什么? 2.17 ALU 单元的作用是什么?一般能完成哪些运算操作? 2.18 程序状态字寄存器 PSW 各位的定义是什么? 2.19 在单片机系统中常使用哪些存储器?MCS-51 存储器结构的主要特点是什么?程序存储器和数 据存储器各有何不同? 2.20 MCS-51 单片机的 P0~P3 四个 I/O 端口在结构上有何异同?使用时应注意哪些事项? 2.21 为什么说单片机具有较强的位处理能力? 2.22 MCS-51 单片机有几种复位方法?复位后,CPU 从程序存储器的哪一个单元开始执行程序?
3指令与编程 3.1指令由哪几部分组成? 3.2什么是汇编语言指令?为什么说汇编语言指令比机器语言指令更容易理解和记忆?通过什么 方式可将汇编语言程序转化为机器语言程序? 3.3MCS-51汇编语言中有哪些常用的伪指令?各起什么作用? 3.4汇编语言程序和汇编程序两术语含义相同吗? 3.5什么是寻址方式?对于双操作数指令来说,为什么不需要指定操作结果存放位置? 36给出下列指令中每一操作数的寻址方式 (1)MOV A, #23H (2)MOV 23H,A (3)MOv90H,23H (4)MOV23H,@R0 A 3.7位地址90H和字节地址90H及P1.0有何异同?如何区别?位寻址和字节寻址如何区分?在使用 时有何不同? 3.8要访问专用寄存器和片外数据寄存器,应采用什么寻址方式?举例说明。 3.9编程将内部RAM的20H单元的内容传送给外部RAM的2000H单元 3.10编程将内部数据存储器20H~30H单元内容清零。 311已知A=83H,R0=17H,(17H):34H,写出下列程序段执行完后的A中的内容。 ANL A, #17H ORL 17H,A XRL A, @RO CPL 3.12编程查找内部RAM的32H-41H单元中是否有OAAH这个数据,若有这一数据,则将将50H 单元置为0FFH,否则清50H单元为0。 3.13已知单片机的晶振为12MHz,分别设计延时0.ls、ls、lmin的子程序 3.14查找20H-4FH单元中出现00H的次数,并将查找结果存入50H单元 3.15试编程使内部RAM的20H~4FH单元的数据块按降序排列。 3.16内部RAM的20H单元开始有一个数据块,以ODH为结束标志,试统计该数据块长度,将该 数据块传送到外部数据存储器7E0H开始的单元,并将长度存入7E00H单元 3.17试编写一个用查表法查0~9字形段码的子程序,调用子程序前,待查表的数据存放在累加器 A中,子程序返回后,查表的结果也存放在累加器A中 3.18内部RAM的DATA开始的区域中存放着10个单字节十进制数,求其累加和,并将结果存入 SUM和SUM+1单元。 3.19MCS-51内部RAM前128字节支持哪些寻址方式?请写出用不同寻址方式将内部RAM30H 单元信息传送到累加器A的指令或程序片段;内部RAM后128字节支持哪些寻址方式?请写 出将内部RAM80H单元信息传送到累加器A的指令或程序片段
3.指令与编程 3.1 指令由哪几部分组成? 3.2 什么是汇编语言指令?为什么说汇编语言指令比机器语言指令更容易理解和记忆?通过什么 方式可将汇编语言程序转化为机器语言程序? 3.3 MCS-51 汇编语言中有哪些常用的伪指令?各起什么作用? 3.4 汇编语言程序和汇编程序两术语含义相同吗? 3.5 什么是寻址方式?对于双操作数指令来说,为什么不需要指定操作结果存放位置? 3.6 给出下列指令中每一操作数的寻址方式。 (1) MOV A, #23H (2) MOV 23H,A (3) MOV 90H, 23H (4) MOV 23H, @R0 (5) INC A 3.7 位地址 90H 和字节地址 90H 及 P1.0 有何异同?如何区别?位寻址和字节寻址如何区分?在使用 时有何不同? 3.8 要访问专用寄存器和片外数据寄存器,应采用什么寻址方式?举例说明。 3.9 编程将内部 RAM 的 20H 单元的内容传送给外部 RAM 的 2000H 单元。 3.10 编程将内部数据存储器 20H~30H 单元内容清零。 3.11 已知 A=83H,R0=17H,(17H):34H,写出下列程序段执行完后的 A 中的内容。 ANL A, #17H ORL 17H,A XRL A, @R0 CPL A 3.12 编程查找内部 RAM 的 32H~41H 单元中是否有 0AAH 这个数据,若有这一数据,则将将 50H 单元置为 0FFH,否则清 50H 单元为 0。 3.13 已知单片机的晶振为 12MHz,分别设计延时 0.1s、1s、lmin 的子程序。 3.14 查找 20H~4FH 单元中出现 00H 的次数,并将查找结果存入 50H 单元 3.15 试编程使内部 RAM 的 20H~4FH 单元的数据块按降序排列。 3.16 内部 RAM 的 20H 单元开始有一个数据块,以 0DH 为结束标志,试统计该数据块长度,将该 数据块传送到外部数据存储器 7E01H 开始的单元,并将长度存入 7E00H 单元。 3.17 试编写一个用查表法查 0~9 字形段码的子程序,调用子程序前,待查表的数据存放在累加器 A 中,子程序返回后,查表的结果也存放在累加器 A 中。 3.18 内部 RAM 的 DATA 开始的区域中存放着 10 个单字节十进制数,求其累加和,并将结果存入 SUM 和 SUM+1 单元。 3.19 MCS-51 内部 RAM 前 128 字节支持哪些寻址方式?请写出用不同寻址方式将内部 RAM 30H 单元信息传送到累加器 A 的指令或程序片段;内部 RAM 后 128 字节支持哪些寻址方式?请写 出将内部 RAM 80H 单元信息传送到累加器 A 的指令或程序片段
3.20写出实现下列要求的指令或程序片段,并在仿真机上验证(假设指令代码从2000H单元开始存 放)。 (1)将内部RAM20H单元内容与累加器A相加,结果存放在20H单元中。 (2)将8032内部RAM80H单元内容与内部RAM3H单元内容相加,结果存放到内部RAM3H 单元中 (3)将内部RAM20H单元内容传送到外部RAM20H单元中 (4)将程序状态字寄存器PSW内容传送到外部RAM的ODOH单元中 (5)将内部RAM0OH~7FH单元,共128字节传送到以8000H为首址的外部RAM中。 (6)将外部RAM8000H~803FH单元,共64字节传送到以40H为首址的内部RAM中 (7)将外部RAM8000H~807FH单元,共128字节传送到以000H为.首址的外部RAM中 (8)将存放在内部RAM的40H、41H和外部RAM的80004、8001H的16位二进制数相加, 结果存放在内部RAM的40H和4H单元中(假设低位字节存放在低地址中) (9)如果0~9七段数码显示器对应的字模码3P,06,5B,4F,66,6D,7D,07,7E6F存放 在1000H为首址的程序存储器中,写出将数字4对应的字模码输出到外部RAM3003H单 元(即扩展IO端口地址)的程序段 (10)使内部RAM20H单元的b7和b3清零,其他位不变 (11)使内部RAM20H单元的b7和b3置1,b5清零,其他位不变 (12)将内部RAM20H单元的b7和b3置1,b5取反,其他位不变。 (13)将DPH寄存器的b7、b5位清零,将b2、b0位置1,其他位不变 (14)将存放在内部RAM40H、41H和外部RAM8000H、8001H的四位BCD码相加,结果存 放在内部RAM40H和41H单元中(假设低位字节存放在低地址中) (15)将立即数32H传送到内部RAM3OH单元中。 (16)将立即数32H传送到8032CPU内部RAM88H单元中 3.21假设内部RAM(30H)=3FH,累加器A=OHEH,R0=30H,SP=07H,PSW=00H,则执行如下 指令后,各存储单元及寄存器内容是什么(假设各小题相互独立)? (1)MOv A, @RO (2)INC A A PSW (3)MOV A, #OlH (4)MOV A,#04H ADD A, @RO MOV@RO,A PSW= R0= ;(30H)= (5)ANL A,@RO PSW= (6) PUSH ACC PUSP 30H A= PSW= 3.22假设4位BCD码压缩存放在R3、R2中,试编写BCD减1的程序段,并在仿真机上验证 3.23输入、编译、运行下列程序段,并指出复位后和程序执行过程中SP、程序计数器PC的变化 以及程序执行结束后累加器ACC、内部RAM30H-~33H单元内容
3.20 写出实现下列要求的指令或程序片段,并在仿真机上验证(假设指令代码从 2000H 单元开始存 放)。 (1) 将内部 RAM 20H 单元内容与累加器 A 相加,结果存放在 20H 单元中。 (2) 将8032内部RAM 80H单元内容与内部RAM 31H单元内容相加,结果存放到内部RAM 31H 单元中。 (3) 将内部 RAM 20H 单元内容传送到外部 RAM 20H 单元中。 (4) 将程序状态字寄存器 PSW 内容传送到外部 RAM 的 0D0H 单元中。 (5) 将内部 RAM 00H~7FH 单元,共 128 字节传送到以 8000H 为首址的外部 RAM 中。 (6) 将外部 RAM 8000H~803FH 单元,共 64 字节传送到以 40H 为首址的内部 RAM 中。 (7) 将外部 RAM 8000H~807FH 单元,共 128 字节传送到以 0000H 为首址的外部 RAM 中。 (8) 将存放在内部 RAM 的 40H、41H 和外部 RAM 的 8000H、8001H 的 16 位二进制数相加, 结果存放在内部 RAM 的 40H 和 41H 单元中(假设低位字节存放在低地址中)。 (9) 如果 0~9 七段数码显示器对应的字模码 3P,06,5B,4F,66,6D,7D,07,7E6F 存放 在 1000H 为首址的程序存储器中,写出将数字 4 对应的字模码输出到外部 RAM 3003H 单 元(即扩展 I/O 端口地址)的程序段。 (10) 使内部 RAM 20H 单元的 b7 和 b3 清零,其他位不变。 (11) 使内部 RAM 20H 单元的 b7 和 b3 置 1,b5 清零,其他位不变。 (12) 将内部 RAM 20H 单元的 b7 和 b3 置 1,b5 取反,其他位不变。 (13) 将 DPH 寄存器的 b7、b5 位清零,将 b2、b0 位置 1,其他位不变。 (14) 将存放在内部 RAM 40H、41H 和外部 RAM 8000H、8001H 的四位 BCD 码相加,结果存 放在内部 RAM 40H 和 41H 单元中(假设低位字节存放在低地址中)。 (15) 将立即数 32H 传送到内部 RAM 30H 单元中。 (16) 将立即数 32H 传送到 8032 CPU 内部 RAM 88H 单元中。 3.21 假设内部 RAM(30H)=3FH,累加器 A=0FEH,R0=30H,SP=07H,PSW=00H,则执行如下 指令后,各存储单元及寄存器内容是什么(假设各小题相互独立)? (1) MOV A, @R0 A= 。 (2) INC A A= ;PSW= 。 (3) MOV A, #01H (4) MOV A, #04H ADD A, @R0 INC R0 MOV @R0, A A= ;PSW= ;R0= ;(30H)= 。 (5) ANL A, @R0 A= ;PSW= 。 (6) PUSH ACC PUSP 30H A= ;PSW= 。 3.22 假设 4 位 BCD 码压缩存放在 R3、R2 中,试编写 BCD 减 1 的程序段,并在仿真机上验证。 3.23 输入、编译、运行下列程序段,并指出复位后和程序执行过程中 SP、程序计数器 PC 的变化 以及程序执行结束后累加器 ACC、内部 RAM 30H~33H 单元内容
ORG 0000H LJMP Main Main: )V SP, #6FH RO, #30H MOV 30H, #12H MOv 31H, #34H MOV 32H, #76H MOV 33H, #98H LCALL SUBI oRG 2000H SUBI: PUSH Acc PUSH PSW ADD A, @RI MOV @RO, A INC RO 324假设程序头中含有如下变量定义伪指令。 TXDBUF DATA BDATA DATA #28H (1)请指出“ MOV RO,# XDBUF”指令、“ MOV RO, TXDBUF”指令目的操作数的寻址 方式 (2)执行如下程序段后,内部RAM40H~4FH单元内容是什么?28H单元内容又是什么? MOV BDATA, #10 MOv RO, #XDBUF LOOP MOV @RO, A INC INC RO DINZ BDATA, LOOP 3.25如果希望快速保护工作寄存器组,请写出将2区作为当前工作寄存器区的程序段
ORG 0000H LJMP Main ORG 1000H Main: MOV SP, #6FH MOV R0, #30H MOV Rl, #32H MOV 30H,#12H MOV 31H,#34H MOV 32H,#76H MOV 33H,#98H LCALL SUBl NOP ORG 2000H SUBl: PUSH Acc PUSH PSW MOV A, @R0 ADD A, @R1 MOV @R0,A INC R0 RET 3.24 假设程序头中含有如下变量定义伪指令。 TXDBUF DATA #40H BDATA DATA #28H (1) 请指出“MOV R0,#TXDBUF”指令、“MOV R0, TXDBUF”指令目的操作数的寻址 方式 (2) 执行如下程序段后,内部 RAM 40H~4FH 单元内容是什么?28H 单元内容又是什么? MOV BDATA, #10H MOV R0, #XDBUF CLR A LOOP: MOV @R0, A INC A INC R0 DJNZ BDATA,LOOP END 3.25 如果希望快速保护工作寄存器组,请写出将 2 区作为当前工作寄存器区的程序段