类型第六章单片机基础学习知识原理与应用第二版习题集规范标准答案.doc

收藏

编号:2626765    类型:共享资源    大小:92.71KB    格式:DOC    上传时间:2020-04-25
  
8
金币
分享到微信 分享到微博 分享到QQ空间
关 键 词:
第六 单片机 基础 学习 知识 原理 应用 利用 运用 第二 习题集 规范 标准答案
资源描述:
.* 习 题 1. 何为“准双向I/O接口”?在MCS-51单片机的四个并口中,哪些是“准双向I/O接口”? 答:准双向I/O接口是能实现输入输出功能,但在使用时只能从输入和输出中选择一个。MCS-51单片机的四个并口中P1、P2、P3是准双向I/O接口。 2. 80C51单片机内部有几个定时/计数器?它们由哪些功能寄存器组成?怎样实现定时功能和计数功能? 答:80C51单片机内部有两个16位的可编程定时/计数器,由TH0,TL0,TH1,TL1,TMOD和TCON功能寄存器组成。通过TMOD中的C/T位选择对机器周期计数实现计数功能,选择对外部脉冲计数实现计数功能。 3. 定时/计数器T0有几种工作方式?各自的特点是什么? 答:有四种工作方式,特点见下表: M1 M0 工作方式 方式说明 0 0 0 13位定时/计数器 0 1 1 16位定时/计数器 1 0 2 8位自动重置定时/计数器 1 1 3 两个8位定时/计数器(只有T0有) 4. 定时/计数器的四种工作方式各自的计数范围是多少?如果要计10个单位,不同的方式初值应为多少? 答:有四种方式。方式0计数范围:1~8192;方式1计数范围:1~65536;方式2计数范围:1~256;方式3计数范围:1~256。 如果计10个单位,方式0初值为:8192-10=8182;方式1初值为:65536-10=65526;方式2初值为:256-10=246;方式2初值为:256-10=246。 5. 设振荡频率为12MHz,如果用定时/计数器T0产生周期为100ms的方波,可以选择哪几种方式,其初值分别设为多少? 答:只能选择方式1,初值为65536-50000=15536。 6. 何为同步通信?何为异步通信?各自的特点是什么? 答:异步通信方式的特点是数据在线路上传送时是以一个字符(字节)为单位,未传送时线路处于空闲状态,空闲线路约定为高电平“1”。特点是对发送时钟和接收时钟的要求相对不高,线路简单,但传送速度较慢。 同步通信方式的特点是数据在线路上传送时以字符块为单位,一次传送多个字符,传送时须在前面加上一个或两个同步字符,后面加上校验字符。特点是对发送时钟和接收时钟要求较高,往往用同一个时钟源控制,控制线路复杂,传送速度快。 7. 单工、半双工和全双工有什么区别? 答:单工方式只有一根数据线,信息只能单向传送;半双工方式也只有一根数据线,但信息可以分时双向传送;全双工方式有两根数据线,在同一个时刻能够实现数据双向传送。 8. 设某异步通信接口,每帧信息格式为10位,当接口每秒传送1000个字符时,其波特率为多少? 答:10000波特 9. 串行口数据寄存器SBUF有什么特点? 答:发送数据寄存器和接收数据寄存器合起用一个特殊功能寄存器SBUF(串行口数据寄存器),执行MOV SBUF,A发送时为发送数据寄存器,执行MOV A, SBUF接收时为接收数据寄存器。 10. MCS-51单片机串行口有几种工作方式?各自特点是什么? 答:有四种工作方式,分别是方式0、方式1、方式2和方式3。其中: 方式0,称为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展I/O接口。 方式1,称为8位的异步通信方式,通常用于双机通信。 方式2和方式3,称为9位的异步通信方式,通常用于多机通信。 11. 说明SM2在方式2和方式3对数据接收有何影响。 答:通过SM2对方式2和方式3数据接收进行控制, SM2=1,那么只有接收的第9位为“1”才接收有效。如SM2=0,接收的第9位无论为1还是0都接收有效。 12. 怎样来实现利用串行口扩展并行输入/输出口? 答:利用串行口在方式0时,当外接一个串入并出的移位寄存器,就可以扩展并行输出口;当外接一个并入串出的移位寄存器时,就可以扩展并行输入口。 13. 什么是中断、中断允许和中断屏蔽? 答:在计算机中,由于计算机内外部的原因或软硬件的原因,使CPU从当前正在执行的程序中暂停下来,而自动转去执行预先安排好的为处理该原因所对应的服务程序。执行完服务程序后,再返回被暂停的位置继续执行原来的程序,这个过程称为中断,实现中断的硬件系统和软件系统称为中断系统。中断允许是允许中断请求送CPU产生中断,中断屏蔽是禁止中断请求信号送CPU产生中断。 14. 8051有几个中断源?中断请求如何提出? 答:MCS-51单片机提供5个硬件中断源:两个外部中断源(P3.2)和(P3.3),两个定时/计数器T0和T1中断;1个串行口中断。 外部中断源和的中断请求信号从外部引脚P3.2和P3.3输入;两个定时/计数器T0和T1的溢出中断TF0和TF1定时/计数器T0(或T1)溢出时提出;串行口中断由发送中断标志T1和接收中断标志R1产生。 15. 8051的中断源中,哪些中断请求信号在中断响应时可以自动清除?哪些不能自动清除?应如何处理? 答:工作在边沿触发方式下的两个外部中断源和两个定时/计数器中断中断请求信号在中断响应时可以自动清除,工作在电平触发方式下的两个外部中断源和串行口中断不能自动清除。工作在电平触发方式下的两个外部中断源的中断请求信号通过外加硬件和加软件的方式清除,串行口中断标志T1和标志R1完全由软件清除。 16. 8051的中断优先级有几级?在形成中断嵌套时各级有何规定? 答:8051的中断优先级有两级;形成中断嵌套时规定(1) 正在进行的中断过程不能被新的同级或低优先级的中断请求所中断,直到该中断服务程序结束,返回了主程序且执行了主程序中的一条指令后,CPU才响应新的中断请求。 (2) 正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套。 (3) CPU同时接收到几个中断请求时,首先响应优先级最高的中断请求。 17. 设8051的P1中各位接发光二极管,分别用汇编语言和C语言编程实现逐个轮流点亮二极管,并循环显示。 参考程序: ORG 0000H LJMP MAIN ORG 0100H ;主程序 MAIN: MOV A,#01H LOOP:MOV P1,A CALL DELAY RL A SJMP LOOP SJMP $ DELAY:MOV R7,#0FFH DJNZ R7,$ RET END C语言程序: #include //包含特殊功能寄存器库 void delay(unsigned int x); void main() { unsigned char i,j; while(1) {i=01; for (j=0;j<8;j++) {P1=i; delay(100); i=i*2; } } } void delay(unsigned int x) { unsigned char j; while(x--) {for (j=0;j<125;j++);} } 18. 8051系统中,已知振荡频率为12MHz,用定时/计数器T0,实现从P1.0产生周期为2ms的方波。要求分别用汇编语言和C语言进行编程。 解:分析:从P1.0输出周期为2ms的方波,只须P1.0每1ms取反一次则可。当系统时钟为12MHZ,定时/计数器T0工作于方式1时,最大的定时时间为65.536ms,满足1ms的定时要求,方式控制字应设定为00000001B(01H)。定时1ms,计数值N为1000,初值X=65536-1000=64536,则TH0=FCH,TL0=18H。 采用中断处理方式: 程序如下: ORG 0000H LJMP MAIN ORG 000BH ;中断处理程序 MOV TH0,#0FCH MOV TL0,#18H CPL P1.0 RETI ORG 0100H ;主程序 MAIN: MOV TMOD,#01H MOV TH0,#0FCH MOV TL0,#18H SETB EA SETB ET0 SETB TR0 SJMP $ END C语言程序: #include //包含特殊功能寄存器库 sbit P1_0=P1^0; void main() { TMOD=0x01; TH0=0xFC;TL0=0x18; EA=1;ET0=1; TR0=1; while(1); } void time0_int(void) interrupt 1 //中断服务程序 { TH0=0xFC;TL0=0x18; P1_0=!P1_0; } 19. 8051系统中,已知振荡频率为12MHz,用定时/计数器T1,实现从P1.1产生周期为2s的方波。要求分别用汇编语言和C语言进行编程。 解: 从P1.1产生2s的方波,应产生500ms的周期性的定时,定时到对P1.1取反就可实现。由于定时时间较长,一个定时/计数器T1不能直接实现,采用定时/计数器T1产生周期性为10ms的定时,然后用一个寄存器R2对10ms计数100次来实现。系统时钟为12MHZ,定时/计数器T1定时10ms,计数值N为10000,只能选方式1,方式控制字为00010000B(10H),初值X: X=65536-10000=55536=1101100011110000B 则TH1=11011000B=D8H,TL1=11110000B=F0H。 定时/计数器T1采用中断处理方式。 汇编程序: ORG 0000H LJMP MAIN ORG 001BH LJMP INTT1 ORG 0100H MAIN: MOV TMOD,#10H MOV TH1,#0D8H MOV TL1,#0F0H MOV R2,#00H SETB EA SETB ET1 SETB TR1 SJMP $ INTT1: MOV TH1,#0D8H MOV TL1,#0F0H INC R2 CJNE R2,#64H,NEXT CPL P1.1 MOV R2,#00H NEXT: RETI END C语言程序: #include //包含特殊功能寄存器库 sbit P1_1=P1^1; char i; void main() { TMOD=0x10; TH1=0xD8;TL1=0xf0; EA=1;ET1=1; i=0; TR1=1; while(1); } void time0_int(void) interrupt 3 //中断服务程序 { TH1=0xD8;TL1=0xf0; i++; if (i= =100) {P1_1=! P1_1;i=0;} } 20. 8051系统中,已知振荡频率为12MHz,用定时/计数器T1,实现从P1.1产生高电平宽度为10ms,低电平宽度为20ms的矩形波。要求分别用汇编语言和C语言进行编程。 解: 本题处理方式有多种,这里采用对定时/计数器T1形成10ms周期定时,用R2对10ms计数,当计到1,则对P1.1置1,当计到2和3,则对P1.1置0来实现。用定时/计数器T1形成10ms周期定时见上题。 程序如下: ORG 0000H LJMP MAIN ORG 001BH LJMP INTT1 ORG 0100H MAIN: MOV TMOD,#10H MOV TH1,#0D8H MOV TL1,#0F0H MOV R2,#00H SETB EA SETB ET1 SETB TR1 SJMP $ INTT1: MOV TH1,#0D8H MOV TL1,#0F0H INC R2 CJNE R2,#01H,NEXT SETB P1.1 SJMP EXIT NEXT: CJNE R2,#02H,NEXT1 CLR P1.1 SJMP EXIT NEXT1:CJNE R2,#03H,NEXT SETB P1.1 MOV R2,#00 EXIT: RETI END C语言程序: #include //包含特殊功能寄存器库 sbit P1_1=P1^1; char i; void main() { TMOD=0x10; TH1=0xD8;TL1=0xf0; EA=1;ET1=1; i=0; TR1=1; while(1) { if (i= =0) {P1_1=1;} if (i= =1) {P1_1=0;} if (i= =2) {P1_1=0;} } ; } void time0_int(void) interrupt 3 //中断服务程序 { TH1=0xD8;TL1=0xf0; i++; if (i= =3) {i=0;} } 21. 用8051单片机的串行口扩展并行I/O接口,控制16个发光二极管依次发光,画出电路图,用汇编语言和C语言分别编写相应的程序。 解: 采用在串口连接两个CD4094来实现,电路图如下: 8051 RXD TXD P1.0 DATA CLK STB DATA CLK STB 程序如下; ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV SCON,#00H MOV R4,#10H MOV R3,#00H MOV R2,#01H CLR P1.0 START:MOV A,R3 MOV SBUF,A LOOP: JNB TI,LOOP MOV A,R2 MOV SBUF,A LOOP1:JNB TI,LOOP1 SETB P1.0 ACALL DELAY CLR TI CLR C MOV A,R2 RLC A MOV R2,A MOV A,R3 RLC A MOV R3,A CLR P1.0 DJNZ R4,START1 SJMP MAIN DELAY:MOV R7,#05H LOOP2:MOV R6,#0FFH LOOP1:DJNZ R6,LOOP1 DJNZ R7,LOOP2 RET END C语言程序: #include void delay(unsigned int x); union { unsigned int word; struct{unsigned char high;unsigned char low;}bytes; }number; void main() { int i; SCON=0x00; while(1) { number.word=0x01; for (i=0;i<16;i++) {SBUF=number.bytes.low; while(!TI); TI=0; SBUF=number.bytes.high; while(!TI); TI=0; delay(10); number.word=number.word*2; } } } void delay(unsigned int x) { unsigned char j; while(x--) {for (j=0;j<125;j++);} } 22. 用汇编语言编程设计一个8051双机通信系统,将A机的片内RAM中30H~3FH的数据块通过串行口传送到B机的片内RAM的40H~4FH中,并画出电路图。 解:线路连接如图所示。 分析:甲、乙两机都选择方式1即8位异步通信方式,最高位用作奇偶校验,波特率为1200bps,甲机发送,乙机接收,因此甲机的串口控制字为40H,乙机的串口控制字为50H。 由于选择的是方式1,波特率由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定,则需对定时/计数器T1初始化。 设SMOD=0,甲、乙两机的振荡频率为12MHz,由于波特率为1200bps。定时/计数器T1选择为方式2,则初值如下。 初值=256 - fosc2SMOD /(12波特率32) =256-12000000/(12120032)≈230=E6H 根据要求,定时/计数器T1的方式控制字为20H。 甲机的发送程序: TSTART: MOV TMOD,#20H MOV TL1,#0E6H MOV TH1,#0E6H MOV PCON,#00H MOV SCON,#40H MOV R0,#30H MOV R7,#10H SETB TR1 LOOP: MOV A,@R0 MOV C,P MOV ACC.7,C MOV SBUF,A WAIT: JNB TI,WAIT CLR TI INC R0 DJNZ R7,LOOP RET 乙机的接收程序: RSTART: MOV TMOD,#20H MOV TL1,#0E6H MOV TH1,#0E6H MOV PCON,#00H MOV R0,#40H MOV R7,#10H SETB TR1 LOOP: MOV SCON,#50H WAIT: JNB RI,WAIT MOV A,SBUF MOV C,P JC ERROR ANL A,#7FH MOV @R0,A INC R0 DJNZ R7,LOOP RET
展开阅读全文
提示  得力文库 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:第六章单片机基础学习知识原理与应用第二版习题集规范标准答案.doc
链接地址:https://www.deliwenku.com/p-2626765.html
关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com  

收起
展开