ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

单片机原理期末速成攻略:4.5小时抓住考点

单片机原理期末速成攻略:4.5小时抓住考点 期末复习周又来了图书馆里全是抱着《单片机原理及应用》啃的同学。这门课说难不难说简单也不简单挂科率常年稳居工科前列补考卷子比期末还玄学。我当年也是被 51 单片机折磨得死去活来的人后来帮学弟学妹辅导过几轮又陪跑过专升本的强化班慢慢摸清了这门课的考试套路。今天这篇就把“4.5 小时速成单片机”的复习打法完整拆给你不卖课不拉群纯经验分享目标就是让你在最短时间内抓准考点期末、补考、专升本甚至考研复试都能用上。我先把丑话说在前面4.5 小时速成前提是你上课多多少少听过一点或者至少认识“单片机”三个字。如果整学期完全没去过教室那我建议你把下面所有时间压缩到一半直接从第 2 部分的高频考点开始看把计算题和程序模板背熟其他内容能记多少记多少。速成的本质不是神迹是把 90% 的复习精力砸在 20% 的高频考点上。1. 速成复习的第一件事看懂这门课到底在考什么1.1 单片机原理考试的常见内容版块很多人拿到复习资料就开始背背了两天发现啥也没记住因为脑子里没有地图。单片机原理与应用这门课无论哪个学校哪个教材核心内容基本就六大块第一块是单片机内部结构包括 CPU、存储器RAM、ROM/Flash、并行 I/O 口P0~P3、定时器/计数器、中断系统、串行口、总线结构这些东西。这一块是基础中的基础考试喜欢考“以下哪个不属于单片机内部资源”“51 单片机有几个定时器”这种送分题。第二块是引脚功能与最小系统。芯片长什么样40 个引脚分别干什么哪些引脚有第二功能晶振电路和复位电路怎么接EA引脚怎么处理。这一块期末必考考研复试也常问。第三块是存储器结构。哈佛结构、程序存储器和数据存储器分开编址、SFR特殊功能寄存器的地址分配、位寻址区在哪一段。这里容易出填空和选择计算 ROM、RAM 大小的题也是常客。第四块是中断系统。51 单片机有 5 个中断源80C52 是 6 个中断优先级、中断入口地址、IE 和 IP 寄存器的配置还有响应中断的过程。这块是整个课程的重难点考研复试几乎必问。第五块是定时器/计数器。TMOD、TCON 寄存器配置4 种工作方式定时器初值怎么算这个是最容易拿分也最容易丢分的计算题。第六块是串行通信和指令系统。SCON 寄存器、波特率计算以及 C51 编程基础。有些学校还考汇编那指令系统就得好好背寻址方式和常见指令。把这六块列成一张清单你会发现整门课其实就这六件事。剩下的什么 A/D 转换、键盘显示接口、扩展芯片很多学校根本不考或者只考一两道选择题。1.2 不同考试场景的侧重点差异搞清楚考什么之后还要搞清楚你面对的考试是哪种风格。同样是单片机原理期末考试、补考、专升本、考研复试的出题思路差异很大。期末考试和补考最看重教材和平时作业。老师会从题库里抽题重点永远是最经典的那几个知识点。你看几套往年真题就会发现题型基本固定选择填空考概念计算题考定时器初值和波特率简答题考中断过程或存储器结构大题目直接给你一个控制需求让你写程序。专升本的考试更偏重基础概念和简单编程难度比本科期末低但覆盖面广。它喜欢考那种“你把原理讲清楚”的题比如“说明 51 单片机复位电路的工作原理”“比较中断查询方式的区别”名词解释也不少。考研复试的情况完全不一样。老师不看你背了多少而是考你到底懂没懂。我复试时被问过“为什么要上拉电阻”“P0 口为什么必须接上拉”“中断嵌套和中断优先级有什么区别”这种刨根问底的问题。所以复试准备的思路要看原理深度不能只背结论。不管哪种场景速成思路都是共通的先把必考的骨架抓出来再把程序题的模板背下来最后用真题检验。下面我按这个思路展开。2. 4.5 小时时间分配三轮复习法2.1 第一轮快速建立知识地图约 90 分钟4.5 小时听起来很短但拆成三段之后就清晰了。第一轮只干一件事把六块知识内容从头到尾过一遍建立整体框架。具体做法是拿一张白纸把六块内容列成树干然后回忆每一块下面的关键知识点。回忆不出来就翻教材目录目录就是最好的大纲。比如内部结构这一块往下分就是 CPU 组成、RAM 分区、特殊功能寄存器中断系统往下分就是中断源、中断控制、优先级、响应过程。这一步是在画思维导图不是在深入学所以速度一定要快每个知识点最多停留两分钟。我个人建议这轮复习用“先看目录再看 PPT 标题”的组合。很多学校的教学 PPT 每章第一页就是本章结构图把这些结构图串起来就能形成框架。如果你连 PPT 都没有那就用教材目录效果差不多。框架建立之后有一个比背概念更重要的任务把所有公式和寄存器名称单独抄出来。定时器初值计算公式、波特率计算公式、TMOD 每位含义、TCON 每位含义、IE 和 IP 的位定义这些是后面做题的硬通货先抄到一张纸上备用。2.2 第二轮高频考点逐个击破约 120 分钟第二轮是速成的核心环节按重要程度排序一个个攻克高频考点。我会在第 3 部分详细拆解这些考点的原理和解题方法这里先给你一个复习顺序建议第一优先级是定时器/计数器。为什么它排第一因为几乎所有单片机考试都会有一道定时器初值计算的大题或小题而且这个知识点套路固定只要记住公式就能拿分对提分效率来说性价比极高。第二优先级是中断系统。中断源、优先级、入口地址是高频选择填空中断响应过程是高频简答属于背了就能拿分的点。第三优先级是存储器和引脚。这部分的题比较碎但多为记忆型考前突击效果最好。第四优先级是串行口和波特率计算。波特率公式和定时器初值计算是孪生考点放一起复习效率高。第五优先级是指令系统和 C51 编程。编程题分值大但灵活需要单独练模板所以放在后面说。这一轮复习的原则是“动手不动眼”。碰到计算题就拿起笔算碰到程序题就自己在纸上写一遍千万不要只看答案觉得“我会了”。看着会做和自己会做完全是两回事。2.3 第三轮真题与错题实战约 60 分钟最后 60 分钟用来做真题或模拟题。找不到真题就用课后习题优先做计算题和程序题选择题填空可以快速过。做题的时候模拟考试状态不看资料不查公式。做完之后对答案错的题回到第 2 轮对应的考点重新看一遍原理。注意复盘比做题更重要。错一道题不仅要搞明白正确答案是什么还要问自己我当时为什么错是对公式记忆模糊还是概念混淆还是计算粗心把错误原因写在题目旁边考前最后十分钟就翻这些错题记录。如果时间紧张真题可以不用完整做只做计算题和程序题这两种题占分高且答案客观自己对答案就能判断对错。3 月前考完试根据我的辅导经验能按这个节奏走完三遍的人40 分以下的极少大部分能到 70 分上下。想冲 90那还要把第 4 部分的答题技巧吃透。3. 高频考点深度拆解这些知识点年年考3.1 单片机最小系统与引脚功能别在这丢冤枉分最小系统是单片机能够工作的最基本电路包括电源、晶振电路、复位电路以及 EA对 51 系列是访问程序存储器控制引脚的处理。这个知识点为什么几乎每张卷子都考因为它是硬件设计的基础从点亮一个 LED 到做一个小车都要从最小系统开始。先看晶振电路。51 单片机通常在 XTAL1 和 XTAL2 两个引脚之间接晶振晶振两端再各接一个 20~30pF 的电容到地。这个电容叫负载电容作用是帮助晶振起振并稳定频率。考试喜欢问电容容量大概是多少答案是 20~30pF你记住这个范围就能拿分。再看复位电路。51 单片机是高电平复位RST 引脚保持两个机器周期以上的高电平就能复位。典型电路是 RST 接一个 10μF 电容到 VCC再接一个 10kΩ 电阻到地按键并联在电容两端。按下按键RST 直接接高电平完成复位。考试常考的是“复位后 PC 的值是多少”——答案是 0000H从这里开始取指令“复位后各寄存器的状态是什么”——大部分 SFR 清零但 P0~P3 口都是 FFH。关于 P0、P1、P2、P3 四个并行口考试频率最高的就是 P0 和 P3。P0 口是双向三态内部没有上拉电阻做普通 I/O 口使用时必须外接上拉电阻做地址/数据总线时分时复用不需要上拉。P3 口每个引脚都有第二功能P3.0 RXD、P3.1 TXD、P3.2 INT0、P3.3 INT1、P3.4 T0、P3.5 T1、P3.6 WR、P3.7 RD。这张表必背考试直接考“串行口收发对应哪个引脚”一类的题。另外注意很多学校喜欢问 EA 引脚31 脚接法。EA 接高电平时访问片内 ROM超过片内 ROM 空间后自动转向外部 ROMEA 接低电平时强制从外部 ROM 取指。如果用的芯片内部有程序存储器比如 89C52使用内部时 EA 接 VCC用 8031 这种无 ROM 芯片时 EA 必须接地。这个也是选择填空高频。3.2 定时器/计数器公式一定要吃透定时器/计数器的考点集中在 TMOD、TCON 寄存器的配置和初值计算而且这几项年年考。先说寄存器TMOD 的地址是 89H它不能位寻址所以必须用字节赋值。高四位控制 T1低四位控制 T0每四位中的低两位是工作方式 M1M0高两位是 C/T 和 GATE。这四位的含义一定要记准C/T 是 1 表示计数器模式是 0 表示定时器模式GATE 是 1 时受 INT0/INT1 引脚和 TR0/TR1 双重控制是 0 时仅受 TR0/TR1 控制。TCON 地址是 88H它是可以位寻址的。TCON 里的 TF1、TR1、TF0、TR0以及 IE0、IT0、IE1、IT1。TR0/TR1 是启动控制位TF0/TF1 是溢出标志位IT0/IT1 是外部中断触发方式控制位IE0/IE1 是外部中断请求标志位。接下来是考试最爱的计算题定时器初值。先记住公式当定时器工作在方式 116 位定时时定时时间 T (65536 - 初值) × 机器周期。机器周期 12 / 晶振频率。如果晶振是 12MHz机器周期就是 1μs初值 65536 - 定时时间μs。举个最经典的例子晶振 12MHz定时器 T0 工作在方式 1要定时 5ms即 5000μs初值 65536 - 5000 60536 0EC78H。所以给 TH0 装 0ECH给 TL0 装 78H。如果晶振是 11.0592MHz机器周期 12 / 11.0592MHz ≈ 1.085μs那初值 65536 - 5000 / 1.085 ≈ 65536 - 4608 60928 0EE00H。这就是为什么串口波特率常用 11.0592MHz 晶振因为它计算波特率时能得到整数误差最小。方式 0 是 13 位定时器但很多学校已经不讲方式 0 了你只要把方式 1 吃透就够应付大部分题目。方式 2 是 8 位自动重装初值公式变成 T (256 - 初值) × 机器周期常用于产生特定频率的方波。考试时给你定时时长和晶振频率让你算初值这种题一定要做到不丢分。做题时先看晶振频率再确定机器周期再判断方式套公式。三步走稳得很。3.3 中断系统的优先级与响应流程高频简答题中断系统这部分的考点非常固定。51 单片机有 5 个中断源80C52 是 6 个多一个定时器 T2每个中断源有固定的入口地址。这张表必背外部中断 0INT0入口地址 0003H定时器 0T0入口地址 000BH外部中断 1INT1入口地址 0013H定时器 1T1入口地址 001BH串行口中断入口地址 0023H。中断优先级默认排列是INT0 T0 INT1 T1 串口。IP 寄存器可以改变优先级当 IP 中的某位置 1对应的中断源就变成高优先级。高优先级可以打断低优先级形成中断嵌套同级之间不能互相打断。考试常考的简答题是“简述 51 单片机响应中断的过程”。这个表述一定要掌握CPU 在每个机器周期的 S5P2 状态采样各中断标志如果满足中断响应条件有中断请求、中断总允许 EA1、相应中断没有相同或更高优先级的中断正在处理就会在下一个机器周期开始响应中断首先保护断点即将断点处的 PC 值压入堆栈然后将对应中断源的中断入口地址装入 PC程序跳转到入口地址处执行中断服务程序。中断服务程序执行完后通过 RETI 指令恢复断点返回被中断的主程序继续执行。答题时记得强调RETI 和 RET 的区别。RETI 是中断返回指令它除了恢复 PC 值以外还会清除“正在响应的中断”状态重新开放同级中断而 RET 只是简单地返回主程序不会清除中断状态。这是一个非常容易丢分的细节考研复试时老师也爱问。还有一个高频选择“外部中断请求的撤销”。边沿触发方式IT1硬件自动撤销请求电平触发方式IT0则需要外部电路配合撤销因为 CPU 对低电平没有记忆功能如果低电平信号一直存在就会反复进入中断。考试可能会问“电平触发方式下为什么要注意请求信号的撤销”把这条答上去就给分。3.4 串行口与波特率计算公式结论直接记串行口部分考得最多的是波特率计算和 SCON 寄存器配置。SCON 的地址是 98H可位寻址。SM0、SM1 两位决定工作方式SM10、SM00 是方式 0波特率固定为 fosc/12SM10、SM01 是方式 1波特率可变SM11、SM00 是方式 2波特率固定为 fosc/64 或 fosc/32SM11、SM01 是方式 3波特率可变。REN 是接收允许位TI 是发送中断标志RI 是接收中断标志。波特率计算题最常考方式 1波特率 (2^SMOD / 32) × 定时器 T1 的溢出率。这里的 SMOD 是 PCON 的最高位SMOD0 时波特率是 fosc/(384 × (256 - 初值))SMOD1 时变成 fosc/(192 × (256 - 初值))。注意这个公式是在定时器 T1 工作于方式 28 位自动重装的前提下推导的。常用的波特率配置要记住一个结论晶振 11.0592MHzSMOD0定时器 T1 方式 2初值 FD对应波特率约为 9600。这个数据背下来能救命因为很多程序题默认就是 9600 波特率。做题思路也很简单先判断串口工作方式再看 SMOD再看定时器 T1 的方式套公式算初值。计算时要注意单位统一波特率单位是 bit/s即 bps晶振频率单位是 Hz。如果题目给的是晶振频率 11.0592MHz把 MHz 换算成 Hz 再代入公式。3.5 存储器结构与指令系统选择填空的送分点存储器结构这块核心是 51 单片机采用的哈佛结构程序存储器和数据存储器分开编址。程序存储器地址空间是 0000H~FFFFH共 64KB数据存储器也分片内和片外片内数据存储器和片外数据存储器分开编址。注意片内 RAM 的三种空间低 128B00H~7FH是工作寄存器区和位寻址区高 128B80H~FFH是特殊功能寄存器区。位寻址区在 20H~2FH共 16 个字节128 个位地址。20H.0 的位地址是 00H顺着数就行。SFR 的地址分布在 80H~FFH能作为位寻址的 SFR 必须满足地址能被 8 整除比如 TCON 的地址是 88HSCON 是 98HIE 是 A8HIP 是 B8H。这些细节考试喜欢在选择题里设坑。指令系统如果学校不考汇编可以快速略过如果考汇编重点记寻址方式和各指令的字节数、机器周期。立即寻址的立即数前面加#号直接寻址访问片内 RAM 和 SFR寄存器寻址访问 R0~R7寄存器间接寻址用R0或R1。循环指令 DJNZ查表指令 MOVC A, ADPTR这俩在程序题里很常见。C51 编程这部分主函数结构、sbit 位定义、while 循环、if 判断、定时器中断初始化这些基本语法必须会。很多学校直接出“用 C 语言编写一个周期为 1s 的 LED 闪烁程序”这种题就是套模板第 4 部分我会把模板给出来。4. 拿分关键程序题和简答题怎么答4.1 程序阅读题先抓结构再抠细节程序阅读题通常给你一段 C 语言或汇编代码问输出结果或程序功能。很多同学一上来就一行行读读到最后反而懵了。正确做法是先看程序结构有无主函数、有无中断服务函数、循环体在哪、条件分支在哪。比如给你一个 12MHz 晶振下 T0 方式 1 定时的程序主函数里写 while(1) 死循环中断服务函数里对某个 IO 口取反。你只要判断出“定时器每产生一次中断P1.0 取反一次所以 P1.0 输出频率是定时时间一半的方波”这题的分数就到手了不需要逐行分析。阅读 C 语言程序时注意几个出题点sbit 地址是否正确、定时器模式配置的 TMOD 值是否算对、中断服务程序里有没有清标志位比如串口发送后没有清 TI或者外部中断没清标志导致多次触发、主程序有没有把 EA 置 1。这些程序 bug 经常被当作考点。4.2 程序设计题套好这几个模板程序设计题是拿分大头但也是最让速成同学头疼的部分。其实单片机编程题的高频场景就那么几种背几个模板就能应付。模板一LED 闪烁。需求是 P1.0 接一个 LED每隔 500ms 翻转一次。核心代码#include reg52.h sbit LED P1^0; void Timer0_Init(void) // 12MHz晶振定时50ms一次重装20次达到1s { TMOD 0x01; // T0方式1 16位定时 TH0 0x3C; // 高8位初值50ms计算65536-50000155360x3CB0 TL0 0xB0; // 低8位初值 ET0 1; // 开启T0中断 EA 1; // 打开总中断 TR0 1; // 启动T0 } void main() { Timer0_Init(); while(1) { // 主循环不需要额外操作 } } void Timer0_ISR(void) interrupt 1 // T0中断入口 { static unsigned int cnt 0; TH0 0x3C; // 重装初值 TL0 0xB0; cnt; if(cnt 20) // 50ms×201s { cnt 0; LED ~LED; // 翻转LED } }模板二外部中断控制。P3.2 接一个按键按键按下触发外部中断 0中断服务函数里控制 P1 口流水灯状态改变。初始化时 IT01 设为下降沿触发EX01EA1。模板三数码管动态扫描显示。用 P0 口输出段码P2 口控制位选利用定时器中断做定时扫描每 2ms 切换一位视觉上就是稳定的四位显示。核心在段码表的定义0~9 的段码要背熟考试会给也可能不给建议自己默写一遍。模板四串口收发。配置 SCON 为方式 1波特率 9600定时器 T1 方式 2 装初值 FDSBUF 写入数据开始发送TI1 时表示发送完成RI1 时表示收到数据。发送字符串就是不断往 SBUF 里写写完一个等 TI 变成 1再软件清零继续写下一个。答题的时候要注意规范函数前加上头文件主函数写完整中断函数用 interrupt 关键字并注明编号外部中断 0 是 0定时器 0 是 1外部中断 1 是 2定时器 1 是 3串口是 4。这些细节会直接影响程序编译器是否通过也就是卷面上的编程题能不能得分。4.3 简答题的答题模板与关键词简答题是很多速成同学的短板要么写得太多抓不住重点要么写得太少凑不够字数。我的经验是先答定义再答过程最后补充特殊注意事项。三段式答题法能保证涵盖得分点。举个例子问“简述 51 单片机定时器的工作方式 1 及初值装载过程”。第一段写定义方式 1 是 16 位定时/计数器由 THx 和 TLx 组成 16 位计数器计数溢出时置位 TFx。第二段写过程TMOD 配置为方式 1THx、TLx 装入初值TRx1 启动定时每来一个机器周期计数值加 1计满 65536 时溢出TFx1 并产生中断请求。第三段写注意点定时期间需要重装初值的方式要手动重装自动重装则选方式 2。名词解释类的题更简单记住一句话结尾加一句实际应用就行。比如“什么是波特率”答每秒传输的二进制位数单位是 bps它反映了串行通信的速率。再加一句通信双方波特率必须一致否则无法正确收发。这就是完整的得分答案。4.4 容易丢分的细节阅卷老师最喜欢挖的坑根据我批改过的一些试卷和网上看到的真题有几类细节是大家普遍容易丢分的寄存器初始化顺序错误。比如开定时器中断前忘记把 EA 置 1或者 TMOD 写错了位。答题时将初始化的四条指令都写上顺序无所谓但不写完整就会扣分。中断服务函数里忘记重装初值。方式 1 不具备自动重装能力如果不重新给 THx 和 TLx 赋值下一次定时时间就会变成 65536×机器周期那——么长程序行为完全偏离预期。这个 bug 很多试卷的编程题都故意挖了坑。串口发送后没有清 TI。TI 是发送完成标志发送完成后 TI 自动置 1需要软件清零否则下一次发送会判断失败。同理 RI 要软件清零。P0 口做普通 I/O 时漏掉上拉电阻。原理题里经常会问为什么 P0 要加上拉因为 P0 内部没有上拉电阻是开漏结构直接输出高电平时带不动负载接上拉电阻后才能正常输出高电平。上面这些坑你写程序题时稍微过一遍脑子就能绕开但很多同学因为紧张就顾此失彼白白丢了辛苦分。5. 不同场景的考前准备策略5.1 期末与补考以老师划的范围为纲期末和补考其实是同一套逻辑以学校老师给的考试范围为准历年真题为核心资料。如果你手头有老师发的复习提纲那就按提纲的优先级来分配时间不要自己瞎扩展。很多学校期末考试有原题或改编题把真题吃透比什么都管用。补考的情况稍微特殊因为往往离第一次考试时间很近这时候重点复习上次丢分最多的模块计算题必须重做。如果上次是因为程序题没写出来挂的这轮就把程序模板背熟再默写三遍。补考通过率低通常不是题目难而是复习时间太短、方法太乱按我前面的三轮法走4.5 小时完全够用。5.2 专升本基础概念 代码模板双管齐下专升本的单片机科目难度总体不高但题量不小很多同学耗时在选择题上。复习时把基本概念背熟比如什么是单片机、什么是总线、什么是中断、什么是波特率然后每种编程模板默写一遍。填空和名词解释的分数稳稳拿到手基本就能过线。专升本还会考一些硬件设计基础比如最小系统的组成、LED 驱动电路、按键输入电路。这些内容在《单片机原理及应用》教材里一般都有不需要掌握太深的电路知识记住典型电路结构就行。考试时如果画电路图记得标注元件参数晶振 12MHz、电容 30pF、复位电阻 10kΩ 这些数值都要写上。5.3 考研复试面试问答的思路准备考研复试的单片机问题比笔试更灵活。老师问“简述 51 单片机中断系统的组成和工作过程”时你要把中断源、中断控制寄存器、优先级、响应过程完整回答而且中间要穿插自己的理解。比如说完中断响应前要满足的条件后主动补充一句“这就保证了中断嵌套的顺序性高优先级中断可以打断正在执行的低优先级中断”。复试还可能问到项目经历比如“你做过什么单片机项目”。这时候把项目功能、硬件选型、关键代码思路、遇到的问题和解决方案说清楚。没有项目经验也没关系就说课程设计关键是展示你确实理解单片机在实际中是怎么工作的。另外复试对芯片选型的敏感度也更高。为什么用 51 而不是 STM32可以说 51 结构简单、外设资源清晰适合学习基础原理和控制逻辑STM32 的寄存器更复杂、外设库更丰富适合做资源需求更大的项目。能把这个对比说清楚老师会觉得你是真懂。5.4 考前一天的准备工作清单考前最后一天不要再做新题了重点是复盘错题和默写模板。把前面抄的公式纸拿出来逐个默写定时器初值计算、波特率计算、中断入口地址表、TMOD/TCON 各位含义、SCON 各位含义。默写不出来的立即翻书重新记。考试工具也要提前准备。单片机考试通常允许带计算器初值计算题需要计算器做十进制到十六进制的转换。如果有画图题铅笔和尺子要带上画引脚图、最小系统图都不需要多精细但绝不能涂改得乌漆嘛黑。我个人的一个小习惯是考前把中断入口地址表和 TMOD 的位定义写在草稿纸上进考场第一件事就是默写一遍按考试要求执行允许的话这样后面的题目不管做不做心里都有底。最后说点心里话。我从大二被单片机折磨到后来能帮别人讲明白这门课中间踩过的坑不算少。这门课没有想象中那么难但也没有捷径到看一眼就会的程度。4.5 小时的速成核心不是把知识灌进去而是帮你把学过的知识在考场上成功调用出来。只要框架对了、公式熟了、模板背了、细节注意到了90 并不遥远。这门课的知识体系其实很闭环从最小系统到中断到定时器到串口每个模块既独立又相互关联拿下一张卷子后你就会发现单片机的原理和设计思维是相通的。祝看到这里的你考运爆棚卷子上每个初值都算对每道程序题都编译通过。
返回列表