当前位置:文档之家› 单片机习题与答案

单片机习题与答案

第一章习题1.1 什么叫单片机?单片机由哪几个主要部分组成?单片机是单片微型计算机(Single Chip Microcomputer)的简称,是指把组成微型计算机的各种功能部件集成在一块芯片上,也就是集成在一块芯片上的计算机。

主要组成部分:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。

1.2 单片机主要应用于哪些领域?(1)在智能仪器仪表上的应用(2)在工业控制中的应用(3)在家用电器中的应用(4)单片机在医用设备领域中的应用1.3 将下列十进制数转换成二进制、十六进制数。

(1)129 =10000001B=81H (2)35.6 =100011.1001B=23.99H(3)63=111111B=3FH (4)125.25=100100101.01B=7D.4H1.4 常用数字编码与字符编码有哪些?常用数字编码有BCD码,字符编码有ASCII码。

1.5 在MCS-51单片机中,如果采用6MHz晶振,则一个机器周期为多少?2us1.6 试说明RAM和ROM各自的作用,主要的区别在哪里?程序存储器也叫只读存储器,简称ROM,单片机掉电后ROM内容不会丢失。

数据存储器也叫随机存储器,简称RAM,单片机掉电后RAM内容会丢失。

区别:ROM存放程序或者固定的数据,RAM存放变量或程序运行的中间结果。

1.7 试写出P3口的第二功能。

1.8 当程序运行出错或进入死循环,如何摆出困境?人工复位或者用看门狗是单片机自动复位。

1.9 非总线方式下的单片机最小应用系统有那几部分组成?单片机、复位电路、时钟电路、电源。

第二章习题2.1 MCS-51汇编语言指令由哪两部分组成?各有什么功能?指令的表示方法称为指令格式,一条指令通常由两部分组成,即操作码和操作数。

操作码:是由助记符表示的字符串,它规定了指令的操作功能。

操作数:是指参加操作的数据或数据的地址。

2.2 指出下列指令源操作数的寻址方式。

(1)MOV R0, #30H 立即寻址(2)MOV A, R1 寄存器寻址(3)MOV A, @R0 寄存器间接寻址(4)INC DPTR 寄存器寻址(5)MOVC A, @A+DPTR 变址寻址(6)MOV A, 30H 直接寻址(7)MOV C, 30H 位寻址(8)MOVX A, @DPTR 寄存器间接寻址2.3 判断下列指令是否正确,如错误,说明其原因。

(1)MOV A, @R7 (2)MOV 34H, 35H (3)XCHD A, R2(4)MOV @R0,R7 (5)MOVX A, @A+DPTR (6)PUSH DPTR(7)MOVC A, @DPTR (8)ADDC B, @R5 (9)DEC DPTR(10)SUBB A, R2 (11)SETB 20.3H (12)ANL 34H,#35H(13)ORL C, /20H (14)CLR B (15)XRL C, ACC.0 (16)DJNZ A, @R1, NEXT (17)JMP END (18)CJNE A, R3, DONE答案(1)错误 @R0或者@R1 (2)正确(3)错误将R2改为@R0或者@R1(4)错误将R7改为07H (5)错误将@A+DPTR改为@DPTR (6)错误将DPTR改为 ACC (7)错误将MOVC改为MOVX (8)错误将B改为A (9)错误将DPTR改为 DPL (10)正确(11)错误将20.3H改为03H (12)正确(13)正确(14)错误将B改为0F0H (15)错误将XRL改为ANL或ORL (16)错误将A, @R1改为R1 (17)错误将END改为$(18)错误将R3改为03H 2.4 下列程序执行结束后,按要求回答问题。

(1)MOV A, #80H;MOV B, #7FHMOV SP, #10HPUSH ACCPUSH BRET结果:(SP)=_10H_______,(PC)__不确定______。

(2)设:CY=0,AC=0,OV=0,P=0。

MOV A, #76HMOV B, #43HADDC A, BDA A结果:(A)=__19H_______,CY=___1_____。

2.5 根据要求完成程序。

使用查表发求A中内容的平方,如果A中存放的是0~9之间的数,结果存放在A,否则A中存放OFFH。

CJNE A, #09H, N1N1:__JC_______ N2__MOV DPTR,#TB_________MOVC A,@A+DPTR_______LJMP N3N2:MOV A, #0FFHN3:NOPTB:DB 0,1,4,9,16,25,36,49,64,812.6 编程实现将累加器A的高2位置1,低两位置0,其余位取反。

ORL A,#0C0HANL A,#0FCHXRL A,#3CH2.7 MCS-51汇编语言常用的伪指令有哪些?各有什么功能?教材第24页至26页2.8 编程实现将寄存器R5R6中双字节数(高字节在R5中,低字节在R6中)循环左移一位。

MOV A,R6RLC A //将R6的最高位移至进位位CMOV A,R5RLC AMOV R5,AMOV A,R6RLC AMOV R6,ASJMP $END2.9 编程实现将内部RAM中以20H开始的30个字节的数据传送到外部RAM中以1000H 开始的单元中去。

