1、第二章 1、 MCS-51系列单片机内部有哪些主要的逻辑部件? P10 答: MCS-51 系列单片机内部的逻辑部件主要有:算术 /逻辑部件 ALU、累加器A、只读存储器 ROM、随机存储器 RAM、指令寄存器 IR、程序计数器 PC、定时器 /计数器、 I/O接口电路、程序状态寄存器 PSW、寄存器组。 3、 MCS-51内部 RAM区功能如何分配?如何选用 4组工作寄存器中的一组作为当前的工作寄存器组?位寻址区域的字节地址范围是多少? P13-P15 答: MCS-51内部 RAM的地址空间为 00H-7FH, 128B,按功能分为 3个区域。00H-1FH 的 32B 单元是 4 个工作
2、寄存器组,单片机执行程序时,具体使用哪一组是通过对 PSW的 RS1、 RS0两位的设置来实现; 20H-2FH的 16B共128位,是可以按位寻址的内部 RAM区; 30H-7FH的 80B单元是只能按字节寻址的内部 RAM区。 5、 8031设有 4个 8位并行端口,若实际应用 8位 I/O口,应使用 P0-P3中的哪个端口传送? 16位地址如何形成? P19-P21 答: P1口是专门供用户使用的 I/O口,是准双向接口,故可以 使用 P1口 传送 ; P0口既可作地址 /数据总线使用,又可作通用 I/O使用。一方 面用来输出外部存储器或 I/O 的低 8 位地址,另一方面作为 8 位数
3、据输入 /输出口,故 由 P0口输出 16位地址 的 低 8位; 08212032_程仕湘 _单片机原理与应用课程作业 1 P2口可作通用 I/O口使用,与 P1 口相同。当外接存储器或 I/O时, P2口给出地址的高 8位,故 P2口输出 16位地址的 高 8位 。 8、 MCS-51的时钟周期、机器周期、指令周期是如何分配的?当振荡频率为 10MHz时,一个机器周期为多少微妙? P25 答: CPU执行一条指令的时间称为指令周期,它是以机器周期为单位的。 MCS-51典型的指令周期为一个机器周期 , 每个机器周期由 6 个状态周期组成,每个状态周期由 2个 时钟 周期 (振荡周期) 组成。
4、 1= 6 = 1 2 = 1 2 一 个 机 器 周 期 一 个 状 态 周 期 一 个 时 钟 周 期 振 荡 频 率 当振荡频率为 10MHz时,一个机器周期为 12/10M Hz=1.2us。 9、 在 MCS-51 扩展系统中,片外程序存储器和片外数据存储器地址一样时,为什么不会发生冲突? P12; P13、 P18 答: 1、 程序存储器和数据存储器 物理上是独立的, 寻址片外程序存储器和片外数据存储器的寻址方式、寻址空间和控制信号不同。 2、 对外部程序存储器 访问 使用 MOVC 指令;对外部数据存储器 访问 使用MOVX指令。 10、 MCS-51的 P3口具有哪些第二 种功
5、能? P19表 2-6 答: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0(外部中断 0) P3.3 INT(外部中断 1) P3.4 T0(定时器 0外部中断) P3.5 T1(定时器 1外部中断) 08212032_程仕湘 _单片机原理与应用课程作业 2 P3.6 WR(外部数据存储器写信号) P3.7 RD(外部数据存储器读信号) 11、位地址 7CH 与字节地址 7CH 有哪些区别?位地址 7CH 具体在内存中什么位置? P14 答:位地址 7CH与字节地址 7CH在 RAM中的位置不同,寻址方式也不用。位地址 7CH在内部 RAM区 2FH中,可
6、以位寻址;字节地址 7CH在用户区中,只能按字节寻址。 第三章 2、什么是寻址方式? MCS-51单片机有哪几种寻址方式? P36 答:寻址方式是指令中确定操作数的形式。 MSC-51单片机有立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。 3、指出下列指令中画线的操作数的寻址方式? P36 MOV R0, #55H ; 立即寻址 MOV A, 2AH ; 直接寻址 MOV A, R1 ; 寄存器间接寻址 MOV R0, A ; 寄存器寻址 DIV A, B ; 寄存器寻址 ADD A, R7 ; 寄存器寻址 08212032_程仕湘 _单片机原理与应用课程作业
7、3 MOVX A, DPTR ; 寄存器间接寻址 MOV DPTR, #0123H ; 立即寻址 MOVC A, A+DPTR ; 基址加 变址寻址 INC DPTR ; 寄存器寻址 7、为什么要进行十进制调整?调整方法是什么? P49 答:十进制表示用 BCD 码规则,相加大于 10 进位;运算用二进制规则,相加大于 16进位。所以要进行十进制调整。调整方法: 数的低四位大于 9或标志位 AC=1,则低四位加 06H调整。高四位大于 9或标志位 CY=1则高四位加 60H。 8、编程实现两个一字节压缩型 BCD 码的减法。设被减数地址在 R0中,减数地址在 R1中,差仍存于被减数地址单元中。
8、 ? 答: CLR C MOV A,#9AH SUBB A,R1 ADD A,R0 DA A MOV R0, A 9、把片外数据存储 器 8000H单元中的数据读到累加器中,应用哪几条指令? P45例 3.7 答: MOV DPTR, #8000H 08212032_程仕湘 _单片机原理与应用课程作业 4 MOV A, DPTR 10、已知内部 RAM 中, (A)=35H, (R0)=6FH, (P1)=0FCH,(SP)=0C0H。分别写出下列各条指令的执行结果。 P41- (1) MOV R0, A ; (R0)=35H P41( 2) (2) MOV R0, A ; (6FH)=35H
9、 P42( 4) (3) MOV A, #90H ; (A)=90H P41( 1) (4) MOV A, 90H ; (A)=(90H) P41( 1) (5) MOV 80H, #81H ; (80H)=81H P42( 3) (6) MOVX R0, A ; (6FH)=35H P45 2 (7) PUSH A ; (0C1H)=35H,(SP)=0C1H P43( 6) (8) SWAP A ; (A)=53H P44( 8) (9) XCH A, R0 ; (A)=6FH,(R0)=35H P44( 7) 08212032_程仕湘 _单片机原理与应用课程作业 5 第四章 2、在汇编语
10、言程序设计中,为什么要采用标号来表示地址?标号的构成原则是什么?使用标号有什 么限制?注释段起什么作用? P69 答:采用标号便于在编写程序时 ,实现跳转、循环等程序控制转移。 标号位于语句的开始,由以字母开头的字母和数字组成,它代表语句的地址。标号与指令间要用冒号“:”分开,标号与“:”之间不能有空格,“:”与操作码之间可以有空格。 注释段放在语句的最后,以冒号开始,为不可执行部分,对程序进行解释性说明。 3、 MCS-51 汇编语言有哪几条常用的伪指令?各起什么作用?P70-P72 答: MCS-51汇编语言有以下常用的伪指令: 1、设置起始地址伪指令 ORG( Origin) 格式: O
11、RG 起始地址 作用: ORG 伪指令总是出现在每段源程序或数据块的开始,可以使程序、子程序和数据快存放在存储器的任何位置。若在源程序中不放 ORG指令,则汇编将从 0000H单元开始编排目标程序。 ORG定义控件地址应由从小到大,且不能重叠。 2、定义字节伪指令 DB( Define Byte) 08212032_程仕湘 _单片机原理与应用课程作业 6 格式: DB 作用:把项或项表的数值存入从标号开始的连续单元中。 3、定义字伪指令 DW( Define Word) 格式: DW 作用:基本含义与 DB相同,不同的是 DW定义 16位 数据。 4、预留存储区伪指令 DS( Define S
12、torage) 格式: DS 作用:由标号指定的单元开始,定义一个存储区,以给程序使用。存储区内预留的存储单元数由表达式的值决定。 5、为标号赋值伪指令 EQU 格式: EQU 数或汇编符号 作用:将操作数中的地址或数据赋给标号字段的标号,故又称为等值指令。 6、数据地址赋值伪指令 DATA 格式: DATA 作用:其功能和 EQU类似,但有以下区别。 ( 1)用 DATA定义的标识符汇编时作为标号登记在符号表中 ,所以可以先使用后定义;而 EQU定义的标识符必须先定义后使用。 ( 2)用 EQU 可以把一个汇编符号赋给字符名,而 DATA 只能把数据赋给字符名。 ( 3) DATA可以把一个
13、表达式赋给字符名,而 DATA只能把数据赋给字符名。 ( 4) DATA常在程序中用来定义数据地址。 08212032_程仕湘 _单片机原理与应用课程作业 7 7、位地址符号伪指令 BIT 格式:字符名 BIT 位地址 作用:把位地址赋给字符名称 8、源程序结束伪指令 END 格式: END 作用: END命令通知汇编程序结束汇编。在 END之后,所有的汇编语言指令均不作处理。如果没有这条 指令,汇编程序通常会给出“警告”指示。 6、外部 RAM中从 1000H到 10FFH有一个数据区,现在将它传送到外部 RAM中 2500H单元开始的区域中,编写有关程序。 COMPARE WITH P80
14、 例 4.10 答: START: MOV R0, #00H MOV DPTR,#1000H LOOP: MOVX A,DPTR MOV DPH,#25H MOVX DPTR,A MOV DPH,#10H INC DPTR INC R0 DJNZ R0, LOOP SJMP $ 08212032_程仕湘 _单片机原理与应用课程作业 8 11、设系统晶体振荡频率为 12MHz,请编写延时 50ms 的延时子程序。 P81例 4.11 答:使用 12MHz晶振时, 1个机器周期为 1us,一条 DJNZ耗时 2us,采用双重循环方法, 50ms=2us*250*100,程序如下: DL50MS:
15、MOV R4, #100 DELAY1: MOV R3 , #250 DELAY2: DJNZ R3, DELAY2 DJNZ R4, DELAY1 RET 12、分析下列程序中各条指令的作用,并说明运行后相应寄存器和内存单元的结果。 MOV A, #34H ; (A)=34H MOV B, #0ABH ; (B)=0ABH MOV 34H, #78H ; (34H)=78H XCH A, R0 ; (A),(R0)互换 XCH A, R0 ; (A),(R0)互换 XCH A, B ; (A),(B)互换 SJMP $ ; 暂停 08212032_程仕湘 _单片机原理与应用课程作业 9 第五
16、章: 2、 8051单片机的定时器 /计数器有哪几种工作方式?各有什么特点?P105 答: 8051单片机的定时器 /计数器有 4种工作方式,分别是: 工作方式 0: M1M0=00,为 13 位定位器 /计数器,其计数器由 THi 的全 8位和 TLi 的低 5 位构成, TLi 的高 3 位未用。当 TLi 的低 5 位计满时,向THi 进位, THi 溢出后对中断标志位 TFi 置“ 1”,并申请中断。 Ti 是否溢出可用软件查询 TFi是否为“ 1”。 计 数器范围为 1-8192,如需再次定时或计数,需要用指令重置时间常数。 工作方式 1: M1M2=01,与工作方式 0基本相同,不
17、同之处在于其为 16位定时器 /计数器,计数值范围为 1-65536,如需再次定时或计数,需要用指令重置时间常数。 工作方式 2: M1M0=10,为可重装初值的 8位定时器 /计数器。把 16 位的计数器拆成两个 8 位计数器, TLi 用作 8 位计数器, THi 用来保存初值。每当TLi计满溢出时,可自动将 THi的初值再装入 TLi,继续计数,循环重复。其计数范围为 1-256。 这种工作方式可省去用户软件中重装初值的 程序,并可产生相当精度的定时时间,特别适合于产生周期性脉冲及作为串行口波特率发生器,缺点是计数长度太小。 工作方式 3: M1M0=11,该工作方式只适用于 T0。 T
18、0在该工作方式被分成两个相互独立的 8 位计数器,其中 TL0 既可以作计数器使用,又可以作定时器08212032_程仕湘 _单片机原理与应用课程作业 10 使用。而 TH0 只能作 8 位定时使用,并占用了 T1 的控制启动位 TR1 和溢出标志位 TF1。 T1 只能工作在方式 0、方式 1或方式 2,只能用在不需中断控制的场合。 工作方式 3 是为了在使用串行口时,需要两个独立的计数器而特别提供的。因为此时把定时器 1规定用作串行通信的波特率发生器,并设定为工作方式 2,使用时只要将计数器初值送到计数器寄存器即开始工作,启动后不需要软件干预,也不使用溢出标志。 9、设 晶振 频率为 6M
19、Hz。编程实现:使用定时器 T0 工作在方式 2、定时,在 P1.4输出周期为 100us,占空比为 4:1的矩形脉冲。 答:使用晶体振荡器频率为 6MHz时, 1个机器周期为 2us。欲使占空比为 4:1,可将矩形脉冲分为 5 份,前 4 份 P1.4输出高电平,第 5份输出低电平。 计数初值: 8 0( 2 T )t 初 值 机 器 周 期 。计数 初值满足:( 256-Y) *2us=20us,解得计数初值为 Y=246=0F6H,则 TH0=TL0=0F6H。 TMOD 寄存器定义: D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1
20、M0 定时器 1 定时器 0 定时器工作方式定义: M1 M0 工作方式 说明 0 0 0 13位定时器 /计数器 0 1 1 16位定时器 /计数器 1 0 2 可重装 8位定时器 /计数器 1 1 3 T0分成两个 8位定时器 /计数器, T1停止计数 定时器 0,定时方式 2,故 TMOD设置: 00000010=02H, 。程序如下: ORG 2000H START: MOV TMOD, #02H /定时器 0,定时方式 2 08212032_程仕湘 _单片机原理与应用课程作业 11 MOV TL0, 0F6H /初值送 TL0 MOV TH0, 0F6H /初值送 TH0 SETB
21、P1.4 /P1.4置高 SETB TR0 /允许 T0计数 LOOP: MOV R0, #4 /由于是 4:1,故计数周期定为 4 WAIT1: JNB TF0, WAIT1 /等待定时器 T0溢出标志位 CLR TF0 /软件清零 TF0 DJNZ R0, WAIT1 /判断 R0是否等于 0,即判断是否循环了四次 CPL P1.4 /对 P1.4取反 WAIT2: JNB TF0, WAIT2/等待定时器 T0溢出标志位,即判断是否循环一次 CLR TF0 /软件清零 TF0 CPL P1.4 /对 P1.4再次取反 SJMP LOOP /程序循环运行 第六章 2、 MCS-51单片机的
22、串行口共有哪几种工作方式?各有什么特点和功能? P129 答: MCS-51单片机的串行口共有以下四种工作方式: 工作方式 0: SM1SM0=00,为同步移位寄存器。当一个数据写入串行口发送缓冲器时,串行口即将 8 位数据以 fosc/12 的固定波特率从 RXD 引脚输出,低位在先, TXD 为移位脉冲信号输出端。发送完 8 位数据后中断标志08212032_程仕湘 _单片机原理与应用课程作业 12 位 T1置“ 1”。 特点是:移位寄存器的发送和接收以 8 位为一帧 ,不设起始位和停止位,低位在前高位在后,波特率固定,一个机器周期移位一次。 工作方式 1: SM1SM0=01,串行口被定
23、义为波特率可变的 8 位异步通信接口。方式 1的波特率 =(2smod/32) x定 时器 T1的溢出率 特点为:一帧信息为 10位,其中 1位起始位“ 0”, 8位数据位(地位在前)和一位停止位“ 1”,其波特率可变。 工作方式 2: SM1SM0=10,串行口被定义为 9位异步通信接口。 方式 2的波特率 =(2smod/64) x 振荡器频率 特点是:一帧信息为 11 位, 1 位起始位“ 0”, 8 位数据位(低位再前), 1位可编程为“ 1”或“ 0”的第 9位数据, 1位停止位“ 1”。 工作方式 3: SM1SM0=11,串行口被定义为波特率可变的 9 位异步通信方式,除了波特率
24、外,方式 3和方式 2完全相同。 方式 3的波特率 =(2smod/32) x 定时器 T1的溢出率 特点:一帧信息为 11 位, 1 位起始位“ 0”, 8 位数据位(低位在先), 1 位可编程为“ 1”或“ 0”的第 9位数据, 1位停止位“ 1”。 3、 MCS-51单片机 4种工作方式的波特率应如何确定? P134 答: MCS-51单片机波特率的确定方法: ( 1)方式 0的波特率 =fosc/12 ( 2)方式 1的波特率 =(2smod/32) x定时器 T1的溢出率。 ( 3)方式 2的波特率 =(2smod/64) x 振荡器频率 08212032_程仕湘 _单片机原理与应用
25、课程作业 13 ( 4)方式 3的波特率 =(2smod/32) x 定时器 T1的溢出率 7、请用查询法编写程序实现串行口工作方式 1 下的发送程序。设单片机主频为 11.0592MHz,波特率为 1200bps、发送数据缓冲 区在外部 RAM,起始地址为 1000H,数据块长度为 30B,采用偶校验(其他条件自设)。 答: 1) 设数据为 ASCII码形式,最高位作为奇偶校验位 。 2) T1作为波特率发生器,工作于方式 2。 TMOD寄存器定义: D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0 定时器 1 定时器 0 定时器工作
26、方式定义: M1 M0 工作方式 说明 0 0 0 13位 定时器 /计数器 0 1 1 16位定时器 /计数器 1 0 2 可重装 8位定时器 /计数器 1 1 3 T0分成两个 8位定时器 /计数器, T1 停止计数 故, TMOD=20H; 3) 设 SMOD=0。 4) 串行口工作在方式 1 SCOD寄存器定义: D7 D6 D5 D4 D3 D2 D1 D0 SM0 SM1 SM2 REN TB8 RB8 TI RI 串行口工作方式定义: SM0 SM1 工作方式 方式简单描述 波特率 0 0 0 移位寄存器 I/O 主振频率 /12 0 1 1 8位 UART 可变 1 0 2 9
27、位 UART 主振频率 /32或主振频率 /64 1 1 3 9位 UART 可变 故, SCON=40H; 5) 波特率为 1200bps 08212032_程仕湘 _单片机原理与应用课程作业 14 S M O D21 = T132 方 式 的 波 特 率 定 时 器 的 溢 出 率o s c KfT1 = 12 12- 定 时 器 的 溢 出 率 初 值 S M O DK o s c2f 110592003 8 4 3 8 4= 2 - = 2 5 6 - = 2 3 2 = 0 E 8 H波 特 率 1200初 值通过计算得 T1 的时间常数为 0E8H。 程序如下: ORG 1000H
28、 START: MOV TMOD, #20H ; T1工作方式 2 MOV TL1, #0E8H MOV TH1, #0E8H MOV PCON, #00H ; SMOD=0波特率不倍增 SETB TR1 ;启动 T1 MOV SCON, #40H ;串行口工作方式 1 MOV DPTR, #1000H ; MOV R2, #30 ;计数值 30 LOOP: MOVX A, DPTR MOV C, P ; 送奇偶标志 MOV ACC.7, C ; MOV SBUF, A ;发送字符 WAIT: JNB TI, WAIT ; CLR TI ; INC DPTR 08212032_程仕湘 _单片机
29、原理与应用课程作业 15 DJNZ R2, LOOP AJMP START 第七章 1、 MCS-51 有几个中断源?有几级中断优先级?各中断标志如何产生?又如何清除? P149 答: 5个中断源: 2个外部中断 INT0、 INT1, 3个内部中断 T0、 T1、串行口。 2个优先级:高级中断和低级中断,由用户定义。 中断标志的产生: (1) 外部中 断可以设置边沿触发或者电平触发,边沿触发进入中断程序后硬件自动清中断标志,电平触发需要软件清标志位; (2) 定时器 T0, T1计数溢出产生中断,进入中断程序硬件自动清标志位; (3) 串行口发送完成或者接收到数据就触发中断,由于是两个中断标
30、志共享一个中断向量,所以需要在中断程序里由软件判断是发送中断还是接受中断,并且只能由软件清标志位; 中断请求的清除: (1) 定时中断由硬件自动撤除定时中断响应后,硬件自动把标志位( TFx)清零。 (2) 外部中断的自动与强制撤除 若外部中断以脉冲方式触发,则由 硬件自动地把标志位( IEx)清零。 24 若以电平方式触发,则需由外部电路和软件配合撤除。 (3)串行中断软件撤除 CLR TI; CLR RI; 08212032_程仕湘 _单片机原理与应用课程作业 16 2、 什么是中断优先级?优先级的处理原则是什么? P151 答: CPU一般与多个中断源相连,因此有多个中断同时发生的可能,
31、 为使系统能及时响应并 处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程序, 将中断源分为若干个级别,称作中断优先级; 中断优先级的处理原则: 1、低优先级中断请求不能打断高优先级的中断服务;但高优先级中断请求可以打断低优先级的中断服务, 从而实现中断嵌套。 2、如果一个中断请求已被响应,则同级的其他中断响应将被禁止。 3、如果同级的多个请求同时出现,则按 CPU 查询次序确定哪个中断请求被响应。其查询次序为:外部中断 0定时中断 0外部中断 1定时中断串行中断。 8 试编写一段对中断系统初始化的程序,使之允许 INT0、 INT1、 T0和串行口中断,且使串行口中断为高优先级中断。
32、P150、 P151 答: 允许 INT0、 INT1、 T0和串行口中断 中断控制寄存器 IE定义: D7 D6 D5 D4 D3 D2 D1 D0 EA ET2 ES ET1 EX1 ET0 EX0 EA=1(中断使能), ES=1(串行口中断), EX1=1( INT1 中断), ET0=1( T0中断), EX0=1( INT0 中断)。故 IE=97H; 串行口中断为高优先级中断 优先级寄存器 IP定义: D7 D6 D5 D4 D3 D2 D1 D0 PT2 PS PT1 PX1 PT0 PX0 PS=1(串行口中断高优先级),故 IP=10H; 08212032_程仕湘 _单片机原理与应用课程作业 17 MOV IE #97H MOV IP #10H 第八章 9、 MCS-51 单片机利用 4KB 的 EPROM 2764 和 2KB 的 SRAM 6116及 74HC138译码器 ,构成一个具有 8KB ROM, 16KB RAM 的存储器系统,给出硬件连接图并指 出各芯片地址范围。 答: 需要两个 2764和 8个 6116。