单片机原理期末速成:4.5小时复习核心考点与编程实战
1. 期末复习的正确打开方式为什么一门课能压缩成4.5小时每年临近考试周总能在各种群里看到类似的问题单片机原理这门课怎么复习翻开教材五六百页从单片机的发展历史到内部结构从汇编指令到接口技术从A/D转换到串行通信看一遍目录就能劝退一大半人。但作为过来人我必须说一句实话这门课的考试难度通常远低于它的教材厚度。单片机原理是典型的“重基础、重理解、重应用”课程绝大数高校的期末试卷命题范围极其固定。无非就是几个板块单片机最小系统、存储器结构、并行I/O口、中断系统、定时器/计数器、串行通信、以及汇编或C语言编程题。把这几块吃透90分真的不是玄学。我在读本科的时候这门课考了94分。后来带过几届学弟学妹复习也帮人补考、专升本、考研复试前突击过这门课攒了不少经验。这篇博文就是把整个复习过程梳理成一套可以“抄作业”的方案按照一套完整的速成逻辑来拆解哪里可以跳过、哪里必须死磕、哪些题是必考的送分题、哪些地方最容易扣分。先说结论4.5小时复习单片机原理完全可行但前提是方法要对。不是从头到尾听课而是带着“考什么”的意识去精准打击。下面这套方案我按时间块拆解过很多次基本能覆盖85%以上的常规考点。不过丑话说在前面如果你所在学校用的是STC系列单片机老师用的是汇编教学而且你们平时的实验课要求焊板子、写汇编程序那这套速成方案的侧重点要相应调整。我会在后面的章节里专门讲不同教材和不同单片机型号的应对策略。2. 先把骨架搭起来4.5小时复习的时间分配与整体规划别一上来就抱着书啃。速成课的核心不是“学完”而是“考过”更进一步说是“高分考过”。所以第一步是搞清楚试卷的构成。2.1 常规试卷的题型分布与分值逻辑大多数学校《单片机原理及应用》期末试卷基本逃不出下面这些题型顺序可能变分值可能调但板块就这些题型常见分值考查核心填空题15~20分概念、寄存器名称、引脚功能、寻址方式选择题10~20分指令功能、寄存器配置、硬件结构细节判断题10分左右易混淆概念辨析简答题/问答题15~20分中断过程、定时器工作方式、串口通信过程编程题/综合题20~30分定时器初始化、外部中断、流水灯、数码管显示等看出来了吧概念记忆类题目占了将近一半分数编程题则是拉分关键。所以复习的核心逻辑应该是先背概念拿基础分再练编程拿高分。2.2 4.5小时怎么切三个小时块边学边练我平时给学弟学妹做考前突击基本按下面这个节奏走第一个小时块约1.5小时硬件基础与存储器结构。包括单片机引脚功能、内部RAM分区、特殊功能寄存器SFR、最小系统电路。这部分概念密集是填空选择的主力出题区。第二个小时块约1.5小时中断系统、定时器/计数器、串行口。这是单片机原理的“三大核心机制”简答题和编程题的重灾区也是与具体应用结合最紧密的部分。第三个小时块约1.5小时指令系统与编程实战。重点过寻址方式、常用指令、以及3~5道典型编程题流水灯、定时器中断、数码管、按键检测。编程题只要练熟几道母题考场上变通起来就不慌。这中间每45分钟休息5~10分钟大脑需要缓冲硬扛着反而效率低。2.3 不同教材版本的应对策略国内用的单片机教材虽然五花八门但核心无外乎两个流派以MCS-51为蓝本的经典教材如张毅刚版特点是系统性极强从硬件结构到指令系统一条线讲下来考试也紧跟教材。这类课程重点复习教材例题尤其是每章课后习题里的简单题和编程题。以STC系列或国产增强型51为基础的教材如部分职业院校教材特点是强调实际应用可能涉及ISP下载、片上ADC、PWM等增强功能。考试重点会更倾向于应用设计题。如果你的教材涉及STC15或STC8系列要额外注意内部时钟配置和下载方式。但无论哪个版本“51内核的三大经典资源——中断、定时器、串口”永远是绝对的重点。因为这部分最能反映单片机“程序硬件寄存器配置”协同工作的核心思想出题人出题也最顺手。3. 第一个小时块内部结构、存储器映射与最小系统这门课的第一大板块说难也难说简单也简单。很多同学被“CPU、RAM、ROM、SFR”这些概念绕晕其实关键在于建立“地图思维”——把你想象成一个单片机内部的调度员你得知道什么东西放在哪个地址、通过哪条路访问。3.1 单片机的“体格子”内部结构到底考什么MCS-51单片机内部结构期末常考的点如下8位CPU包含运算器和控制器。注意“8位”的含义——数据总线是8位一次处理一个字节。128字节RAM数据存储器分工作寄存器区、位寻址区、堆栈区与数据缓冲区。4K字节ROM程序存储器对于8051而言片内4KB外部最多可扩展64KB。STC系列则常见8KB、16KB甚至更大。4个并行I/O口P0、P1、P2、P3各8位。注意P0口是开漏结构必须外接上拉电阻——这个知识点几乎年年考。2个16位定时器/计数器T0和T1增强型51可能有更多。1个全双工串行口UART4种工作方式。中断系统5个中断源INT0、T0、INT1、T1、串口两个优先级。逐项理解不难但要注意内部细节。比如内部RAM低128字节和高128字节的区别增强型51有高128字节RAM但经典8051只有低128字节。比如工作寄存器区的四组R0~R7分别位于00H~1FH。数据地址20H~2FH是位寻址区每一位有个独立的位地址。这些概念是选择题和填空题的常客考前必须过一遍。3.2 存储器配置片内、片外、程序、数据四张地图搞清楚存储器是单片机最核心的骨架也是新手最容易混的地方。我每次复习都会在纸上画一张存储空间示意图把程序存储器和数据存储器分开画。程序存储器用PSEN程序存储允许信号选通数据存储器用RD/WR读/写信号选通。关键点如下程序存储器ROM地址从0000H开始。复位后CPU从0000H取第一条指令。0003H、000BH、0013H、001BH、0023H分别是INT0、T0、INT1、T1、串口中断的中断入口地址。这是填空和简答的必考点尤其要记住每个中断入口地址间隔8个字节0003H到000BH000BH到0013H……。数据存储器RAM与程序存储器地址空间独立、重叠靠控制信号区分两者相互独立但地址编号可以相同。这也是为什么51单片机的寻址空间可以做到“程序64KB数据64KB”。片外数据存储器用MOVX指令访问片内RAM用MOV指令访问。还有一个高频考点是堆栈。51单片机的堆栈设置在片内RAM中由堆栈指针SP管理。复位后SP07H指向工作寄存器区1组。压栈时SP先加1再存入数据出栈时先弹出数据SP再减1。这个“先加后存、先弹后减”的细节判断题爱出。3.3 最少系统请把晶振、复位电路和EA引脚背下来最小系统电路这题画图题或简答题里经常出现。所谓最小系统就是单片机能够正常工作的最低硬件配置电源、晶振电路、复位电路、EA引脚处理或ROM选择。晶振电路在XTAL1和XTAL2之间接晶振两个引脚各接一个20~30pF的电容到地。常见晶振频率是11.0592MHz或12MHz。前者常用于波特率发生器因为分频后能得到整数波特率9600、4800等后者便于精确延时机器周期1μs。这个对比简答题里出现过无数次。复位电路RST引脚接高电平保持至少2个机器周期即可复位。典型电路VCC经10μF电容接RSTRST再经10kΩ电阻到GND。上电瞬间电容充电RST短暂高电平完成上电复位。这是分析题的一个经典图很多人不知道电容电阻的取值逻辑这里补一句RC时间常数≈10μF×10kΩ100ms远大于2个机器周期可靠复位。EA引脚高电平时从片内ROM取指低电平时从片外ROM取指。如果用的是片内含ROM的单片机直接接VCC如果外部扩展ROMEA接地。这个引脚在填空题里常考“EA1时CPU从片内程序存储器取指令”。3.4 并行I/O口的电气特性为什么P0必须上拉四个并行I/O口的结构和电气特性是选择题和简答题的“钉子户”尤其是P0口。P0口开漏输出结构没有内部上拉电阻。作为输出口时必须外接上拉电阻典型4.7kΩ~10kΩ否则输出高电平时引脚呈高阻态驱动能力也是四个口中独有的“准双向”概念。地址/数据分时复用总线时P0输出低8位地址和数据。这题考法很多比如“为什么P0口要加上拉电阻”“P0口作总线时为何不用上拉”。P1口准双向I/O口内部有上拉电阻不需要外接。通常作为通用I/O使用。P2口同样准双向既可作通用I/O也可在扩展外部存储器时输出高8位地址。P3口带第二功能每个引脚都有专门用途比如P3.0/RXD、P3.1/TXD、P3.2/INT0、P3.3/INT1、P3.4/T0、P3.5/T1。第二功能表是填空题的“题库”必须背熟。还有一个高频简答题“51单片机四个I/O口在使用上有什么区别”答题思路先说四个口都可用作准双向I/O口然后分别说明各自特点——P0要加上拉且可作总线P1专用I/OP2可作高8位地址P3有第二功能。条理清晰就能拿满分。4. 第二个小时块中断、定时器与串口三大核心机制这三大机制是单片机课的“主菜”。不仅简答题爱考概念编程题的核心也在这里。这一块值得花最多的精力和笔墨。4.1 中断系统5个中断源、2级优先级、一张过程图中断系统是单片机最像“现实中的处理方式”的机制。出题人极其偏爱它的原因很简单它展示了CPU如何合理分配资源既体现硬件设计又体现软件调度思想。五个中断源及入口地址的表格必须背到条件反射中断源入口地址触发条件中断标志INT0外部中断00003H下降沿或低电平IE0T0定时器0000BH定时/计数溢出TF0INT1外部中断10013H下降沿或低电平IE1T1定时器1001BH定时/计数溢出TF1串口收发0023H接收/发送完成RI/TI中断相关寄存器也是必考IE中断允许、IP中断优先级、TCON定时控制与中断标志、SCON串口控制含RI/TI。要记住EA是总开关EA0时所有中断都关了EA1时还需要对应中断源的“分开关”置1才使能。中断响应的完整过程是简答题最经典的题目CPU检测到中断请求置位对应中断标志→查询中断优先级高级优先同级按自然优先级INT0→T0→INT1→T1→串口→响应中断保护断点即把当前PC值压栈→把对应中断入口地址装入PC→跳转到中断服务程序执行→执行RETI弹出断点→返回主程序继续执行。答题时别忘了写“RETI指令除了恢复断点还会清零中断优先级状态触发器使CPU能响应同级或低级中断”。这个细节往往是答题的加分点。编程题里定时器中断是最常见的套路。后面实战部分我会带一道完整题目。4.2 定时器/计数器工作方式寄存器TMOD的每一位都要会算定时器是51单片机必考的“硬核”知识点无论是简答还是编程都绕不开。核心是TMOD和TCON两个寄存器。TMOD各位的含义必须会算位名称功能D7GATET1门控位1时受INT1引脚控制0时不受D6C/T#T11计数器模式0定时器模式D5、D4M1、M0T1工作方式选择D3GATET0门控位0时不受INT0控制D2C/T#T01计数器模式0定时器模式D1、D0M1、M0T0工作方式选择四种工作方式中**方式116位定时器M1M001和方式28位自动重装M1M010**最常考。方式0是13位老古董现在基本不考。方式3是把T0拆成两个独立8位定时器偶尔填空出现。方式1的初值计算套路必考公式定时时间T (2^16 - 初值) × 机器周期机器周期 12 / 晶振频率MHz 单位μs所以初值 2^16 - T / 机器周期。举个例子晶振12MHz机器周期12/12MHz1μs要定时1ms初值 65536 - 1000/1 64536 0xFC18所以TH00xFCTL00x18。方式2的初值计算套路方式2是8位自动重装初值 2^8 - T / 机器周期。一个TL计满后自动把TH的值重装到TL适合需要周期定时或做波特率发生器的情况。TR0/TR1是TCON里的启动位TR01启动T0TR00停止。还有TF0/TF1是溢出标志位。编程框架一般是设置TMOD→装初值TH、TL→开中断如果使用中断方式→启动TR0→等待中断或查询TF0。4.3 串行口SCON、波特率、四种工作方式串口通信这块学校通常不会考太深但基本概念必须清楚。SCON寄存器的SM0、SM1两位决定串口工作方式工作方式功能波特率方式0移位寄存器方式固定为fosc/12方式18位UART可变波特率由T1溢出率决定方式29位UART固定波特率fosc/64或fosc/32方式39位UART可变波特率由T1溢出率决定方式1最常考波特率计算公式波特率 (2^SMOD / 32) × T1溢出率T1溢出率 定时器1的溢出频率。如果用方式2自动重装T1溢出率 1 / [(256 - 初值) × 机器周期]。所以波特率 (2^SMOD / 32) × 1 / [(256 - 初值) × 机器周期]。如果选用晶振11.0592MHzSMOD0波特率9600求TH1初值机器周期 12/11.0592MHz ≈ 1.085μs9600 (1/32) × 1 / [(256 - 初值) × 1.085×10^-6]反解得256 - 初值 ≈ 3所以初值 253 0xFD。这就是为什么教材里常见“串口通信时TH10xFD”的原因。这个公式推导过程如果能自己推一遍比死记硬背强得多。4.4 三大机制的相互关系一张图理清中断、定时器、串口不是三个孤立的知识点。定时器溢出会产生中断串口收发完成也会产生中断而定时器又为串口提供波特率时钟。考场上最怕出“综合性简答题”——比如“如何利用定时器1产生9600波特率并完成串口发送一个字符”这种题目需要你把这三大机制串起来回答。我的建议在复习时画一张三层关系图。底层是硬件模块T0/T1、UART、INT0/INT1。中间层是控制寄存器TMOD、TCON、SCON、IE、IP。顶层是中断源TF0/TF1、RI/TI、IE0/IE1。哪个模块产生哪个标志、哪个标志触发哪个中断、中断里干什么一目了然。面试和复试时这张图也特别好用。5. 第三个小时块指令系统与编程实战母题到了这个阶段很多同学的感受是概念都会背了一写代码就懵。这是正常的因为代码需要的是“组合运用”能力。这个板块我直接带大家过一遍指令系统的骨架再拆解几道高频编程母题。5.1 寻址方式7种方式及其“一眼识别”寻址方式这个考点说是送分题也不为过但每年都有人丢分。记住一个口诀“立即数前加#直接地址是数寄存器前加位寻址看CY”。立即寻址MOV A, #30H操作数在指令中直接给出注意#号。直接寻址MOV A, 30H操作数是片内RAM地址30H。寄存器寻址MOV A, R0操作数在R0中。寄存器间接寻址MOV A, R0R0存的是地址操作数在那个地址的内存中。只用R0和R1且访问片外RAM时用MOVX A, DPTR或MOVX A, R0。变址寻址MOVC A, ADPTR查表专用的指令访问程序存储器。相对寻址SJMP rel转移指令专用。位寻址MOV C, 20H对位寻址区操作。我自己的经验是最考的就是直接寻址和寄存器间接寻址的区别以及MOV和MOVX、MOVC三者谁能访问哪块存储空间。把这三条指令分清楚存储器结构那章就没白学。5.2 常用指令分类速记不要求背完整套111条指令但高频指令必须熟到看一眼就知道功能数据传送类MOV A, #data / MOV A, Rn / MOV A, direct / MOV A, RiMOV Rn, A / MOV direct, A / MOV Ri, AMOV DPTR, #data16唯一一条16位立即数传送指令MOVX A, DPTR / MOVX DPTR, A片外RAM读写MOVC A, ADPTR查表PUSH direct / POP direct堆栈操作注意只有直接寻址算术运算类ADD A, Rn / ADDC A, Rn带进位加/ SUBB A, Rn带借位减INC Rn / DEC RnMUL AB乘结果高8位在B低8位在ADIV AB除商在A余数在BDA A十进制调整BCD码加法后使用逻辑运算类ANL A, Rn / ORL A, Rn / XRL A, RnCLR A / CPL ARL A / RR A / RLC A / RRC A循环移位ANL direct, #data常用于清某些位控制转移类LJMP addr16 / SJMP rel / AJMP addr11 / JMP ADPTRJZ rel / JNZ rel累加器为0/非0转移CJNE A, #data, rel比较不等转移DJNZ Rn, rel减1非0转移循环神器LCALL addr16 / RET / RETI位操作类CLR C / SETB C / CPL CANL C, bit / ORL C, bitMOV C, bit / MOV bit, CJC rel / JNC relC1/0转移JB bit, rel / JNB bit, rel位为1/0转移每周的复习群里总有人问“汇编到底要不要背”如果你们学校考试考编程题但允许用C语言写那汇编只需能读懂即可重点放在C51的语法和寄存器操作上。但如果考试要求写汇编或者给了汇编让你分析运行结果那上面这些指令就是基本功没有捷径。我的经验是与其死记指令不如把课后习题里的汇编题刷5~10道指令自然就熟了。5.3 C51与汇编的权衡考试写哪种更好现在的考试更多学校允许甚至要求用C语言编程。如果你有选择权我强烈建议用C51写编程题。原因很简单C51代码模块化强阅读起来清晰直观不容易犯低级语法错。操作寄存器无非是给特殊功能寄存器赋值例如TMOD 0x01;、TH0 0xFC;。中断服务函数用interrupt关键字声明轻松对应中断号。比如void timer0_isr() interrupt 1。延时函数写起来方便for循环一写不用抠汇编的DJNZ循环次数。但C51也有两个坑一是头文件要写对经典51用#include reg51.h或#include reg52.h二是位操作要用sbit定义。比如想操作P1.0sbit LED P1^0;注意是^不是.这个符号错误每年能扣掉一大批人。5.4 编程母题一LED流水灯最简单的综合题流水灯算是单片机界的“Hello World”考试也喜欢拿它开头。题目描述用P1口控制8个LED实现依次点亮、循环流水。C51参考代码#include reg51.h void delay(unsigned int ms) { unsigned int i, j; for (i ms; i 0; i--) for (j 114; j 0; j--); // 12MHz下近似1ms } void main() { unsigned char led 0xFE; // 1111 1110LED0亮 while (1) { P1 led; delay(200); led (led 1) | 0x01; // 左移补1 if (led 0xFF) led 0xFE; // 循环回来 } }答题时必须写清楚的几个点延时函数的来源——12MHz晶振下机器周期1μs两层循环实现约1ms延时。考官不要求精确但希望你解释清楚。流水效果的核心是移位运算led 1和补0x01。P1口输出低电平点亮LED共阳极接法。如果你想避免在考场上纠结if (led 0xFF)还有一种写法是用循环左移函数_crol_但那个需要引入intrins.h头文件如果考场记忆模糊老老实实用位运算最稳妥。5.5 编程母题二定时器中断实现1秒闪烁这是定时器章节的必练母题综合了TMOD配置、初值计算、中断处理和主循环逻辑。题目描述用T0方式1定时50ms软件计数20次实现1秒控制P1.0上的LED每秒翻转一次。C51参考代码#include reg51.h sbit LED P1^0; unsigned int count 0; void timer0_init() { TMOD 0xF0; // 清空T0控制位 TMOD | 0x01; // T0方式116位定时器 TH0 0x3C; // 50ms初值高8位 TL0 0xB0; // 50ms初值低8位 ET0 1; // 开T0中断 EA 1; // 开总中断 TR0 1; // 启动T0 } void timer0_isr() interrupt 1 { TH0 0x3C; // 重装初值 TL0 0xB0; count; if (count 20) { // 20次50ms 1s count 0; LED ~LED; } } void main() { timer0_init(); while (1) { // 主循环可以干别的或空转 } }为什么TH00x3C、TL00xB012MHz晶振机器周期1μs50ms50000μs。初值 65536 - 50000 15536 0x3CB0所以TH00x3CTL00xB0。这个数字大家最好亲手算一遍否则考场换一个时间就不会了。答题思路扩展如果题目说用查询方式则主循环里不断检查TF0等溢出时手动清零并重装初值。如果题目说用方式2自动重装那只要给TH0、TL0装同一个初值中断服务程序里就不用重装了。出题人经常在这些地方挖坑读题时务必看清“方式几”。5.6 编程母题三按键控制与外部中断“按键按一下LED状态翻转”也是一道经典题。这个题有两个层次简单版是轮询查询按键状态进阶版是外部中断触发。查询方式核心代码sbit KEY P3^2; // 独立按键接P3.2 sbit LED P1^0; void main() { while (1) { if (KEY 0) { // 按下为低电平 delay(20); // 消抖 if (KEY 0) { // 确认按下 LED ~LED; while (KEY 0); // 等待释放 } } } }中断方式的核心区别在于配置IT01下降沿触发、EX01、EA1然后写外部中断0服务函数void int0_isr() interrupt 0 { LED ~LED; // 中断服务函数里直接翻转 }这个题的考点除了代码本身还会问“为什么要消抖”——按键机械抖动一般持续5~10ms软件延时20ms再检测可以有效避免误触发。外部中断方式下如果按键抖动严重同样可能一次按下触发多次中断所以也要结合延时消抖或判断释放状态。5.7 编程母题四数码管动态扫描显示数码管显示是很多学校大作业和考试的“压轴题”。原理不复杂但代码容易乱。题目描述用P0口输出段码P2口做位选动态扫描显示“1234”。C51参考代码#include reg51.h unsigned char code seg_code[] { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E }; // 共阳极数码管段码0~F void delay(unsigned int ms) { unsigned int i, j; for (i ms; i 0; i--) for (j 114; j 0; j--); } void main() { unsigned char i; while (1) { for (i 0; i 4; i) { P2 ~(0x01 i); // 位选第i位数码管低电平选中 P0 seg_code[i 1]; // 段码显示对应数字 delay(5); // 短暂停留视觉暂留 } } }说明动态扫描的原理就是“人眼视觉暂留”。每个数码管点亮时间极短几毫秒但切换足够快刷新率50Hz人眼看起来就是四个数字同时亮。考试如果出分析题问“为什么动态扫描不闪烁”答案就是“刷新频率高于人眼临界闪烁频率”。考场注意段码表的数值取决于你的数码管是共阳还是共阴。共阳极段码常见但如果题目给的是共阴极数码管段码就成了0x3F、0x06、0x5B……务必看清题目再写不要直接默写。5.8 编程母题五串口发送字符串“用串口向电脑发送一个字符串”在很多学校的考试里也是热门编程题。它综合了波特率计算和串口初始化。C51参考代码#include reg51.h void uart_init() { SCON 0x50; // 方式1允许接收 TMOD 0x0F; TMOD | 0x20; // T1方式28位自动重装 TH1 0xFD; // 11.0592MHz, 9600波特率 TL1 0xFD; TR1 1; // 启动T1 } void send_char(unsigned char c) { SBUF c; while (TI 0); // 等待发送完成 TI 0; // 清零发送标志 } void send_string(unsigned char *s) { while (*s ! \0) { send_char(*s); } } void main() { uart_init(); send_string(Hello MCU!\r\n); while (1); }这题最关键的三件事SCON0x500101 0000SM00、SM11方式1、REN1允许接收。T1用方式2自动重装初值0xFD对应9600波特率11.0592MHz晶振。发送流程把数据放入SBUF→等待TI置1→软件清零TI。5.9 考场上的编程题应试技巧编程题分值高但阅卷是按点给分。几个拿分技巧先写头文件和主函数框架就算中间寄存器配置写错结构分能拿一半。每条关键配置旁边加注释表明你知道自己在干什么。注释不会加分但能让阅卷老师快速判断你是否理解。如果题目没指定晶振频率默认按12MHz算。一旦题目给了11.0592MHz多半和串口波特率有关注意区分。不要只在草稿纸上写代码动手在答题纸上排版。每个函数单独成块缩进对齐这是提高印象分的零成本操作。6. 其他必拿分考点与易错点复盘前面五块已经把核心框架走完了。但这门课还有几个“边角料”知识点单拎出来分值不高但加起来也有10来分丢了可惜。6.1 复位、时钟与总线扩展概念题复位方式上电复位、按键复位、看门狗复位。RST引脚保持高电平2个机器周期以上内部完成复位。复位后PC0000H、SP07H、P0~P3FFH中断系统禁用。这些初始值填空题常考。ALE信号ALE是地址锁存允许信号。访问外部存储器时ALE下降沿把P0输出的低8位地址锁存到外部锁存器如74LS373中。这个与总线扩展相关常以简答或选择形式出现。PSEN信号外部程序存储器读选通信号。区分PSEN和RD前者读ROM后者读RAM。6.2 扩充外部存储器地址锁存器的逻辑“画出8051扩展一片27648KB EPROM的连接图”是很多学校的必考画图题。关键点P0口复用地址/数据必须用74LS373锁存低8位地址P2口提供高8位地址片选线常用P2.7等高位控制信号用ALE锁存、PSEN读ROM。EA接地时CPU从外部ROM取指。这部分如果平时实验课没做过的同学理解起来略吃力我的建议是把教材上那张总接线图抄三遍一边抄一边标注每个引脚连到哪基本就能应对。6.3 看门狗与低功耗增强型STC单片机如果教材是STC系列看门狗WDT和低功耗模式偶尔也会出题。STC的看门狗实际上是一个15位计数器溢出时复位MCU。软件要周期性地“喂狗”清零防止程序跑飞后系统死机。低功耗有IDLE和STOP两种模式。这些概念题分值不高但属于“老师上课讲过、你不看就吃亏”的分数。6.4 易错点清单最容易扣分的五个细节我总结了历年带人复习时大家错得最多的几个地方TMOD不能按位操作。TMOD不支持位寻址必须整体赋值。很多人写TMOD | 0x01后还指望保留高四位不变但标准51的TMOD通常不可位寻址。所以要先清相关位再置位或一次性整体赋值。中断服务函数里忘了重装初值。使用方式1时每次中断进入后TH/TL不会自动重装方式2才会忘了重装会导致定时时间混乱。串口方式1的波特率计算中SMOD的取值。SMOD是PCON的最高位默认0。如果题目说SMOD1波特率翻倍初值要重新算。P0口作I/O使用时必须加上拉电阻。判断题最爱出“P0口内部有上拉电阻可直接用作输出”这种表述显然错误。_crol_与 移位方向混淆。题目要求循环左移写成右移效果完全反了。6.5 从历年真题中提炼出来的高频简答题以下是我整理过历年试卷后归纳的简答题“题库”出现的概率很高单片机与微型计算机的区别是什么体积、集成度、控制功能、应用领域MCS-51单片机内部由哪些功能部件组成什么是机器周期12MHz晶振下的机器周期是多少1μs简述中断响应的过程。定时器方式1和方式2有什么区别各自适合什么场景波特率是什么为什么12MHz晶振常用11.0592MHz晶振也常用为什么P0口要接上拉电阻动态扫描显示的原理是什么什么是看门狗作用是什么这些题与其背诵不如理解着用自己的话写一遍。理解了背后的“为什么”换个问法也能答出来。7. 后记4.5小时的速成复习能覆盖的知识范围终究有限。如果只是想及格靠上面这些内容足够但如果想考90分以上除了这些高频考点还要把教材里的课后习题认真过一遍。尤其是实验题部分很多老师喜欢从实验指导书里原封不动地抽题——毕竟实验做没做过一考便知。最后再分享一个考试小技巧拿到卷子先花5分钟把所有题目扫一遍标记出自己会做的题。先拿稳基础分再花时间啃难题。如果编程题一时没有思路先在草稿纸上把要用的寄存器列出来理清“用什么模块→配哪些寄存器→写什么顺序”。很多时候写着写着思路就通了。祝各位期末顺利。单片机这门课真心不难别被厚厚的教材吓住。