MOV R0,#20HMOV DPTR,#1000HMOV R1,#30MOV A,@R0;MOVX @DPTR,AINC R0INC DPTRDJNZ R1 ,NEXTSJMP $END2.10 编程实现求51H、50H单元中双字节数据的绝对值。

MOV A,51HJNB ACC.7,OVERMOV A,50HCPL AADD A,#01HMOV 50H,AMOV A,51HCPL AADDC A,#00HMOV 51H,AOVER:SJMP $END第三章习题3.1 MCS-51汇编语言中有哪几条常用的伪指令?各起什么作用?答:常用的伪指令及作用: 汇编起始地址命令:该伪指令后面程序的汇编地址,即汇编后生成目标程序存放的起始地址。

2.END 汇编结束命令:END命令通知汇编程序结束汇编。

3.EQU 赋值命令:EQU命令是把“项”赋值给“字符名称”。

4.DATA 数据地址赋值命令:DATA命令功能与EQU类似,但有以下差别:1)EQU定义的字符名必须先定义再使用,而DATA定义的字符名可以后定义先使用。

2)用EQU伪指令可以把一个汇编符号赋给一个名字,而DATA只能把数据赋给字符名。

3)DATA语句中可以把一个表达式的值赋给字符名,其中的表达式应是可求值的。

5.DB 定义字节命令:项或项表可以是一个字节、用逗号隔开的字节串或括在单引号(‘’)中的ASCII字符串。

它通知汇编程序从当前ROM地址开始,保留一字节或字节串的存储单元,并存入DB后面的数据。

6.DW 定义字节命令:该命令把DW后的16为数据项或项表从当前地址连续存放。

7.DS定义存储空间命令:在汇编时,从定义地址开始保留DS之后表达式的值所规定的存储单元,以备后用。

8.BIT 位地址定义伪指令:BIT伪指令的功能是将位地址赋予所规定的字符名称。

3.2 汇编语言中的可执行指令与伪指令有何区别?答:汇编语言中的可执行指令,就是规定计算机进行某种操作的命令。

汇编后有对应的二进制机器代码。

伪指令不属于MCS-51单片机指令系统中的指令,它是程序员发给汇编程序的命令,没有相应的机器代码。

伪指令具有控制汇编程序的输人输出、定义数据和符号、条件汇编、分配存储空间等功能。

3.3 设内部RAM中存有两个有符号数A和B,求A和B之差,若溢出,则将两数均清零;否则,两数保持不变。

答:设A、B分别在内部RAM direct1、direct2中ORG 0030HMOV A,direct1SUBB A, direct2JNB OV,FLISHMOV direct1,#00HMOV direct2,#00HFLISH:SJMP $3.4 设有两个16位二进制数,分别放在片内RAM 30H和40H开始的两个单元中,低字节在低地址单元中,高字节在高地址单元中,编程求两个数之和并存入40H开始的单元中。

答: ORG 0030HMOV A,30H ;取被加数低8位到AADD A,40H ;加数低8位与被加数低8位相加,结果放A中MOV 40H,A ;存结果MOV A,31H ;取被加数高8位到AADDC A,41H ;加数与被加数相高8位加并加低位进位MOV 41H,A ;存结果END3.5 已知片内30H,31H中存有一个16位的二进制数,高位在前,低位在后,请编程将它们乘2,再存回原处。

设乘完结果不超出双字节。

(提示:用带进位左移指令使双字节数左移一位。

)答:ORG 0050HMOV A,31HRL AMOV 31H,AMOV A,30HRLC AMOV 30H,AEND3.6 若有两个无符号数X、Y分别存放在外部数据存储器50H、51H单元中,试编写一个程序,实现5X+Y,结果高8位存入片内42H单元,低8位存入片内43H单元。

答:ORG 0030HMOV R0,#50HMOV R1,#51HMOVX A,@R0MOV B,#05HMUL ABMOV 43H,AMOV 42H,BMOVX A,@R1ADD A,43HMOV 43H,ACLR AADDC A,42HMOV 42H,AEND3.7 有10个单字节数据,连续存放在片外2000H开始的区域中,试求出这10个数的总和,并将结果存入片内20H开始的单元,低位先存。

答: ORG 0050HMAIN:MOV DPTR,#2000H ;DPTR指向外部RAM数据区首地址MOV R1,#0AHMOV 20H, #00HMOV 21H, #00HLOOP: MOVX A,@DPTR ;A←(DPTR)ADD A , 20H ;求和MOV 20H, ACLR AADDC A, 21HMOV 21H, AINC DPTRDJNZ R1,LOOPEND3.8 编程将片内RAM 40H到4FH单元共16个连续单元清“0”。

答:ORG 0030HMOV R0,#40HMOV R1,#10HLOOP: MOV @R0,#00HINC R0DJNZ R1,LOOPEND3.9 编程求内部RAM 30H单元中二进制数据的“0”个数,将结果存入31H单元中。

答:ORG 0030HMOV A,30HMOV R0,#08HMOV R1,#00HLOOP:RLC AJC NEXTINC R1NEXT:DJNZ R0,LOOPMOV 31H,R1END3.10 请根据单片机实验仪的晶振频率编写100mS的延时程序。

相关主题