问题与练习 1
1. 填空
1.微型计算机由三个必要的功能部件组成:CPU、内存和I/O端口。
数据总线、地址总线、控制总线三种总线连接成一个整体。
2、单片机是集成CPU、ROM、RAM、I/O端口、中断系统、定时器/计数器等功能模块。
集成在单个硅片上的芯片级微型计算机系统。
3、目前国际上多以MCU或EMCU来代替“微控制器”一词。
2.简短回答:
1. 微控制器编程语言主要有哪三大类?它们有何特点?
答:单片机的编程语言一般可以分为三类:机器语言、汇编语言和高级语言。
(1)机器语言是直接面向机器、只能被计算机直接识别和执行的计算机语言。
它是由“0”和“1”组成的一串二进制代码。•目标程序执行速度快,内存占用小,运行效率高。
但它不容易理解和记忆,编写、阅读、修改和调试起来也比较麻烦。
(2)汇编语言是一种使用助记符来表示指令的语言,目的是使指令更易于编写、识别和记忆。
该语言本质上是机器语言的符号表示,即汇编指令和机器指令一一对应,所以这种计算机语言也是
它是一种面向机器的语言。用汇编语言编写的程序比同等的高级语言程序具有更高的目标。
代码转换效率高,占用内存资源少,运行速度快;虽然引入了简单的指令助记符,但汇编语言
汇编语言的使用难度比高级语言要大得多;汇编语言也缺乏良好的通用性和可移植性。
(3)C语言是当代应用最广泛、影响最深远的主流高级程序设计语言之一。
用该方案(*©)编写的C源程序可读性强,易学易懂,编程效率高,特别是具有汇编源程序所不具备的优良特性。
通用性和可移植性好,同时还支持结构化编程及其自动化的集成开发工具/环境,使得
这使得程序员能够将时间和精力集中在对他们来说更重要的创造性工作上,从而显著提高
方案的质量和工作的效率。
2.微控制器的主要特点是什么?
答:(1)集成度高,易扩展;(2)面向应用,注重控制;(3)可靠性高,适应性强;(4)
成本效益高且易于嵌入。
目前主流的3.51内核的MCU产品有哪些?它们有什么特点?
答:(DMCS-51系列单片机分为基本型和增强型两个子系列:51子系列和52子系列。
以芯片型号的最后一位数字作为符号。
51系列主要包括8031、8051、8751三种型号,它们的指令系统和芯片引脚完全兼容。
唯一的区别就是片上程序存储器:8031没有片上程序存储器;8051有4KB片上程序存储器
Mask ROM;8751含有4KB的EPROM。51系列单片机的主要特点如下:8位CPU,
包含布尔处理器;内置振荡器,最大时钟频率为12MHz;4KB程序存储器;128字节
数据存储器;128个用户位寻址空间;21个字节特殊功能寄存器;4个8位并行I/O接口;
2 个 16 位定时器/计数器;5 个中断源,具有 2 个优先级;1 个全双工串行端口;111 条指令,包括
乘法/除法指令;由单个+5V电源供电。52系列主要包括三种型号:8032、8052和8752。
52系列与51系列的区别在于片内数据存储器增加到256字节,并增加了特殊功能寄存器
片内程序存储器数量增加到8KB(8032除外);3个16位定时器/计数器,6个中间
其余性能与51系列相同。
(2)AT89系列单片机又分为51、52两个子系列,每个子系列又有4个型号。AT89LS
和 AT89LV 型号可在较低电压 (2.7V) 和更宽电压范围 (2.7V~6.0V) 下工作。借助 Atmel
该公司宣布停止生产AT89C51/52芯片。近年来,AT89C51/2已逐渐被AT89S51/2取代。
与AT89c51/2相比,性能有很大提高,而价格则基本不变,甚至低于AT89c51/2。
AT89s51/2单片机与MCS-51系列单片机的指令和引脚完全兼容。
其功能和特点如下:片内振荡器,最高时钟频率可达33MHz;4/8KB Flash程序存储器,
可擦写次数高达1000次;128/256字节数据存储器,26/32字节特殊功能寄存器;新
增加了在系统/在线编程(ISP)功能,可直接通过串口改写Flash程序,无需专用的编程器/仿真器。
用户代码在序列存储器中;集成双数据指针DPTRO、DPTR1,数据操作更快捷方便;14位
看门狗定时器;低功耗电源管理模式。
(3)STC89系列单片机是宏晶科技生产的8位单片机,保留了传统51单片机的所有功能。
其指令集与传统51系列单片机完全兼容。内置64K字节FLASH用户应用程序空间;支持
ISP(在系统编程)和IAP(在应用编程),ISP 允许用户对微控制器进行编程,而无需将其从开发系统中移除。
下载新代码,IAP是指在应用程序运行时将非易失性数据写入FLASH存储器;片上
集成512/1280字节数据空间,满足多领域的应用需求;12时钟/机器周期(12T)模式或6
时钟/机器周期(6T)模式可根据需要自由配置。此外,该系列产品还包含额外的I/O端口P4、4
外部中断源、定时器T2及看门狗定时器、低功耗管理模式等。
4、简述STC89系列单片机的资源配置。
答:STC89系列单片机的主要配置如下:
• 增强型51核CPU,可运行于1217单速模式或617双速模式,指令代码齐全
兼容传统51单片机;
• 工作电压范围:5.5-3.3V(STC89c子系列)/3.6-2.0V(STC89LE子系列);
• 工作频率范围:0~40MHz,相当于传统51单片机617倍速模式下的0~80MHz,
理论上最高工作频率可达48MHz;
• 片内集成4K/8K/13K/16K/32K/64K字节FLASH用户应用程序空间;
• ISP(系统内可编程)/IAP(应用内可编程),无需专用编程器或仿真器,
直接通过串口下载用户应用程序;
•片上集成512/1280字节RAM存储空间;
• 4个8位双向I/O端口P0~P3,及1个P4口,最多可有35/39个通用I/O口;
•8个中断源,分为4种中断响应优先级;
• 4个外部中断源,支持下降沿或低电平触发方式;
• 三个16位定时器/计数器,其中定时器T2是具有可编程时钟输出的加/减计数器;
• 增强型通用异步串行端口 (UART),具有硬件地址识别、帧错误检测功能,并内置
波特率发生器;
• 带有8位时钟预分频器的15位看门狗定时器;
• 两种低功耗电源管理模式:空闲模式、掉电模式,掉电模式可通过外部中断源唤醒;
• 工作温度范围:-40~85℃(工业级)、.~75℃(商业级);
•封装类型:PDIP-40、PQFP-44、LQFP-44、PLCC-44。
5、简述微控制器的发展趋势。
答:(1)CPU的发展:早期的单片机只能处理8位数据。
微控制器已经非常普遍,有些产品,例如STM32系列微控制器,数据处理能力高达32位。
运行速度越来越快: ①提高时钟频率; ②引入多级流水线技术; ③减少振荡周期数/
机器周期还可以提高指令的执行速度。
(2)存储器的发展:片上集成访问速度更快的FlashROM已成为当前单片机市场的主流。
主流的发展趋势是Flash存储器的内置容量逐渐扩大。
(3)I/O端口的数量和功能:对于通用微控制器,并行I/O端口的数量增加,并且还有几个串行
i/on,增强并行驱动能力。
(4)片上资源增加:除了传统51单片机的中断系统、定时器/计数器、UART串口
除接口外,还可能还有A/D转换器、PWM模块、SCI、SPLCAN串行总线接口等。
(5)开发方法的进步:目前主流的MCU产品都有自己配套的C编译器,尤其是C51语言
它已成为51单片机的通用编程语言。用户可以使用C51语言和KeilC51软件开发工具/
环境,实现高效、快速的51单片机应用程序的编辑、编译、调试、烧写等开发。
在下载/烧录方面,越来越多的产品支持在系统编程(ISP)和在应用编程(IAP)技术。
(6)低电压、低功耗:目前很多单片机产品都可以采用很宽的电压供电,通常其CPU
内核工作在1.5~2.5V,外围I/O口工作在3~5V,并支持低功耗工作模式,可以
根据需要控制CPU进入或退出空闲或掉电状态。
问题与练习 2
1. 填空
4、程序状态字寄存器PSW的CY位表示进位标志,AC位表示辅助进位标志。
0V位表示溢出标志位,P位表示奇偶校验位。
5.执行两个有符号数3CH与F6H相加的指令后,累加器(A)= 32H,CY = J_,AC = J_,
0V=_Q_,P=J_»
6.程序计数器PC有16位,因此可以寻址64KB的程序存储器。
7.堆栈操作遵循的原则是先进后出。
8. 如果堆栈指针 SP 指向单元 30H,则在执行一条推送指令和两条弹出指令后,(SP) =
2FH。
9.8051的机器周期等于12个时钟振荡周期。
10、8051的晶振频率为24MHz,所以一个机器周期为2us。
11、若8051的晶振频率为12MHz,则ALE引脚的输出频率为2MHz。
12、复位后,堆栈指针SP的内容为07H,程序计数器PC指向程序存储器的地址。
0000H,P0~P3端口状态为FFH。
13、只有在RST引脚上持续施加高电平并且持续2个机器周期以上,系统才能可靠复位。
14、微型计算机存储器的基本结构有两种:一种是把程序与数据作为一个存储空间,
一种叫普林斯顿结构;另一种是把程序存储器和数据存储器完全分开,这种结构叫哈佛结构。
15、STC89C52RC引脚接高电平时,优先进行片内ROM的0000H至1FFFH单比特寻址。
当地址范围超出低8KB时,自动切换访问从2000H开始的片外ROM的内存地址。
存储单元,最大可扩展的片外存储容量为学区B。
16、复位后自动选择第二组工作寄存器,堆栈指针SP指向该组工作寄存器组。
17、若选择第L组工作寄存器,需设置状态位RS1RS0为“01”。
寄存器R0-R7的地址为08H~0FH。
18、片内RAM的20H~2FH单元为位寻址区域,共包含128个可寻址位。
19、位寻址区域中20H单元D7位的位地址表示为07H。
20.8051有4个8位双向并行I/O端口,其中唯一的单功能端口是P1。
21、P0口作为通用输出口使用时,只能输出0和高阻。
该引脚需要外部连接上拉电阻,否则无法输出高电平。
22.P0~P3端口作为通用输入口使用时,读引脚前要先设置为输入线,即输出
锁存器写为1,否则无法从其引脚获取外部高电平。
2.简短回答:
1.STC89C52RC单片机内部集成了哪些功能元件?
回答:
XTAL2XTAL1mp,P2P3p4
2. 程序计数器PC中存储了什么?执行一条连续指令后,PC的值将如何变化?
答:程序计数器PC存储下一条要执行的指令的地址。一条指令从内存中取出后,
PC的值自动加1,指向下一条要取的指令的地址或者当前指令后续字节的地址。
3. 根据图2-5,分别简单描述推送操作和弹出操作的工作原理。
答:(1)当执行把数据“8”压入堆栈的指令时,SP首先加1,指向堆栈顶部的前一个单元。
然后将数据“8”压入栈顶指向的存储单元中。(2)在执行数据“3”的pop指令时,先压入
将数据“3”弹出栈顶,并传送到指定单元,再将SP减1,指向原栈顶的下一个单元,也就是数据
“8”的存储单元。
4、STC89C52RC单片机的复位方式有哪几种?复位后各特殊功能寄存器的初始状态是什么?
你的态度如何?
答:STC89C52RC单片机有四种复位方式:外部引脚复位、断电复位、软件复位和
看门狗复位。复位后,程序计数器PC = 0000H,CPU将从程序存储器的0000H地址启动。
指令开始执行;片内数据存储器单元的数据为随机值;特殊功能寄存器的字节数据为00H,或者
可寻址位为0,但不包括以下情况: (1)P0~P3=FFH,附加P4端口的P4.0-P4.6全为“1”;
(2)SP = 07H,此时堆栈指针SP指向片内RAM的07H单元; (3)串口数据缓冲区SBUF
状态不确定;(4)上电/断电复位标志POF(PCON.4)的复位初始状态为“1”。
5.STC89C52RC单片机如何防止程序陷入死循环或者跑飞?
A:为了防止系统在异常情况下受到干扰,导致CPU进入混沌或者死循环,需要引入
“看门狗”技术采用“看门狗”定时器不断计数系统时钟来监控
当看门狗开始运行时,应在规定时间内访问和清除看门狗定时器,以
确保看门狗不溢出,否则会判定系统处于异常状态,并强制系统复位。
6.STC89C52RC单片机的存储器由哪些存储空间组成?
答:STC89c52RC单片机采用哈佛结构,程序存储器和数据存储器独立寻址。
物理上,有四个存储空间,分别是片内程序存储器、片外程序存储器、片内数据存储器和片外
数据存储器。从地址空间来看,有3个存储空间:64KB程序存储器,芯片内外统一寻址
字节空间(0000H~FFFFH),片内数据存储器地址空间512B,片外数据存储器地址空间64KB
(OOOOH-FFFFH)oSTC89C52RC芯片有8KB FlashROM(0000H~1FFFH)和512B RAM,
后者在物理和逻辑上都分为两个地址空间:内部RAM(256B)和内部扩展RAM(256B)。
7、简述STC89c52RC单片机各引脚的功能。
答:CPU根据引脚决定是否访问片内程序存储器或者片外程序存储器:(1)
当该引脚接低电平时,程序计数器PC只能对外部ROM进行寻址,外部存储器从0000H开始寻址。
允许的最大空间为64KB。 (2)当功能引脚接高电平时,CPU会首先打开内部ROM。
地址范围为0000H-1FFFH(即芯片内的低8KB地址),当寻址空间超出低8KB时,
即当地址在2000H~FFFFH范围内时,PC自动切换访问片外ROM。
寻址从2000H开始,最大可扩展到56KB。
8. 片上RAM的低128字节单元主要由哪三个区域组成?各区域的主要功能是什么?
答:128字节数据空间分为三部分: (1)工作寄存器区:可供用户进行数据操作和
传输过程中的临时存储单元。工作寄存器共有32个,地址范围为OOH~1FH。
寄存器分为4组:组0至组3。每组有8个工作寄存器,分别命名为R0至R7。
通过状态字PSW中RSI、RSO位的设置可以选择其中一组作为当前的工作寄存器组。(2)位寻址区:
20H-2FH地址范围内的16字节RAM单元称为位寻址区,这16个字节一共有128位。
每个位都可以使用位寻址来访问,在C语言中,使用bdata存储类型进行访问。
每位被分配一个位地址,这128个可寻址位的地址范围是00H~7FH0 (3)用户数据缓冲区:
地址30H-7FH的内存单元可供用户作为数据缓冲区,共80个字节单元,仅可进行字节查找。
它可以存储运算的初始数据、中间结果和最终结果。
9、简述P0至P3端口在功能和使用上的异同。
答:(1)P1~P3口的内部结构与P0口稍有不同,P1-P3口内部有上拉电阻,而P0
P0口的输出驱动器没有连接内部上拉电阻,因此当P0口作为通用输出口使用时,需要外部连接上拉电阻。
(2)当作为通用输入端口使用时,应先将P0~P3端口设置为各自的端口号,再进行引脚读取。
对于输入线,向其输出锁存器写入“1”即可关闭T2管,否则它无法从其引脚获取外部电源。
高电平。(3)当访问外部存储器或I/O设备时,P0口分时复用为数据/低8位地址总线,P2口
P0口作为高8位地址总线;P3口各引脚还有辅助功能,如表2-10所示。(4)5V单片机的P0口
每条端口线最大吸电流12mA,P1~P3口每条端口线最大吸电流6mA;3V单片机
P0口每线最大吸电流为8mA,P1~P3口每线最大吸电流为4mA。
10、什么是STC89C52RC单片机的空闲模式?如何进入或退出空闲模式?
答:空闲模式又叫待机模式。在空闲/待机模式下,CPU进入空闲状态,片上模块
该块正常工作;使用指令将电源控制寄存器PCON中的IDL位置为“1”,微控制器即可进入空闲/
待机模式;可以通过中断响应或硬件复位退出空闲模式。
11、STC89C52RC单片机的最小应用系统是什么?这个系统至少应该包含什么?
答:单片机最小应用系统,或者简称最小系统,是指由最少的部件组成的,能保证单片机性能的系统。
本系统至少包含STC89c52RC芯片本身及以下内容:
电源电路、时钟电路、复位电路。
问题与练习 3
1. 可以使用哪些寻址模式来访问内部RAM单元?
答:直接寻址、寄存器寻址、位寻址、寄存器间接寻址。
2. 可以使用哪些寻址模式来访问外部RAM单元?
解答:寄存器间接寻址。
3. 哪些寻址模式可以用来访问特殊功能寄存器?
答:直接寻址。
4、编写程序,分别完成以下数据传输操作。
(1)将内部RAM30H单元的内容传送到内部RAM40H单元;
MOV40H,30H
(2)将内部RAM30H单元的内容传送给R0;
摩弗罗,30H
(3)将R0的内容传送到R1;
摩伐,反渗透
莫弗里
(4)将内部RAM30H单元的内容传送到外部RAM1000H单元;
MOVA,30H
MOVDPTR,#1000H
MOVX@DPTR,A
(5)将外部RAM1000H单元的内容传送到外部RAM2000H单元。
MOVDPTR,#1000H
MOVXA,@DPTR
MOVDPTR,#2000H
MOVX@DPTR,A
5. 如果 (A)=E8H, (R0)=40H, (R1)=20H, (R4)=3AH, (40H)=2CH, (20H)=OFH, 则写入
后面的指令分别执行后输出相关单元和标志位CY、AC、OV的内容。
(1)MOVA,@R0;(40H)=E8H
(2)XCHA,20H;(A)=0FH,(20H)=E8H
(3)ADDA,R4;(A)= 22H,(CY)= 1,(AC)= 1,(OV)= 0
(4)INC@R1;(20H)= 10H
(5)ANL40H,#OFH;(40H)=OCH
6. 编写程序求两个数中较大的一个,两个数分别存放在内部RAM的60H和61H单元中。
将得到的大数发送到内部RAM62H单元。
MOVA,60H ;将60H的内容送入累加器
CJNEA,61H,L00P1:如果两个数字不相等,则转到L00P1
AJMPLOOP2;如果两个数相等,则转到L00P2
L00P1: JC: (60H) > (61H) 然后转移到 L00P2
MOVA,61H ;将61H的内容送入累加器
L00P2:MOV62H,A ;将累加器中存储的大数送入62H
7、源数据区存放在30H开始的内部RAM单元中,目标数据区存放在60H开始的内部RAM单元中。
在内部 RAM 单元中,每隔一个单元从源数据区域读取数据,每隔一个单元将数据写入目标数据区域,直到
当遇到回车符(0DH)时,传输结束。
MOVRO,#30H 指向源单元首地址
MOVRO,#60H 指向目标单元首地址
LOOP: MOVXA,@R0 将源单元的内容读入
MOV@R1,A 发送到目标单元
英格罗
INCRO 每 1 个单位读取一次
国家反种族歧视委员会
国家反种族歧视委员会
INCR1;每 2 个单位写入一次
CJNEA,#ODH,LOOP;遇到回车符时跳转
8. 编写一个多字节减法程序,其中被减数存储在从 1000H 开始的 10 个外部 RAM 单元中。
在这个过程中,减数被存放在从2000H开始的10个外部RAM单元中,高字节对应高地址,差值被送到
在减法单元中。
MOVR2,#10 设置循环次数
SETCDPS 选择 DPTR1
MOVDPTR,#2000H 指向目的单元首地址
CLRDPS 选择 DPTR0
MOVDPTR,#1000H 指向源单元首地址
CLRC 进位标志被清除
LOOP: MOVXA,@DPTR 将源单元的内容读入
SETCDPS 选择 DPTR1
SUBBA,@DPTR 执行减法运算
MOVX@DPTR,A 将差值发送到目标单元
INCDPTR 指向下一个目标单元
CLRDPS 选择 DPTR0
INCDPTR 指向下一个源单元
DJNZR2,LOOP是否达到循环次数
9、若晶振为12MHz,编写2ms延时子程序。
DEL2:MOVR3,#4IgS)
LOOP1:MOVR2,#124(Ips)
LOOP2:无PIgs)
NOP1
DJNZR2,LOOP22ps)
DJNZR3,LOOP12gs)
诺福克 (NOPHis)
RET2
10.如果从TABLE开始的字节数据表中存储了8个数字,则求这8个数字的平均值并将其存储在R0中。
MOVR7,#8设置循环次数
MOVR6,#0 表中数据序号初始化为0
MOVRO, #0 累加结果初始化为0
MOVDPTR,#TABLEDPTR 指向表的首地址
LOOP:MOVA,R6发送数据序列号给A
MOVCA,@A+DPTR 执行查表操作
ADDA,R0
MOVRO,A 将累计结果保存到R0
INCR6 指向表中的下一个数据
DJNZR7,LOOP 判断循环次数是否达到
MOVB,#8
迪瓦伯
MOVRO,A 求平均值
表:数据库
问题与练习 4
1. 填空
1. 一个数字以十六进制表示为0x5a,以二进制表示为90。
2. 令intx=0,y=l;表达式(x&&v)的值为0。
3.C51提供了两种不同的数据存储类型xdata和pdata,用于访问片外数据存储
区。
4、C51的基本结构包括顺序结构、选择结构和循环结构。
5.如果语句inti,j,k;那么表达式i=10,j=20,k=30,k*=i+i的值为900。
6.x+=a 等同于 x=x+a,x*=a 等同于 x=x*a,x%=a 等同于 x=x%a。
7.(整数)(8.2/2)=4o
8.以下程序的输出是2。
主要的()
intx=-10,y=1,z=1;
如果(x
如果(
否则z=z+1;
printf("%dn",z);
9.执行语句for(j=0;j