ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:27.93KB ,
资源ID:10670291      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10670291.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机原理与应用基于Proteus和Keil C 课后答案复习题解答.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机原理与应用基于Proteus和Keil C 课后答案复习题解答.docx

1、单片机原理与应用基于Proteus和Keil C 课后答案复习题解答第2章 MCS-51单片机结构及原理习题1MSC51单片机部由哪些功能部件组成,各有什么功能?答:以80C51单片机为例,其部功能部件有:控制器:是对取自程序存储器中的指令进行译码,在规定的时刻发出各种操作所需的控制信号,完成指令所规定的功能;运算器:根据控制器发来的信号,执行算术逻辑运算操作;存储器:包括程序存储和数据存储器;定时器计数器:2个16位定时器/计数器,可对机器周期计数,也可对外部输入脉冲计数;中断系统:可响应三个部中断源和两个外部中断源的中断请求;输入输出接口:4个8位并行口和一个全双工串行口;2MSC51单片

2、机外部引脚的名称是什么?各有什么功能?答:(1) 电源及晶振引脚VCC(40脚):+5V电源引脚VSS(20脚): 接地引脚XTAL1(19脚);外接晶振引脚(置放大器输入端)XTAL2(18脚):外接晶振引脚(置放大器输出端)(2) 控制引脚RST/VPD(9)为复位/ 备用电源引脚 ALE/PROG(30)为地址锁存使能输出/ 编程脉冲输入 PSEN(29):输出访问片外程序存储器读选通信号 EA/ VPP (31):外部ROM允许访问/ 编程电源输入 (3) 并行I/O口引脚P0.0P0.7(3932脚)P0口; P1.0P1.7(18脚)P1口;P2.0P2.7(2128脚)P2口;P

3、3.0P3.7(1017脚)P3口。351系列单片机的封装有哪些类型?请说明每一种封装引脚之间的距离。答:51系列单片机的封装有:40引脚双列直插封装(DIPdual in-line package),引脚之间的距离是100mil(2.54mm);44引脚方形扁平封装(QFP quad flat package)方式,引脚之间的距离是2.54mm;44引脚带引线的塑料芯片载体PLCC(Plastic Leaded Chip Carrier)。4什么是复位?单片机复位电路有哪几种,工作原理分别是什么?答:复位使单片机恢复原始默认状态的操作。单片机复位电路有:上电复位电路,由电阻和电容构成,通过上

4、电时,电容相当于短路而使复位引脚在晶振有效的情况下保持2个机器周期的高电平;按钮开关复位电路,由两个电阻的分压构成,通过手工按下按钮,使复位引脚在晶振有效的情况下保持2个机器周期的高电平。5通常的微机系统存储器结构有哪几种?MCS-51单片机存储器属于哪一类?CS-51可寻址多大空间?答:通常的微机系统存储器结构有两种结构,即哈佛结构和诺依曼结构(也叫普林斯顿结构),MCS-51单片机存储器属于,MCS-51可寻址空间是两个64KB,即64KB的程序存储空间和64KB的数据存储空间。6片RAM中低128个单元划分为哪三个主要部分?各部分的主要功能是什么?答:片RAM中低128个单元划分为三个部

5、分:工作寄存器区(00H-1FH),四组,每组8个,可作用工作寄存器切换使用;可位寻址区(20H-2FH),16B,位地址为00H-7FH,用作为按位寻址的空间;用户RAM区(30H-7FH),80B,用作普通RAM单元或堆栈。7程序状态字寄存器PSW各位的定义是什么?答:程序状态字寄存器PSW各位的定义如下:PSW.7:进/借位标志CY,加法有进位时置1,减法有借位时置1;PSW.6:辅助进位标志AC,加法运算低四位向高上四位有进位时置1;PSW.5、PSW.1:用户标志位F0和用户标志位F1,保存用户的位数据;PSW.4、PSW.3:工作寄存器选择控制位RS1和RS0,00至11分别选择四

