




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、10.1 MCS-51单片机由哪几部分组成,它们的主要功能是什么?答:51系列单片机主要由以下几部分组成: 中央处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、专用寄存器、I/O端口、定时/计数器(T/C)、全双工串口(UART)、中断系统、总线控制和振荡器等。 10.2 MCS-51单片机的/EA引脚有何功能?在使用8031时/EA应如何接?答:当/EA引脚接高电平时,访问内部程序存储器,但在PC(程序计数器)值超过片内程序存储器范围时,将自动转向执行外部程序存储器内程序。当/EA接低电平时,则只访问外部程序存储器,不管有没有片内程序存储器。对EPROM版本的8051,此引脚还
2、可接+21V电压,用于内部EPROM编程(Vpp)。使用8031时应接低电平。EAEA 10.3 判断下列说法是否正确。判断下列说法是否正确。(1)DPTR可以分为2个8位的寄存器使用,但PC不行。(2)片内RAM的位寻址区,只能供位寻址使用,不能供字节寻址使用。(3)为使8051单片机的准双向I/O口工作在输入方式,必须将它预先设置为1。(4)在8051单片机中,一个机器周期等于1s。(5)串行通信帧发送时,指令把TB8位的状态送入发送SBUF中。(6)特殊功能寄存器IE,与定时器/计数器的控制无关。(7)同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。(8)8051单片机的CPU是
3、由RAM和EPROM组成的。(9)串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定。(10)在8051的中断请求中,需外加电路实现中断请求撤销的是外部串行中断。 (1)对()对(2)错()错(3)对()对(4)错()错(5)错()错(6)错)错(7)错()错(8)错()错(9)对()对(10)错)错 10.4 MCS-51系列单片机的基本型芯片有哪几种?它们的差别是什么? 答:MCS-51系列单片机的基本型芯片分别是8031、8051和8751。它们的片内程序存储器不同。8031无片内程序存储器,8051有4KB的片内程序存储器ROM,8751有4KB的片内程序存储器EPROM
4、。 10.5 请指出振荡周期与机器周期之间的关系。当晶振频率为6MHz时,一个机器周期为多长时间? 答:1个机器周期等于12个振荡器周期。当晶振频率为6MHz时,一个机器周期为2s。 10.6 片内RAM低128个单元是如何划分的?各部分的主要功能是什么? 答:片内RAM低128个单元可分为三部分:(1)工作寄存器区:地址为00H1FH,分为4组,每组含R0R7共8个CPU的工作寄存器;(2)位寻址区:地址为20H2FH,可进行位操作,也可进行字节操作;(3)用户RAM区:地址为30H7FH,可用于数据缓冲或设置堆栈。 10.7 8051单片机复位后,PSW的内容是什么?R3所对应的存储单元的
5、地址是多少?这时当前的工作寄存器区是哪一组? 答:8051单片机复位后,PSW的内容是00H,R3所对应的存储单元的地址是03H,这时选择工作寄存器组0。 10.8 什么是堆栈?它的作用是什么?为什么在程序初始化时要对SP重新赋值? 答:堆栈是在内存中专门开辟出来的按照“先进后出,后进先出”的原则进行存取的RAM区域。堆栈的作用是保护现场和断点地址。8051单片机复位后,堆栈指针SP指向片内RAM地址07H,从08H单元开始是8051的堆栈区,这个位置与工作寄存器组1的位置相同,因此,在程序初始化时需要对SP重新赋值,从而改变堆栈的位置。 10.9当晶振频率为6MHz时,定时器/计数器工作在方
6、式0、1、2下,其最大定时时间各为多少? 答:当晶振频率为6MHz时,一个机器周期Tcy=12/6s=2s。定时器/计数器工作在方式0下,其最大定时时间为:Tmax=213Tcy=16.384ms 同样可求得定时器/计数器工作在方式1下,其最大定时时间为 Tmax=216Tcy=131.072ms 定时器/计数器工作在方式2下,其最大定时时间为: Tmax=28Tcy=0.512ms13136maxcyT2T22 1016.384ms 10.10 系统复位后执行下述指令,试问T0的定时时间为多长? MOV TH0, #06H MOV TL0, #00H SETB TR0答: 系统复位后,TMO
7、D=00H,此时T0工作为方式0、定时器初值为:TH0=06H,TL0=00H, 因为采用方式0工作,丢掉TL0的高3位,则THL0中的二进制数为:0,0000,110 0,0000 即变为00C0H,则T0的定时时间为:(213-C0H)*Tcy = (8192-192)*Tcy = 8000*Tcy S。 10.11 已知51系列单片机系统的晶振频率为12MHz,请编写程序,使用T0,在P1.0输出矩形脉冲,其波形如下: 答:系统晶振频率为12MHz时,一个机器周期Tcy=1s。P1.0输出高低电平时间分别为50s和150s。T0工作于方式2,定时150s的计数初值为6AH。参考程序如下:
8、ORG0000HLJMPMAINORG000BHLJMPINT0 MAIN:MOV TMOD,#02H ; T0工作于方式2MOV TL0,#6AH;定时150s初值为6AHSETB TR0;启动T0SETB ET0SETB EACLRP1.0 SJMP $ INT0:CLREACPLP1.0MOV R0,#19H HERE:DJNZ R0,HERE ;延时50sMOV TL0,#6AHCPLP1.0SETB EASETB TR0RETI 10.12 若单片机系统的晶振频率为11.0592MHz,串行口工作于方式1,波特率为4800b/s,请写出T1作为波特率发生器的方式控制字和计数初值。 答
9、:串行口工作于方式1,晶振频率为11.0592MHz,由教材P.256的公式计算,或由表10.8查阅可知,TH1=FAH。即: 方式控制字 :TMOD=20H, 计数初值:TH1=TL1=FAH (SMOD=0);。 或或: TH1=TL1=F4H (SMOD=1)。模式1,3波特率SMOD2fosc3212256(TH1) 10.13 编写中断初始化程序,将 设为高优先级中断,为电平触发方式;T0溢出中断设为低优先级中断,串行口中断为高优先级中断,其余中断源设为禁止状态。 答:IP=00010100;IE=10010110;初始化程序为: SETBEA SETBEX1 CLRIT1 SETB
10、ET0 SETBES MOVIP,#14HINT1 10.14 中断服务子程序与普通子程序有哪些相同和不同之处? 答:当发生中断的条件满足时程序自动转向执行中断服务子程序,而普通子程序需通过调用指令才执行。中断服务子程序的返回指令为RETI,普通子程序的返回指令为RET。RETI指令返回时,同时清除中断系统中相应的优先级触发器,以允许下次中断,而RET指令没有这个操作。除此之外,RETI与RET指令的其他操作都相同。 11.1 MCS-51单片机有哪几种寻址方式?并各举一例。 答: (1)立即寻址 MOV A,#30H (2) 直接寻址 MOV A,20H (3) 寄存器寻址 MOV A,R0
11、 (4) 寄存器间接寻址 MOV A,R0 (5) 变址寻址 MOVC A,A+PC (6) 位寻址 SETB 20H (7)相对寻址 SJMP rel 11.2 请指出变址寻址和相对寻址中的地址偏移量有何异同。 答 相同点:两者都需要与基地址相加才能形成操作数地址; 相异点:变址寻址的地址偏移量是一个00HFFH范围内的无符号数; 而相对寻址中是一个8位二进制补码数,其取值范围为-128+127。 11.3 指出下列每条指令的寻址方式、功能和所占字节数。 (1) MOV A,R0 (2) MOV A,direct (3) MOV A,#20H (4) MOVC A,A+PC (5) MOV
12、C,20H (6)MOV DPTR,#0400H 答:(1)寄存器间接寻址,指令功能:将R0所指示的片内RAM单元中内容送到A,单字节指令 (2)直接寻址, 指令功能:将direct单元中的内容传送到A,两字节指令 (3)立即寻址 指令功能:将立即数20H送入A,两字节指令 (4)变址寻址 指令功能:将PC的当前值加与A的偏移量相加得到程序存储器中的地址,取出其中的内容传送到A,单字节指令 (5)位寻址 指令功能:将位地址20H单元中的内容送入进位标志位Cy,两字节指令 (6)立即寻址 指令功能:将16位立即数0400H送入DPTR,三字节指令 11.4 如需访问特殊功能寄存器和片外数据存储器
13、,应采用什么寻址方式? 答:访问特殊功能寄存器必须采用直接寻址方式,访问片外数据存储器必须采用寄存器间接寻址的方式。 11.5 若R0=20H,(20H)=30H时,写出以下每条指令的执行结果. 答: 对MOV A,20H 有:A=(20H)=30H 对MOV A,R0, 有: A=20H 对MOV A,#20H, 有: A=20H 对MOV A,R0 有:A=(20H)=30H 11.6 已知:A=33H,R1=30H,R3=13H,(20H)=00H,(30H)=FFH,试问CPU分别执行如下指令后的结果以及PSW中各标志位状态如何?(1)DEC A (2) DEC R3 (3) DEC
14、20H (4) DEC R1 答: 根据减1指令功能,操作结果为:(1)A=32H,PSW中P=1,其余的各标志位状态 不变; (2) R3=12H,PSW不变 (3)(20H)=FFH,PSW不变 (4) (30H)=FEH,PSW不变 11.7 已知:40H单元中有一个正数X,试写出对X求补的程序。答:对一个8位带符号二进制机器数的求补可以定义为“求反加1”。相应程序为: MOV A,40H CPL A INC A MOV 40H,A 亦可:亦可: CLR A CLR C SUBB A,40H MOV 40H,A 11.8 试编程将试编程将A中的高四位送入中的高四位送入P2口的高四口的高四
15、位,位,P2口低四位不变。口低四位不变。 MOV R0,A ;A中内容暂存R0 ANL A,#0F0H ;将A的低四位清0,高四位不变 ANL P2,#0FH ;将P2的高四位清0,低四位不变 ORL P2,A ;P2AP2,字节装配 MOV A,R0 ;恢复A中原数 11-9判断以下指令的正误。 (1)MOV 30H,R2 (2)DEC DPTR (3)CLR R0 (4)CPL R5 (5)RLC R1 (6)MOV F0,C 答:(1)错(2)错(3)错(4)错(5)错(6)对 11.10 试编写20H和30H单元中内容相互交换的程序,要求利用堆栈作为转存单元。 答: MOV SP,#7
16、0H PUSH 20H PUSH 30H POP 20H POP 30H 11.11 将立即数20H送入片外数据存储器的0F0FH单元。 答: MOV A,#20H MOV DPTR,#0F0FH MOVX DPRT,A 11.12设A中的内容为30H,MOVC A,A+PC指令位于1000H单元,试问执行指令的结果,是将程序存储器的哪一个单元的内容输入到累加器A中? 答:执行指令时PC=1001H,因此执行指令的结果,是将程序存储器的1031H单元的内容输入到A中。 11.13 DA A应怎样使用?CPU执行该指令时,进行二十进制调整的原则是什么? 答:DA A指令主要用于BCD码运算,使用
17、时,应跟在ADD或ADDC指令之后,将相加后存放在累加器中的结果进行调整、修正。 调整的原则是:若A039或AC=1,则A03+06HA03; 若A479或Cy=1,则A47+06HA47。 若以上二条同时发生,或高4位虽等于9 ,但低4位修正后有进位,则应加66H修正。11.14 11.14 编写程序实现十进制减法,计算编写程序实现十进制减法,计算32-65=-3332-65=-33 MOV M1,#32H ;计算;计算BCD码减法:码减法:M1-M2M3 MOV M2,#65H CLR C MOV A,#9AH SUBB A,M2 ;减数对;减数对100求求“补数补数” ADD A,M1
18、;A被减数减数的被减数减数的“补数补数” DA A CPL C ;Cy取反取反, 得到差的得到差的符号标志符号标志 JNC NEXT MOV R0,A ;将差暂时存放到;将差暂时存放到R0 CLR C MOV A,#9AH SUBB A,R0 ;差对;差对100求求“补数补数” SETB C ;置结果的符号位为;置结果的符号位为1NEXT: MOV M3,A ;减法完成,结果的数值部分在;减法完成,结果的数值部分在 M3, 符号位在符号位在CY中中 11.15 试编写程序,将内部试编写程序,将内部RAM以以BK为起始为起始地址的地址的10个单元中的数据求和,并将结果送入个单元中的数据求和,并将
19、结果送入SUM单元。设和不大于单元。设和不大于255 MOV R0,#BK MOV R7,#0AH CLR A LOOP:ADD A,R0 INC R0 DJNZ R7,LOOP MOV SUM,A SJMP $ 11.16 试编写程序从8051的P1.1引脚输出一个一个方波,方波周期为8个机器周期。 答: SETB P1.1 NOP NOP NOP CLR P1.1 NOP NOP NOP SETB P1.1 SJMP $ 11.17编程将00H位和01H位中内容互换答: MOV C,00H MOV 02H,C MOV C,01H MOV 00H,C MOV C,02H MOV 01H,C
20、SJMP $ 11.18已知内部RAM的20H和21H中各有一个无符号8位二进制数。试编程比较他们的大小,并把大数送到22H单元中。 答: MOV A,20H CJNZ A,21H,L1 L1:JNC LP2 MOV A,21H LP2:MOV 22H,A 12.1 试编写程序,将外部数据存储器0010H单元与0020H单元中的数据互换。解:MOV P2,#00H MOV R0,#10HMOV R1,#20HMOVX A,R0MOV 30H,AMOVX A,R1XCH A,30HMOVX R1,AMOV A,30HMOVX R0,ASJMP $ 12.2 已知一个补码形式的16位二进制数(低8
21、位在NUM单元,高8位在NUM+1单元),试编程求出该16位二进制数的绝对值,并存放在原单元中。 MOV A,NUM+1 JNB A.7,DONE MOV R0,#NUM MOV A,R0 CPL A ADD A,#01H MOV R0,A INC R0 MOV A,R0 CPL A ADDC A,#00H MOV R0 A DONE:SJMP $ 12.3 设计一个10ms的延时子程序,已知单片机晶振为6MHZ。解: DELAY:MOV R0,#10 DEL1:MOV R1,#124 DEL2:NOP NOP DJNZ R1,DEL2 DJNZ R0,DEL1 RET12.4 片内RAM 2
22、3H单元开始有一单字节无符号数据块,块长L在20H单元中,试编程求出块中各数据的累加和并存入21H22H单元(22H单元中存放高8位数据)。 解答:相应程序如下: CLR A MOV R2,A MOV R0,20H MOV R1,#23H LOOP:ADD A,R1 JNC NEXT INC R2 NEXT:INC R1 DJNZ R0,LOOP MOV 21H,A MOV 22H,R2 12.5设片内RAM 20H和21H单元内有两个无符号数a和b,请编写求c=a*a+b并把c送入22H的程序,设a和b皆为小于10的整数。解:MOV A,20H MOV DPTR,#TABMOVC A,A+D
23、PTR ADD A,21H MOV 22H,A SJMP $ TAB:DB 0,1,4,9,16,25,36, 49,64,81 12.6 编写一循环程序,查找片内RAM 30H50H单元中含“0AH”的个数,并将查找结果存入51H单元。解: ORG 0000H LJMP 0030H ORG 0030H MOV R0,#30H ;数据区首地址R0 MOV R7,#21H ;数据个数R7 MOV 51H,#00H ;先设“0AH”出现的次数为0 LOOP:MOV A,R0 INC R0 CJNE A,#0AH,NEXT ;比较,不等于0AH转移 INC 51H NEXT: DJNZ R7,LOO
24、P SJMP $ END 12.7 已知片内已知片内RAM 20H和和30H为起始地址的存储区中分别有为起始地址的存储区中分别有8字节无符号被减数和减数(低字节在前,高字节在后)。编写子程序字节无符号被减数和减数(低字节在前,高字节在后)。编写子程序完成减法运算,并把差放入以完成减法运算,并把差放入以20H为起始地址的存储单元中为起始地址的存储单元中BUBTR: MOV R0,#20H ;被减数起始地址送R0 MOV R1,#30H ;减数起始地址送R1 MOV R2,#08H ;字长送R2 CLR C LOOP:MOV A,R0 ;被减数送A SUBB A,R1 ;相减,形成Cy MOV R
25、0,A ;存差 INC R0 ;修改被减数地址指针 INC R1 ;修改减数地址指针 DJNZ R2,LOOP ;若未完,则转LOOP RET 12.8 片内片内RAM 20H单元开始存放着单元开始存放着8个无符号数,编个无符号数,编写子程序找出其中的最大值送入片内写子程序找出其中的最大值送入片内RAM的的30H单元单元 MOV R0,#20H ;数据区首地址送R0 MOV A,R0 ;取第一个数做基准数送A MOV R7,#07H ;比较次数送计数器R7LOOP:INC R0 ;指向下一个单元 MOV 30H,R0 ;要比较的数暂存30H CJNE A,30H,CHK ;两数作比较CHK:J
26、NC LOOP1 ;A大,则转移 MOV A,R0 ;A小,则大数送ALOOP1:DJNZ R7,LOOP ;计数器减1,不为零,继续 MOV 30H,A ;比较完,存结果 RET 12.9 若SP=60H,标号LABEL所在的地址为3456H。LCALL指令的地址为2000H,执行如下指令: 2000HLCALLLABEL 后,堆栈指针SP和堆栈内容发生了什么变化?PC值等于什么?如果指令LCALL直接换成ACALL是否可以?如果换成ACALL指令,可调用的地址范围是什么? 解:执行指令后:SP=62H, (61H)=03H, (62H)=20H, PC=3456H 指令LCALL直接换成A
27、CALL不行,若换成ACALL指令,可调用的地址范围是2000H-27FFH。 12.10 已知已知51系列单片机系统的晶振频率为系列单片机系统的晶振频率为6MHz,请,请编写程序,使用编写程序,使用T0定时,在定时,在P1.0输出连续矩形波,输出连续矩形波,其波形其波形如下:如下: ORG 0030H ;采用查询方式的程序MAIN: MOV TMOD,#01H ;设置T0工作于模式1 SETB TR0 ;启动T0WAIT0:SETB P1.0 MOV TH0,#0FFH ;T0计数初值(-25的补码) MOV TL0,#0E7HWAIT1:JNB TF0,WAIT1 CLR TF0 CLR
28、P1.0 MOV TH0,#0FFH ;T0计数初值(-75的补码) MOV TL0,#0B5HWAIT2:JNB TF0,WAIT2 CLR TF0 SJMP WAIT0 ORG 0000H ;采用中断方式的程序 LJMP MAIN ;跳转至主程序 ORG 000BH ;T0中断向量地址 AJMP T0ISR ORG 0030HMAIN:MOV SP,#30H ;调整堆栈指针 MOV TMOD,#01H ;设置T0工作于模式1 MOV TH0,#0FFH ;T0定时初值(-25的补码) MOV TL0,#0E7H MOV IE,#82H ;打开全局中断和T0中断 SETB TR0 ;启动T0 SETB P1.0 SETB F0 ;“输出电平标志”置1(输出高电平) SJMP $ ;循环等待 ORG 0100H ;定时器T0中断服务程序T0ISR: JNB F0,L1 MOV TH1,#0FFH ; T0计数初值(-75的补码) MOV TL1,#0B5H CLR P1.0 CLR F0 ;“输出电平标志”清0(输出低电平) SJMP L2 L1: MOV TH0,#0FFH ;T0定时初值(-25的补码) MOV TL0,#0E7H SETB P1.0 SETB F0 ;“输出电
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 八年级物理上《光的直线传播》教学设计
- 城管年终总结模版
- 护理中级评聘
- 小米3小米电视发布会课件
- 中医情志护理理论与实践
- 中级会计知识点总结模版
- 流动超市商业计划书-超市便利店
- 电视产品培训
- 关爱健康 预防传染病
- 永康国企面试题及答案
- 财务公司调账合同协议
- 2025-2030工业燃气燃烧器行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 配送公司车辆管理制度
- 广西壮族自治区2025年4月高三毕业班诊断学考试物理试卷及答案(广西三模)
- 2025-2030中国建筑装配行业发展分析及竞争格局与发展趋势预测研究报告
- 现代农业产业园入园合同
- 第六单元《军民团结一家亲》课件 中学音乐人音版七年级下册
- 做情绪的主人培训课件
- 农业灌溉设施设备采购及安装合同
- 银行消防安全知识培训
- 西安市存量房屋买卖合同
评论
0/150
提交评论