1、1作业答案 0-1绪论1单片机是把组成微型计算机的各功能部件即(微处理器(CPU)、(存储器(ROM和 RAM)、( 总线)、( 定时器/ 计数器)、(输入/输出接口(I/O 口)及(中断系统)等部件集成在一块芯片上的微型计算机。2什么叫单片机?其主要特点有哪些?解:将微处理器(CPU) 、存储器(存放程序或数据的 ROM 和 RAM) 、总线、定时器/ 计数器、输入/输出接口(I/O 口) 、中断系统和其他多种功能器件集成在一块芯片上的微型计机,称为单片微型计算机,简称单片机。单片机的特点:可靠性高、便于扩展、控制功能强、具有丰富的控制指令、低电压、低功耗、片内存储容量较小、集成度高、体积小
2、、性价比高、应用广泛、易于产品化等。第 1 章 MCS-51 单片机的结构与原理15. MCS-51 系列单片机的引脚中有多少根 I/O 线?它们与单片机对外的地址总线和数据总线之间有什么关系?其地址总线和数据总线各有多少位?对外可寻址的地址空间有多大?解:MCS-51 系列单片机有 4 个 I/O 端口,每个端口都是 8 位双向口,共占 32 根引脚。每个端口都包括一个锁存器(即专用寄存器 P0P3) 、一个输入驱动器和输入缓冲器。通常把 4 个端口称为 P0P3 。在无片外扩展的存储器的系统中,这 4 个端口的每一位都可以作为双向通用 I/O 端口使用。在具有片外扩展存储器的系统中,P2
3、口作为高 8 位地址线,P0口分时作为低 8 位地址线和双向数据总线。MCS-51 系列单片机 数据总线为 8 位,地址总线为 18 位,对外可寻址空间为 64KB。25. 开机复位后,CPU 使用的是哪组工作寄存器( R0-Rn)?它们的地址是什么?CPU 如何确定和改变当前工作寄存器组(R 0-Rn)?解:开机复位后,CPU 使用的是第组工作寄存器。它们的地址是 00H07H。CPU 通过对程序状态字 PSW 中 RS1 和 RS0 的设置来确定和改变当前工作寄存器组。27. MCS-51 单片机的时钟周期、机器周期、指令周期是如何定义的?当主频为 12MHz 的时候,一个机器周期是多长时
4、间?执行一条最长的指令需要多长时间?解:时钟周期又称为振荡周期,由单片机内部振荡电路 OSC 产生,定义为 OSC 时钟频率的倒数。时钟周期又称为节拍(用 P 表示) 。时钟周期是时序中的最小单位。一个状态有两个节拍,机器周期定义为实现特定功能所需的时间。MCS-51 的机器周期由 12 个时钟周期构成。执行一条指令所需要的时间称为指令周期,指令周期是时序中的最大单位。由于机器执行不同指令所需的时间不同,因此不同指令所包含的机器周期数也不尽相同。MCS-51的指令可能包括 14 个不等的机器周期。当 MCS-51 的主频为 12MHz 时,一个机器周期为 1s。执行一条指令需要的最长时间为4s
5、。第 2 章 MCS-51 单片机指令系统与汇编语言程序设计4. 假定累加器 A 中的内容为 30H,执行指令 1000H:MOVC A,A+PC 后,把程序存储器( 1031H )单元的内容送入累加器 A 中。7. 指出下列各指令在程序存储器中所占的字节数(1)MOV DPTR,#1234H 3 字节(2)MOVX A, DPTR 1 字节(3)LJMP LOOP 3 字节2(4)MOV R0,A 1 字节(5)AJMP LOOP 2 字节(6)MOV A,30H 2 字节(7)SJMP LOOP 2 字节(8)MOV B,#30H 2 字节15设堆栈指针(SP)=60H,片内 RAM 中的
6、(30H)=24H, (31H )=10H。执行下列程序段后,61H, 62H, 30H, 31H, DPTR 及 SP 中的内容将有何变化?PUSH 30H PUSH 31H POP DPLPOP DPHMOV 30H, #00H MOV 31H, #0FFH解:结果为: 61H、62H 单元为堆栈单元,其内容已被弹出栈。 (30H)=00H(31H)=0FFH (DPTR)=2410H (SP)=60H17完成以下的数据传送过程(1)R1 的内容传送到 R0。(2)片外 RAM 20H 单元的内容送 R0。(3)片外 RAM 20H 单元的内容送片内 RAM 20H 单元。(4)片外 RA
7、M 1000H 单元的内容送片内 RAM 20H 单元。(5)ROM 2000H 单元的内容送 R0。(6)ROM 2000H 单元的内容送片内 RAM 20H 单元。(7)ROM 2000H 单元的内容送片外 RAM 20H 单元。解:(1)R1 的内容传送到 R0 ;MOV A, R1MOV R0, A(2)片外 RAM 20H 单元内容送 R0 ;MOV R1, #20HMOVX A, R1MOV R0, A(3)片外 RAM 20H 单元的内容送片内 RAM 20H 单元;MOV R0, #20HMOVX A, R0MOV 20H, A(4)片外 RAM 1000H 单元的内容送片内
8、RAM 20H 单元;MOV DPTR, #1000HMOVX A, DPTRMOV 20H, A(5)ROM 2000H 单元的内容送 R0 单元;CLR AMOV DPTR, #2000HMOVC A,A+DPTRMOV R0, A(6)ROM 2000H 单元的内容送片内 RAM 20H 单元;CLR AMOV DPTR, #2000HMOVC A,A+DPTRMOV 20H, A(7)ROM 2000H 单元的内容送片外 RAM 20H 单元。CLR AMOV DPTR, #2000HMOVC A,A+DPTR3MOV R0, #20HMOVX R0, A19编程将片内 RAM 的 4
9、0H60H 单元中内容送到片外 RAM 以 3000H 开始的单元中。并将原片内 RAM 数据块区域全部清 0。解: ORG 0000HLJMP MAINORG 0030HMAIN: MOV SP, #60HMOV R7,#21HMOV R1,#40HMOV DPTR,#3000HLOOP: MOV A,R1MOVX DPTR,AMOV R1, #00HINC R1INC DPTRDJNZ R7,LOOPSJMP $END23设有 100 个有符号数,连续存放在片外 RAM 以 2000H 为首地址的存储区中,试编程统计其中正数、负数、零的个数。解: ORG 0000HLJMP MAINORG
10、 0030HMAIN: MOV R2,#100MOV R3,#00HMOV R4,#00HMOV R5,#00HMOV DPTR,#2000HLOOP: MOVX A,DPTRCJNE A,#00H,NET1INC R3SJMP NET3NET1: JB ACC.7 NET2INC R4SJMP NET3NET2: INC R5NET3: INC DPTRDJNZ R2,LOOPSJMP $END24 试编一查找程序,从外部 RAM 首地址为 2000H、长度为 9FH 的数据块中找出第一个ASCII 码 A,将其地址送到 20A0H 和 20A1H 单元中。解: ORG 0000HLJMP
11、MAINORG 0030HMAIN: MOV SP, #60HMOV DPTR,#2000HMOV R7,#9FHLP0: MOVX A,DPTRCJNE A, #41H, LP1MOV R2,DPLMOV R3,DPHMOV DPTR,#20A0H4MOV A, R2MOVX DPTR,AINC DPTRMOV A, R3MOVX DPTR,ASJMP LP2LP1: INC DPTRDJNZ R7, LP0LP2: RETEND27编 程 实 现 将 片 外 RAM 中 2400H 2450H 单 元 中 的 数 传 送 到 2500H 2550H 单 元 中。 解: ORG 0000HL
12、JMP MAINORG 0030HMAIN: MOV R7,#51HMOV DPTR, #2400HLOOP: MOVX A,DPTRMOV DPH, #25HMOVX DPTR,AMOV DPH, #24HINC DPTRDJNZ R7 ,LOOPSJMP $END另一种方法:ORG 0000HLJMP MAINORG 0030HMAIN: MOV 30H,#24HMOV 31H,#00HMOV 32H,#25HMOV 33H,#00HMOV R2,#51HLOOP: MOV DPH,30HMOV DPL,31HMOVX A,DPTRMOV DPH,32HMOV DPL,33HMOVX DP
13、TR,AINC 31HINC 33HDJNZ R2,LOOPSJMP $END第三章作业答案6. 设(TMOD)=0A5H,则定时器 T0 的状态是( 方式 1 计数),定时器 T1 的状态是( 方式2 定时)。27请写出 为低电平触发的中断系统初始化程序。1INT解:为低电平触发的中断系统初始化程序如下:ORG 0000HLJMP MAINORG 0013HLJMP INTN1ORG 0100HMAIN: MOV SP,#60HSETB EASETB EX1 ; 开 中断1INTCLR PX1 ; 令 为低优先级CLR IT1 ; 令 为电平触发SJMP $END28说明 MCS-51 单片
14、机响应中断后,中断服务的入口地址。 解:中断服务程序的入口地址如下表:中断源 中断矢量外部中断 0( )INT0003H定时器 T0 中断 000BH5外部中断 1( )INT0013H定时器 T1 中断 001BH串行口中断 0023H36使用一个定时器,如何通过软硬结合方法实现较长时间的定时?解: 设定好定时器的定时时间,采用中断方式用软件设置计数次数,进行溢出次数累计,从而得到较长的时间。37利用定时器输出周期为 2 ms 的方波, 设单片机晶振频率为 6 MHz。试编程实现之。解:选用定时器/计数器 T0 作定时器, 工作在方式 1,输出为 P1.0 引脚, 2 ms 的方波可由 1
15、ms 的高低电平相间隔而成, 因而只要每隔 1 ms 对 P1.0 取反一次即可得到这个方波。初值的计算如下:ST0=12/(610 6)= 2106 STC=M-T/T0=216110 3 /2106 =65536500=65036=FE0CH当定时器/计数器采用方式0时,初值为:TC=M-T/T0=213110 3 /2106 =8192500=7692=1E0CH,则真正的16位计数初值为:F00CH(高8位,低5位)程序如下:ORG 0000H LJMP START ORG 000BHLJMP T0INT ; T0 中断入口ORG 0030HSTART: MOV SP, #60H ;
16、初始化程序MOV TL0, #0CH ; T0 赋初值MOV TH0, #0FEHMOV TMOD, #01H ; 定时器/计数器 0 工作于方式 1SETB TR0 ; 启动 T0SETB ET0 ; 开 T0 中断SETB EA ; 开总允许中断SJMP $ T0INT: PUSH ACCPUSH PSWCPL P1.0MOV TL0, #0CHMOV TH0, #0FEH SETB TR0 ; 启动 T0POP PSWPOP ACCRETI END当采用查询方式时:兰色字部分应该为:LP1: JBC TF0, LP2SJMP LP1LP2: CPL P1.0MOV TL0, #0CHMO
17、V TH0, #0FEHSETB TR0SJMP LP1END648某 异 步 通 信 接 口 按 方 式 3 传 送 , 已 知 其 每 分 钟 传 送 3600 个 字 符 , 计 算 其 传 送 波 特 率。解:11(位)3600(字符/分钟) =39600b/分钟=660b/s (方式 3 为每个字符 11 位) 。49利用 8051 串行口控制 8 位发光二极管工作,要求发光二极管每 1s 交替地亮、灭,画出电路图并编写程序。 解:主程序框图如下:开始串口初始化 , F F H 送 S B U F设置 标志调延时 子 程序标志位取反标志为零 ?0 0 H 送 S B U FF F H
18、 送 S B U FYN程序如下:ORG 0040HMOV SCON,#00H MOV SBUF,#0FFHSETB CMOV 00H,CAA: ACALL DELAYCPL 00HMOV C,00HJC BBMOV SBUF,#00HSJMP CCBB:MOV SBUF,#0FFHCC:AJMP AADELAY: MOV R7,#8D1:MOV R6,#250D2:MOV R5,#250D3:DJNZ R5,D3DJNZ R6,D2DJNZ R7,D1RETEND第四章作业答案16 MCS-51 单片机系统中,片外程序存储器和片外数据存储器共用 16 位地址线和 8 位数据线,为何不会产生冲
19、突?解:程序存储器和数据存储器虽然共用 16 位地址线和 8 位数据线,但由于数据存储器的读7和写由 和 信号控制,而程序存储器由读选通信号 控制,这些信号在逻辑上RDWPSEN时序上不会产生冲突,因此,两者虽然共处于同一地址空间,但由于控制信号不同,所以不会发生总线冲突。18某单片机应用系统,需扩展 2 片 8KB 的 EPROM 和 2 片 8KB 的 RAM,采用地址译码法,画出硬件连接图,并指出各芯片的地址范围。解:硬件连接电路图如图 4.18 所示。各芯片的地址范围为:2764(1#):0000H1FFFH 2764(2#):2000H3FFFH6264(1#):4000H5FFFH
20、 6264(2#):6000H7FFFH图 4.18 4.18 题硬件连接电路图218255A 的端口地址为 7F00H7F03H,试编程对 8255A 初始化,使 A 口按方式 0 输入,B 口按方式 1 输出。解:程序如下:MOV DPTR,#7F03HMOV A,#10010100BMOV DPTR,A25使用 8255A 或者 8155 的 B 端口驱动红色和绿色发光二极管各 4 只,且红、绿发光二极管轮流发光各 1s,不断循环,试画出包括地址译码器、8255A 或 8155 与发光管部分的接口电路图,并编写控制程序。解:电路连接图如图 4.25 所示。图 4.25 4.25 题硬件连
21、接电路图8其中,PB0 PB3 接红色发光二极管,PB4PB7 接绿色发光二极管。设 MCS-51 单片机主频为 12MHz。程序如下:ORG 0000HLJMP STARTORG 0030HSTART:MOV SP, #60HMOV DPTR, #7FFFH ; 数据指针指向 8255A 控制口MOV A, #80H MOVX DPTR, A ; 工作方式字送 8255A 控制口MOV DPTR, #7FFDH ; 数据指针指向 8255A 的 B 口MOV A, #0FH ; 置红色发光二极管亮LP1: MOVX DPTR, A ; 置红色发光二极管亮LCALL DELAY ; 调用 1S
22、 延时子程序CPL A ; 置发光二极管亮反色LJMP LP1 ; 循环执行DELAY: MOV R7,#8 ; 1S 延时子程序D1:MOV R6 ,#250D2:MOV R5 ,#250D3:DJNZ R5,D3DJNZ R6,D2DJNZ R7,D1RETEND 采用定时器 T0 方式 1 中断实现 1S 定时。1S=50mS20 次。T0 方式 1 实现 50mS 定时,初值=2 16-50mS/1S=15536=3CB0H(1S=20mS50 次,初值=2 16-20mS/1S=45536=B1E0H)ORG 0000HLJMP STARTORG 000BHLJMP TT0ORG 1
23、000 HSTART:MOV SP, #60HMOV DPTR, #7FFFH ; 数据指针指向 8255A 控制口MOV A, #80H MOVX DPTR, A ; 工作方式字送 8255A 控制口MOV DPTR, #7FFDH ; 数据指针指向 8255A 的 B 口MOV A, #0FH ; 置红色发光二极管亮MOV R2, AMOVX DPTR, A ; 置红色发光二极管亮MOV 30H, #00H ; 次数计数单元初值MOV TL0, #0B0H ; T0 赋初值MOV TH0, #3CHMOV TMOD, #01H ; 定时器/计数器 0 工作于方式 1SETB TR0 ; 启
24、动 T0SETB ET0 ; 开 T0 中断SETB EA ; 开总允许中断LP1:SJMP LP1 ; 等待定时器中断TT0: PUSH ACCPUSH PSWINC 30HMOV A, 30HCJNE A, #20, LP2MOV A, R2CPL AMOV R2, AMOVX DPTR, AMOV 30H, #00HLP2: MOV TL0, #0B0H ; T0 赋初值9MOV TH0, #3CHPOP PSWPOP ACCSETB TR0RETIEND26简述 RS-232C, RS-422A 及 RS-485 串行通信接口的特点,画出在双机通信情况下,3个串行通信接口的接口电路。解
25、:RS-232C 采取不平衡传输方式,是为点对点(即只用一对收、发设备)通信而设计的,采用负逻辑,其驱动器负载为 3k7k。由于 RS-232C 发送电平与接收电平的差仅为23V,所以其共模抑制能力差,再加上双绞线上的分布电容,因此,RS-232C 适用于传送距离不大于 15m, 速 度 不 高 于 20kb/s 的 本 地 设 备 之 间 通 信 的 场 合 。RS-422 由 RS-232 发展而来,RS-422 定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到 1220m(速率低于 100kb/s 时) ,并允许在一条平衡总线上最多连接 10 个接收器。RS-422
26、是一种单机发送、多机接收的单向、平衡的通信总线标准。RS-485 是在 RS-422 的基础上制定的标准,增加了多点、双向通信能力,通常在要求通信距离为几十米至上千米时,广泛采用 RS-485 总线标准。它采用平衡发送和差分接收,即在发送端,驱动器将 TTL 电平信号转换成差分信号输出;在接收端,接收器将差分信号变成 TTL 电平。具有较高的灵敏度,能检测低至 200mV 的电压,具有抑制共模干扰的能力,数据传输可达千米以上。RS-232 的双机通信接口电路如图 4.26-1 所示。图 4.26-1 4.26 题硬件连接电路图RS-422 和 RS-485 的双机通信接口电路如图 4.26-2
27、 所示。图 4.26-2 4.26 题硬件连接电路图31何谓“看门狗” ?它如何实现对系统程序的监控?解:“看门狗(WDT) ”,也称为程序监视定时器。 WDT 的作用是通过不断监视程序每周期的运行事件是否超过正常状态下所需要的时间,从而判断程序是否进入了“死循环”,并对进入“死循环 ”的程序作出系统复位处理。在程序中设置适当的指令,清 WDT,就可监视微处理器的工作。例如在主程序开始时,将 WDT 置位,如果主程序执行过程中产生死循环,就无法清 WDT,超过 WDT 的定时时间时,WDT 就会对微处理器发出复位信号。从而实现对系统程序的监控。1032说明 I2C 总线的特点以及在单片机中实现
28、该总线的方法。解:I2C 总线是由串行数据线 SDA 和串行时钟线 SCL 构成的,可发送和接收数据。它允许若干兼容器件共享总线。所有挂接在 I2C 总线上的器件和接口电路都应具有 I2C 总线接口,且所有的 SDA/SCL 同名端相连。总线上所有器件要依靠 SDA 发送的地址信号寻址,不需要片选线。I2C 总线最主要的优点是其简单性和有效性。占用的空间小,降低了互连成本。总线的长度可高达 7.6m,并且能够以 10kbps 的最大传输速率支持 40 个组件。支持多主控器件,其中,任何能够进行发送和接收的设备都可以成为主器件。主控能够控制信号的传输和时钟频率。当然,在某时刻只能有一个主控器件。
29、在单片机控制系统中,广泛使用 I2C 器件。如果单片机自带 I2C 总线接口,则所有 I2C器件对应连接到该总线上即可;若无 I2C 总线接口,则可以使用 I/O 口模拟 I2C 总线。使用单片机 I/O 口模拟 I2C 总线时,硬件连接非常简单,只需两条 I/O 口线即可,在软件中分别定义成 SCL 和SDA。MCS-51 单片机实现 I2C 总线接口电路如图 4.32所示。电路中单片机的 P1.0 引脚作为串行时钟线SCL,P1.1 引脚作为串行数据线 SDA,通过程序模拟I2C 串行总线的通信方式。I 2C 总线适用于通信速度要求不高而体积要求较高的应用系统。第五章作业答案6. 当 DA
30、C 0832 D/A 转换器的 CS接 8031 的 P2.0 时,程序中 0832 的地址指针 DPDR 寄存器应置为( D ) 。A:0832H B;FE00H C:FEF8H D;以上三种都可以10简述 D/A 转换器的主要技术指标。 解:D/A 转换器的主要性能指标有:(1)分辨率:单位数字量所对应模拟量增量,即相邻两个二进制码对应的输出电压之差称为 D/A 转换器的分辨率。它确定了 D/A 产生的最小模拟量变化,也可用最低位(LSB)表示。(2)精度:精度是指 D/A 转换器的实际输出与理论值之间的误差,它是以满量程 VFS的百分数或最低有效位(LSB)的分数形式表示。(3)线性误差
31、:D/A 转换器的实际转换特性(各数字输入值所对应的各模拟输出值之间的连线)与理想的转换特性(始、终点连线)之间是有偏差的,这个偏差就是 D/A 的线性误差。即两个相邻的数字码所对应的模拟输出值(之差)与一个 LSB 所对应的模拟值之差。常以 LSB 的分数形式表示。(4)转换时间 TS(建立时间):从 D/A 转换器输入的数字量发生变化开始,到其输出模拟量达到相应的稳定值所需要的时间称为转换时间。22具有 8 位分辨率的 A/D 转换器,当输入 05V 电压时,其最大量化误差是多少?解:对于8位A/D转换器,实际满量程电压为5V,则其量化单位1LSB=5V/256=0.0196V,考虑到A/D转换时会进行四舍五入处理,所以最大量化误差为(1/2)LSB,即0.0098V。23 在 一 个 80C51 单 片 机 与 一 片 DAC0832 组 成 的 应 用 系 统 中 , DAC0832 的 地 址 为7FFFH, 输出电压为 05V。试画出有关逻辑电路图,并编写产生矩形波,其波形占空比为 1:4,高电平为 2.5V,低电平为 1.25V 的转换程序。解:图 4.32 4.32 题硬件连接电路图