1、习 题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 位选择对机器周期计数实现计数功能,选择对外部脉冲
2、计数实现计数功能。3. 定时/计数器 T0 有几种工作方式?各自的特点是什么?答:有四种工作方式,特点见下表:M1 M0 工作方式 方式说明0 0 0 13 位定时/计数器0 1 1 16 位定时/计数器1 0 2 8 位自动重置定时/计数器1 1 3 两个 8 位定时/计数器(只有 T0 有)4. 定时/计数器的四种工作方式各自的 计数范围是多少?如果要计 10 个单位,不同的方式初值应为多少?答:有四种方式。方式 0 计数范围:18192;方式 1 计数范围:165536;方式 2 计数范围:1256;方式 3 计数范围:1256。如果计 10 个单位,方式 0 初值为:8192-10=8
3、182;方式 1 初值为:65536-10=65526;方式 2 初值为:256-10=246;方式 2 初值为:256-10=246。5. 设振荡频率为 12MHz,如果用定时/ 计数器 T0 产生周期为 100ms 的方波,可以 选择哪几种方式,其初值分别设为 多少?答:只能选择方式 1,初值为 65536-50000=15536。6. 何为同步通信?何为异步通信?各自的特点是什么?答:异步通信方式的特点是数据在线路上传送时是以一个字符(字节) 为单位,未传送时线路处于空闲状态,空闲线路约定为高电平“1”。特点是对发送时钟和接收时钟的要求相对不高,线路简单,但传送速度较慢。同步通信方式的特
4、点是数据在线路上传送时以字符块为单位,一次传送多个字符 , 传送 时 须 在 前 面 加 上 一 个 或 两 个 同 步 字 符 , 后 面 加 上 校 验 字 符 。 特点是对发送时钟和接收时钟要求较高,往往用同一个时钟源控制,控制线路复杂,传送速度快。7. 单工、半双工和全双工有什么区别?答:单工方式只有一根数据线,信息只能单向传送;半双工方式也只有一根数据线,Error! No text of specified style in document.128但信 息 可 以 分 时 双 向 传 送 ; 全 双 工 方 式 有 两 根 数 据 线 , 在 同 一 个 时 刻 能 够 实 现
5、数 据 双 向 传 送。8. 设某异步通信接口,每帧 信息格式为 10 位,当接口每秒传送 1000 个字符时,其波特率为多少?答:10000 波特9. 串行口数据寄存器 SBUF 有什么特点?答:发送数据寄存器和接收数据寄存器合起用一个特殊功能寄存器 SBUF(串行口数据寄存器) ,执行 MOV SBUF,A 发送时为发送数据寄存器,执行 MOV A, SBUF 接收时为接收数据寄存器。10. MCS-51 单 片机串行口有几种工作方式?各自特点是什么?答:有四种工作方式,分别是方式 0、方式 1、方式 2 和方式 3。其中:方式 0,称为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展
6、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. 什么是中断、
7、中断允许和中断屏蔽?答:在计算机中,由于计算机内外部的原因或软硬件的原因,使 CPU 从当前正在执行的程序中暂停下来,而自动转去执行预先安排好的为处理该原因所对应的服务程序。执行完服务程序后,再返回被暂停的位置继续执行原来的程序,这个过程称为中断,实现中断的硬件系统和软件系统称为中断系统。中断允许是允许中断请求送 CPU 产生中断,中断屏蔽是禁止中断请求信号送 CPU 产生中断。14. 8051 有几个中断源?中断请求如何提出?答:MCS-51 单片机提供 5 个硬件中断源:两个外部中断源 (P3.2)和 (P3.3),INT0I1两个定时/计数器 T0 和 T1 中断;1 个串行口中断。外部
8、中断源 和 的中断请求信号从外部引脚 P3.2 和 P3.3 输入;两个定时/计INT0数器 T0 和 T1 的溢出中断 TF0 和 TF1 定时/计数器 T0(或 T1)溢出时提出;串行口中断由发送中断标志 T1 和接收中断标志 R1 产生。15. 8051 的中断源中,哪些中断 请求信号在中断响应时可以自 动清除?哪些不能自动清除?应如何处理?答:工作在边沿触发方式下的两个外部中断源和两个定时/计数器中断中断请求信号在中断响应时可以自动清除,工作在电平触发方式下的两个外部中断源和串行口中断不能自动清除。工作在电平触发方式下的两个外部中断源的中断请求信号通过外加硬件和加软件的方式清除,串行口
9、中断标志 T1 和标志 R1 完全由软件清除。16. 8051 的中断优先级有几级?在形成中断嵌套时各级有何规定?Error! No text of specified style in document. 129答:8051 的中断优先级有两级;形成中断嵌套时规定(1) 正在进行的中断过程不能被新的同级或低优先级的中断请求所中断,直到该中断服务程序结束,返回了主程序且执行了主程序中的一条指令后,CPU 才响应新的中断请求。(2) 正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套。(3) CPU 同时接收到几个中断请求时,首先响应优先级最高的中断请求。17. 设 80
10、51 的 P1 中各位接发光二极管,分 别用汇编语言和 C 语言编程实现逐个轮流点亮二极管,并循环显示。参考程序:ORG 0000HLJMP MAINORG 0100H ;主程序MAIN: MOV A,#01HLOOP:MOV P1,ACALL DELAYRL ASJMP LOOPSJMP $DELAY:MOV R7,#0FFHDJNZ R7,$RETENDC 语言程序:#include /包含特殊功能寄存器库void delay(unsigned int x);void main()unsigned char i,j;while(1)i=01;for (j=0;j /包含特殊功能寄存器库sb
11、it P1_0=P10;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;Error! No text of specified style in document. 13119. 8051 系统中,已知振荡频 率为 12MHz,用定时/计数器 T1,实现从 P1.1 产生周期为 2s 的方波。要求分别用汇编语 言和 C 语言进行编程。解:从 P1.1 产生 2s 的方波,应产生
12、 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 0
13、000HLJMP MAINORG 001BHLJMP INTT1ORG 0100HMAIN: MOV TMOD,#10HMOV TH1,#0D8HMOV TL1,#0F0HMOV R2,#00HSETB EASETB ET1SETB TR1SJMP $INTT1: MOV TH1,#0D8HMOV TL1,#0F0HINC R2CJNE R2,#64H,NEXTCPL P1.1MOV R2,#00HNEXT: RETIENDC 语言程序:#include /包含特殊功能寄存器库sbit P1_1=P11;Error! No text of specified style in document
14、.132char 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 语 言 进 行 编 程。解:本题处
15、理方式有多种,这里采用对定时/计数器 T1 形成 10ms 周期定时,用 R2 对10ms 计数,当计到 1,则对 P1.1 置 1,当计到 2 和 3,则对 P1.1 置 0 来实现。用定时/计数器 T1 形成 10ms 周期定时见上题。程序如下:ORG 0000HLJMP MAINORG 001BHLJMP INTT1ORG 0100HMAIN: MOV TMOD,#10HMOV TH1,#0D8HMOV TL1,#0F0HMOV R2,#00HSETB EASETB ET1SETB TR1SJMP $INTT1: MOV TH1,#0D8HMOV TL1,#0F0HError! No t
16、ext of specified style in document. 133INC R2CJNE R2,#01H,NEXTSETB P1.1SJMP EXITNEXT: CJNE R2,#02H,NEXT1CLR P1.1SJMP EXITNEXT1:CJNE R2,#03H, NEXTSETB P1.1MOV R2,#00EXIT: RETIENDC 语言程序:#include /包含特殊功能寄存器库sbit P1_1=P11;char i;void main()TMOD=0x10;TH1=0xD8;TL1=0xf0;EA=1;ET1=1;i=0;TR1=1;while(1) if (i=
17、 =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 来实现,电路图如下:Error! No text of specified style in document.1348051RXD TXD P1.0DATA CLK
18、STBDATA CLKSTB程序如下;ORG 0000HLJMP MAINORG 0100HMAIN: MOV SCON,#00HMOV R4,#10HMOV R3,#00HMOV R2,#01HCLR P1.0START:MOV A,R3MOV SBUF,ALOOP: JNB TI,LOOPMOV A,R2MOV SBUF,ALOOP1:JNB TI,LOOP1SETB P1.0ACALL DELAYCLR TICLR CMOV A,R2RLC AMOV R2,AMOV A,R3RLC AMOV R3,ACLR P1.0DJNZ R4,START1SJMP MAINDELAY:MOV R7,
19、#05HLOOP2:MOV R6,#0FFHError! No text of specified style in document. 135LOOP1:DJNZ R6,LOOP1DJNZ R7,LOOP2RETENDC 语言程序:#include void delay(unsigned int x);unionunsigned int word;structunsigned char high;unsigned char low;bytes;number;void main()int i;SCON=0x00;while(1)number.word=0x01;for (i=0;i16;i+)
20、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;j125;j+);22. 用汇编语言编程设计一个 8051 双机通信系统,将 A 机的片内 RAM 中 30H3FH的数据块通过串行口传送到 B 机的片内 RAM 的 40H4FH 中,并画出 电路图。解:线路连接如图所示。Error! No text
21、of specified style in document.1368051 8051 甲 机 RXD TXD GND TXD RXD GND 乙 机 分析:甲、乙两机都选择方式 1 即 8 位异步通信方式,最高位用作奇偶校验,波特率为 1200bps, 甲 机 发 送 , 乙 机 接 收 , 因 此 甲 机 的 串 口 控 制 字 为 40H, 乙 机 的 串 口 控 制 字为 50H。由于选择的是方式 1,波特率由定时/计数器 T1 的溢出率和电源控制寄存器 PCON 中的 SMOD 位决定,则需对定时/ 计数器 T1 初始化。设 SMOD=0,甲、乙两机的振荡频率为 12MHz,由于波特
22、率为 1200bps。定时/计数器 T1 选择为方式 2,则初值如下。初值=256 - f osc2SMOD /(12波特率32)=256-12000000/(12120032)230=E6H根据要求,定时/计数器 T1 的方式控制字为 20H。甲机的发送程序:TSTART: MOV TMOD,#20H MOV TL1,#0E6HMOV TH1,#0E6HMOV PCON,#00HMOV SCON,#40HMOV R0,#30HMOV R7,#10HSETB TR1LOOP: MOV A,R0MOV C,PMOV ACC.7,C MOV SBUF,AWAIT: JNB TI,WAIT CLR TI INC R0 DJNZ R7,LOOP RET乙机的接收程序:RSTART: MOV TMOD,#20H MOV TL1,#0E6H MOV TH1,#0E6HMOV PCON,#00HMOV R0,#40H MOV R7,#10HSETB TR1LOOP: MOV SCON,#50H WAIT: JNB RI,WAITMOV A,SBUFMOV C,PError! No text of specified style in document. 137JC ERROR ANL A,#7FH MOV R0,AINC R0DJNZ R7,LOOPRET