6、组工作之一作为当前工作寄存器PSW.2 :溢出标志位OV,有符号数加、减运算结果有溢出或乘除上结果异常(乘法运算结果大于255即乘积在BA中,或除法运算除数为0)时置1PSW.0:奇偶标志位P,累加器A中1的个数为奇数时置1。8什么是时钟周期?什么是机器周期?什么是指令周期?当振荡频率为12MHz时,一个机器周期为多少微秒?答:时钟周期又叫振荡周期或拍,用P表示,是MCS-51单片机中最小的时间单位,在一个时钟周期,CPU完成一个最基本的动作。机器周期:由12个时钟周期构成,完成一个基本操作指令周期:是执行一条指令所需的时间,根据指令的复杂性,可由14个机器周期构成。当振荡频率为12MHz时,

7、一个机器周期为1微秒。9P0、P1、P2和P3口的结构和功能分别是什么?答:P0口的每一位由1个锁存器 、2个三态缓冲器 、1个输出控制电路(非门 X、与门、电子开关MUX、输出驱动电路构成,其功能既可以作为通用I/O口实现输入/输出功能,也可作为单片机地址线的低8位和数据线实现外部扩展功能。在用作输入输出口时,需外接上拉电阻。P1口的每一位由1个锁存器 、1个场效应管驱动器V和2个三态门缓冲器构成,其作用是用作输入输出口P2口的每一位由1个锁存器、2个三态缓冲器、1个输出控制单元、1个输出驱动单元构成,其功能是用作输入输出口,或地址总线的高8位。P3口的每一位由1个锁存器、2个三态缓冲器、1

8、个第二功能控制单元 、1个输出驱动单元构成,其作用是用作输入输出口或第二功能。1080C51单片机引脚ALE的作用是什么?当80C51不外接存储器时,ALE上的输出的脉冲频率是多少?答:80C51单片机引脚ALE的作用是对外部存储寻址时锁存P0口输出的低8位地址,当80C51不外接存储器时,ALE上的输出的脉冲频率是fosc/6。第3章 单片机的汇编语言与程序设计习题1MCS-51单片机有哪几种寻址方式?适用于什么地址空间?答:MCS-51单片机有7种寻址方式:直接寻址、寄存器寻址、寄存器间接寻址、立即寻址、变址寻址、位寻址、相对寻址。直接寻址方式:操作数的地址由指令直接给出,适用于片RAM的

9、所有地址空间;如 MOV A,68H MOV A,PSW寄存器寻址方式:指令给出的是寄存器的编码,操作数在编码指定的寄存器中,适用于片00H至1FH的32个字节,用R0,R7表示,通过PSW的RS1和RS0选择组号确定对应32个字节中的其中8个,还有累加器A,以及乘除法指令中的A和B寄存器,位寻址方式中的布尔累加器C; MOV A,R1 MUL AB INC DPTR寄存器间接寻址方式:指令给出的是寄存器的编码,操作数地址在编码指定的寄存器中,适用于片RAM的全部空间,其中52系列中的80H至FFH只能用寄存器间接寻址;如 MOV A,R0 MOV A,R1 MOVX A,DPTR立即寻址方式

10、:操作数本身在指令中直接,给出适用于用8位立即数对片RAM所有地址单元赋值,也可用16位立即数对DPTR赋值; 如 MOV A,#0E2H MOV DPTR,#2000H变址寻址方式:以DPTR或PC作为基地址寄存器,以累加器A作为变址寄存器,将基址寄存器与变址寄存器的容相加形成操作数的实际地址的一种寻址方式,变址寻址方式适用于程序存储器ROM,仅有三条指令如下:MOVC A,A+DPTR MOVC A,A+PC JMP A+DPTR位寻址方式:指令中直接给出操作数所在单元的位地址,适用于片RAM中地址20H至2FH中的16个字节中的128个位地址空间和80H至FFH中地址中可以被8整除的所有

11、SFR中的每个位地址空间;如 MOV C,7FH MOV F0,C MOV C,ACC.7相对寻址方式:为相对转移指令而设,指令中直接给出转移的相对偏移量,其转移目标在当前指令-128至127字节围的地址空间。如 SJMP START HERE: SJMP HERE ;等效于: SJMP $2MCS-51单片机的PSW程序状态字中无ZERO(零)标志位,怎样判断某部数据单元的容是否为零?答:MCS-51单片机的PSW程序状态字中无ZERO(零)标志位,判断某部数据单元的容是否为零是能通过取数到A累加器,再判断A中的每一位是否为零来确定其值是否为零。3编程将部RAM的20H-30H单元容清零。解

12、:设一个片RAM指针R0,先指向首地址20H,通过累加器A清零,然后采用间接寻址方式依次将A中的零值传送到指针所指的片RAM单元,每传送一个字节,地址指针加1,直到达到地址为30H或达到计数器规定的17个字节为止。程序1: MOV R0,#20H ;设地址指针初值 CLR A ;累加器清0CONT: MOV R0,A ;置0指针所指单元 INC R0 ;地址指针加1 CJNE R0,#31H,CONT ;指针未超过终点则继续 SJMP $ ;暂停程序2: MOV R0,#20H ;设地址指针初值 CLR A ;累加器清0 MOV R7,#17 ;计数器赋初值,从20H到30H共17个字节CON

13、T: MOV R0,A ;置0指针所指单元 INC R0 ;地址指针加1 DJNZ R7, CONT ;计数器减1,非0,则继续 SJMP $ ;暂停4编程查找部RAM的32H41H单元中是否有0AAH这个数据,若有这一数据,则将50H单元置为0FFH,否则将50H单元清零。解:设一个片RAM指针R0,先指向首地址32H,比较R0与#0AAH,若相等,则退出循环,给50H单元赋0FFH,若不相等,则R0加1为继续比较下一个字节做准备,直到达到地址为41H或达到计数器规定的16个字节为止还没找到,则给50H单元赋00H程序1: MOV R0,#32H ;设地址指针初值CONT: CJNE R0,

14、#0AAH,NEXT;比较查找值与指针所指单元的值,不相等转移 MOV A,#0FFH ;相等,则准备好要赋的标志值0FFH SJMP DOWN ;转存到保存结果处NEXT: INC R0 ;修改地址指针 CJNE R0,#42H,CONT ;若指针未越过终点,则继续 MOV A,#00H ;查找失败,则将00H存入结果标志单元DOWN: MOV 50H,A ;将比较结果标志存入50H单元 SJMP $ ;暂停 END程序2: MOV R7,#16 ;计数器赋初值,从20H到30H共16个字节 MOV R0,#32H ;设地址指针初值CONT: CJNE R0,#0AAH,NEXT ;比较查找

15、值与指针所指单元的值,不相等转移 MOV A,#0FFH ;相等,则准备好要赋的标志值0FFH SJMP DOWN ;转存到保存结果处NEXT: INC R0 ;修改地址指针 DJNZ R7,CONT ;计数器减1,非0,则继续 MOV A,#00H ;查找失败,则将00H存入结果标志单元DOWN: MOV 50H,A ;将比较结果标志存入50H单元 SJMP $ ;暂停 END5查找20H4FH单元中出现00H的次数,并将查找结果存入50H单元。解:从20H到4FH共48个字节 MOV R7,#48 ;字节计数器赋初值MOV R0,#20H ;设地址指针初值CONT: CJNE R0,#00

16、H,NEXT ;比较查找值与指针所指单元的值,不相等转移 INC R6 ;相等,0的个数计数器加1NEXT: INC R0 ;修改地址指针 DJNZ R7,CONT ;计数器减1,非0,则继续 MOV 50H,R6 ;保存O的个数计数值到50H单元 SJMP $ ;暂停 END END6已知A=83H,R0=17H,(17H)=34H,写出下列程序段执行之后的A中的容。 ANL A,#17H ORL 17H,A XRL A,R0 CPL A END答: ANL A,#17H ;A=03H ORL 17H,A ;(17H)=0011 0100 0000 0011=0011 0111 XRL A,

17、R0 ;A= 0000 0011 0011 0111 =0011 0100 CPL A ;A=1100 10117已知单片机的晶振频率为12MHz,分别设计延时为0.1s、1s的子程序。答:已知单片机的晶振频率为12MHz,则机器周期为1us,延时子程序是通过执行指令序列中机器周期数来达到,如果要0.1s,即100ms,也就是100000us,所以需要机器周期数达到100000。要延时达到1S,可通过对延时为0.1秒的子程序调用10次来实现。DELAY100MS: MOV R6,#200 ;1个机器周期D1: MOV R7,#250 ;1个机器周期D2: NOP ;1个机器周期 DJNZ R7

18、,D2 ;2个机器周期,3*251=753 DJNZ R6,D1 ;2个机器周期,(1+753+2)*132=99792 RET ;2个机器周期,1+99792+2=99795,约100msDELAY1S: MOV R7,#10 ;计数10次 1LOOP: ACALL DELAY100MS ;延时100ms子程序 99795+2 DJNZ R7,LOOP ;未达到10次则继续 10*(2+99795+2) RET ;返回2+10*(2+99795+2)=9979928部RAM从20H单元开始处有一数据块,以ODH为结束标志,试统计该数据块的长度,将该数据块送到外部数据存储器7E01H开始的单元

19、,并将长度存入7E00H单元。解:从20H的指针用R0,从外部RAM7E01开始的指针用DPTR,计数器用R7 MOV R7,#0 ;字节计数器赋初值 MOV R0,#20H ;设片RAM地址指针初值 MOV DPTR,#7E01H ;设片外RAM地址指针初值CONT: MOV A,R0 ;取片RAM中的一个字节 MOVX DPTR,A ;存入片外RAM指针所指单元 INC R7 ;长度计数器加1 INC R0 ;片RAM地址指针加1 INC DPTR ;片外RAM地址指针加1 CJNE A,#0DH,CONT ;未达到结束标志 MOV A,R7 ;取块计数长度值 MOVX DPTR,A ;保

20、存 SJMP $ ;暂停 END9部RAM从DATA开始的区域中存放着10个单字节十进制数,求其累加和,并将结果存入SUM和SUM+1单元。解:R7计数,R6保存累加和高8位,R0用作地址指针 ORG 0000H LJMP MAIN ORG 100HSUM EQU 30HDATAA EQU 40HMAIN: MOV R7,#10 ;字节计数器赋初值 MOV R0,#DATAA ;设片RAM地址指针初值 CLR A ;累加器清0 MOV R6,A ;累加结果的高8位CONT: ADD A,R0 ;加RAM中的一个字节到ACC DA A JNC NEXT ;若无进位则不用管高8位 INC R6 ;

21、有进位,高8位加1NEXT: INC R0 ;片RAM地址指针加1 DJNZ R7,CONT ;未完继续 MOV SUM,A ;保存低8位 MOV SUM+1,R6 ;保存高8位 SJMP $ ;暂停 END10部RAM从DATA1和DATA2单元开始处存放着两个等长的数据块,数据块的长度在LEN单元中。请编程检查这两个数据块是否相等,若相等,将0FFH写入RESULT单元,否则将0写入RESULT单元。解:从DATA1开始的指针用R0,从DATA2开始的指针用R1,计数器用R7LEN EQU 10DATA1 EQU 30HDATA2 EQU 40HRESULT EQU 50H MOV R7,

22、#LEN ;字节计数器赋初值 MOV R0,#DATA1 ;设片RAM地址指针初值 MOV R1,#DATA2 ;设片外RAM地址指针初值CONT: MOV A,R0 ;取片RAM R0所指的的一个字节 MOV 7FH,R1 ;将R1所指单元容取到片RAM地址7FH中 CJNE A,7FH,NOEQ ;比较,不相等则结束 INC R0 ;DATA1 RAM地址指针加1 INC R1 ;DATA2 RAM地址指针加1 DJNZ R7,CONT ;未完,继续 MOV A,#0FFH ;相等,准备写入FFH SJMP DOWN ;转写入结果处NOEQ: MOV A,#0 ;不相等,准备写入00HDO

23、WN: MOV RESULT,A ;保存比较结果标志 SJMP $ ;暂停 END11编制程序,将部RAM中M1、M2、M3和M4单元中的无符号数xl、x2、x3和x4相加,并把和存入RO和R1(R0中为高8位)中。解:M1 EQU 30HM2 EQU 40HM3 EQU 45HM4 EQU 4FH MOV A,M1 ;取第一个数 ADD A,M2 ;与第二个数相加 JNC NEXT1 ;如果无进位,则转移至第三个相加 MOV R0,#1 ;有进位,高8位置1NEXT1: ADD A,M3 ;与第三个数相加 JNC NEXT2 ;没有进位,则转至第四个数相加 INC R0 ;有进位,高8位加1

24、NEXT2: ADD A,M4 ;与第四个数相加 JNC NEXT3 ;没有进位,则转至结束 INC R0 ;有进位,高8位再加1NEXT3: MOV R1,A ;低8位保存到R1 SJMP $ ;暂停 END第4章 单片机的C51语言习题1C语言的优点是什么?C程序的主要结构特点是什么?答:C语言是一种高级语言,学习比低级容易,不需要具体组织、分配存储器资源和处理端口数据,可以直接驱动单片机的所有资源。C程序以函数为单位,由一个主函数和若干个其他函数构成,主函数是程序的入口,其他函数由主函数直接或间接调用。程序可以由一个文件或多个文件组成。文件类型包括头文件和C语言源文件,也可以是汇编语言文

25、件,C程序可与汇编语言混合编程。2C51语言的变量定义包含哪些关键因素?为何这样考虑?答:C语言的变量定义格式如下:存储种类数据类型存储类型变量名其中:存储种类与标准C语言相同,包括:自动型(auto)、外部型(extern)、静态型(static)、寄存器型(register)。数据类型除了包含标准C语言类型的字符型(char),整型(int),长整型(long),浮点型(float),双精度型(double)外,还有二进制位型(bit),特殊功能寄存器型(sfr),SFR可位寻址的位类型(sbit)。存储类型包括:片RAM区(data)、片可位寻址区(bdata),片RAM间接寻址区(id

26、ata),片外RAM页寻址区(pdata),片外RAM区(xdata)、ROM区(code)。只所以比标准C语言多了存储类型,就是因为MCS51单片机的存储结构中有四个物理存储空间(片RAM、片ROM,片外RAM,片外ROM),三个逻辑地址空间(片RAM,片外RAM,ROM),而且有多种寻址方式(直接寻址、间接寻址、页面寻址、位寻址)所致,所以在定义变量时,要根据其所在位置和寻址方式明确指定存储类型。3C51与汇编语言的特点各有哪些?怎样实现两者的优势互补?答:C51是结构化语言,代码紧凑;接近自然语言,程序可读性强,易于调试、维护;库函数丰富,编程工作量小,可使产品开发周期短;具有机器级控制

27、能力,功能很强,适合于嵌入式系统开发;汇编指令无关,易于掌握,上手快。 汇编语言优点是编写的程序代码精炼、执行速度快,在相同功能下,汇编语言程序可能比C语言程序效率高。缺点是对程序员要求高,必须对单片机的硬件结构非常熟悉才能编程,不便于编写比较复杂的程序。可根据需要对要求时间性很强的代码用汇编语言编写,其它部分用C语言编写,两者混合编程就可以实现优势互补。4指出下面程序的语法错误: #include main() a=C; int a=7,C delay(10) void delay(); cgar i; for(i=O; i=255; ”+”); 答: #include main() a=C

28、; /a和C必须先定义才可使用 int a=7,C /缺分号,应该提在使用前说明 delay(10) /延时子程序必须先定义,或先有函数原型说明 void delay(); /作为函数定义,有函数定义不能嵌套的问题,/即不能在一个函数定义另一个函数,而且“”前不应有分号/作为函数原型说明,应该放在函数调用之前,且其后不应该接函数体 cgar i; /字符型应该是unsigned char for(i=O; i=255; ”+”);/ ”+”应改成i+/主函数没有结束,缺”5定义变量a,b,c,其中a为部RAM的可位寻址区的字符变量,b为外部数据存储区浮点型变量,c为指向 int 型 xdata

29、 区的指针。答: char bdata a; float xdata b; int xdata *c;6编程将8051的部数据存储器20H单元和35H单元的数据相乘,结果存到外部数据存储器中(任意位置)。解:方法二:单用C语言编程实现#include#includeint movdata(char);void main() unsigned int xdata x; unsigned char *ptr,a,b; ptr=0x25; a=*ptr; ptr=0x30; b=*ptr; x=a*b;78051的片数据存储器25H单元中存放有一个010的整数,编程求其平方根(精确到5位有效数字),将平方根放到30H单元为首址的存中。解:方法二:单用C语言编程实现/MAIN.C#include#includeint movdata(char);void main() char n; char *ptr

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1