《《微机原理》课程重点易错点知识工学.pdf》由会员分享,可在线阅读,更多相关《《微机原理》课程重点易错点知识工学.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学习好资料 欢迎下载 微机原理课程重点/易错点知识 为电气 12级编写,吴老师,20150304 前言 为让同学们更好进入 接口技术 课程学习,我对微机原理 课程的一些重要、易错的内容进行扼要提示,请同学们务必认真看一遍。对照自己原来的认识,如有问题,需要解答,请学习委员汇总后交给老师。计算机系统扩展与接口应用依赖开发者的知识与能力。本文列出的主要是知识中的部分要点,并不全面。至于能力方面涉及的:动手制作能力,开放与收敛的思维能力,程序方法与编程能力以及纠错查错调试能力等,完全没有涉及,需要同学们自己通过锻炼来获得。重点/易错点的扼要提示 数字(Digital):计算机中所说的“数字”,不是阿
2、拉伯数字,而是以两极化的观点来抽象表达客观世界信息的一种信息表示方法,如:男-女,高-矮,正-反等等。用二进制可以方便表示数字信息及其数学与逻辑关系。仅有二进制数可以表示和处理逻辑关系。模拟(Analog):非数字的信息表达就是模拟的,它可以取无限多种值,也可以是有限种的状态。(百度百科或其他教科书的说法排除有限种状态,不全面)处理器/微处理器:也称为 CPU,俗称“计算机”,“电脑”,是具有“主动/自动取指令,执行指令”能力的器件。严格来说,CPU除了前述能力外,还具有通过总线管理其他 IC 的能力。计算机中的数与数学的数:计算机用 CPU处理的数仅限于在某种位数(如 8 位)和某种代码(如
3、原码)范围内正确,它不等于数学的数,让计算机处理的数符合数学规律是软件的任务。计算机单元中的数:存的是一种状态,不是“东西”,可以无限次的读取,不会移走;一存入就变成新值,不是罐子可以叠加存放。多字节数:不是用来表示一个很大的数,而是用来表示信息的总状态,或用来表示取值范围较大的数。多字节数没有多个地址,它通常用最低字节的地址作为多字节数的单元地址。“空”或“没有”:计算机中没有自然的“空”或“没有”的状态,0 不是“空”,对未编程的存储器其位往往都为 1,1 也不是“空”,0 或 1 或数字都是状态之一,地位平等。CPU仍然可以访问物理器件不存在的地址空间,CPU读取到的值不是“空”,是 0
4、/1 的组合,只是不能事先确定而已。如果程序中要表示“空”/“不存在”或“有”/“存在”,可以人为定义。原码:是计算机用最基本(原始)的,用“位-权”关系表达的无符号数,它不是正数,正数是带符号数。“位-权”关系是用多位数字表示数的方法,每一位的数值为该位的数字乘上该位的权,权等于进制基数的位置系数次方,如 20=1。代码:用人为规定的方法让计算机中的数来表示某种信息。计算机数与信息代码形成“1 对多”的关系,代码的正确表示与处理代码的程序相关联。带符号数:有补码表示、原码表示、移码表示、反码表示等,不同的表示方法各有其的优缺点。要注意区别“某种代码”与“某种代码表示”的不同。补码与补码表示:
5、“补码”与“补码表示”的概念不同,“补码”是一对数,相学习好资料 欢迎下载 加刚好超出所处理的单元范围,丢掉进位后自动变为 0;“补码表示”是“补码表示的带符号数”的简称,它规定补码中一对数的较小数为正数,较大数为负数,来表示带符号数。补码表示的数适合进行加减运算,是计算机中除了原码之外的基本数值代码。补码表示的数的最高位:当该位为 1 时,表示一个负数。该位不是符号位,但可以用它来辨认该数的正负。(这点,多数省内高校教师与部分教科书都误解了)溢出:加减运算指令执行后同时给出了 Cy 与 Ov的值,Cy 可以用来判断原码数是否超出了范围(Carry);Ov可以用来判断补码表示的带符号数是否超出
6、了范围(Overflow)。不论原码或补码表示的数,都可以用Cy 来建立多字节数中各字节间的联系。Cy 和 Ov在其他指令中有另外的含义,如MUL指令中 Ov表示乘积的高字节非 0,不是带符号数移出与否的标志。符号代码:一般讲的符号代码,如 ASCII 码与中文代码,指的是信息代码,用于在标准设备间传递字符与某些动作的信息。表示符号代码样子的形状代码(如:宋体、黑体、斜体、点阵大小,数码管字模等等)是由实现设备中的软硬件实现。计算机家族:指令集相同或兼容的处理器。如:Intel的 8051,AT89C51,STC12C5A60S2等都属于 MCS-51 家族,其不同点在于硬件功能与速度能力等不
7、同。信息的逻辑与物理关系:指令中的信息为逻辑值,它对应的引脚或电路中的电压为物理值。在+5V的 TTL逻辑中,逻辑值 0 对应 0约 1V的电压(低电平);1对应约 2.5V+5V的电压(高电平)。不能认为负电压与高于 VCC的电压分别对应数字值 0,1,它们对系统往往有破坏作用。在硬件设计中,逻辑值 0/1 与电压范围的对应关系在输入、输出、TTL、CMOS 等不同场合都有差别,应认真考虑。I/O(输入/输出):计算机中的 I/O,物理量转变为逻辑值为输入;逻辑值转变为物理量为输出,它们与电路中的输入/输出不同,不是内外电路间电流的流动。端口 Port:实现 I/O 的器件。传统的 8051
8、 端口仅能进行数字量(0/1)的传递,通过程序,利用高/低电平宽度、频率,还可以进行模拟量的转换。STC等扩展的单片机已经可以直接进行 A/D与 D/A(PWM)的转换。端口与端口其他功能:当端口的锁存器与引脚间建立联系时,端口为其原本的I/O 功能,即作为端口使用;CPU还借用某些端口的引脚作为其他功能传递物理量时使用,如:串口、中断、总线、A/D等等,一旦将端口引脚作为其他功能使用时,其锁存器与引脚间的关系不能全都存在,此时一般不宜再作为端口使用。端口锁存器与引脚:指令中,凡作为目的的或执行“读取-修改-存回”功能的均为针对锁存器操作;“XCH A,并口”指令特殊,作为源的并口为引脚;作为
9、目的并口为锁存器;端口作为“源”的都是作为引脚。地(GND):计算机中各 IC 的数字值都是以电压来表示的,电压都是参照 GND来测量的,因此,各 IC 的地的电压都应当尽量相同(公共端),因此,PCB板中的 GND 布线都尽量宽,以便减少电阻造成各 IC 之间的电压差。晶振:外接的晶振可以让 CPU具有可选的不同速度。CPU执行指令、CTC、串口等工作速度均与晶振相关。传统的 8051 机器周期为 12/晶振频率;STC等扩展单片机的机器周期、指令周期与 8051 不同,应查相应的 PDF资料。STC单片机可以不用外接晶振,但工作频率不精确和不稳定。复位:复位让 CPU内部的寄存器初始化。复
10、位可以用外部电路施加在 RST引脚上的一定长时间的高(复位)到低电平(工作)来实现,STC单片机可以省去外部复位电路,用内部的复位电路实现,腾出来的 RST引脚作为 P4 扩展端口引脚使习我对微机原理课程的一些重要易错的内容进行扼要提示请同学们务必认真看一遍对照自己原来的认识如有问题需要解答请学习委员汇总后交给老师计算机系统扩展与接口应用依赖开发者的知识与能力本文列出的主要是知识中的部力等完全没有涉及需要同学们自己通过锻炼来获得重点易错点的扼要提示数字计算机中所说的数字不是阿拉伯数字而是以两极化的观点来抽象表达客观世界信息的一种信息表示方法如男女高矮正反等等用二进制可以方便表示数字信种值也可以
11、是有限种的状态百度百科或其他教科书的说法排除有限种状态不全面处理器微处理器也称为俗称计算机电脑是具有主动自动取指令执行指令能力的器件严格来说除了前述能力外还具有通过总学习好资料欢迎下载加刚好超学习好资料 欢迎下载 用。WDOG(看门狗)电路控制着内部的复位电路,可以用于 CPU死机后自动复位,提高系统可靠性。电源:单片机与一般数字电路使用的都是直流电压源。直流电源的指标除了电压外,还有:功率或提供电流的能力,稳定性(电泳、波纹等)。电源的波纹对IC 的工作是有害的,IC 工作时也会导致电源产生波纹。消除电源的波纹是硬件设计中必须考虑的事。单片机一般采用+5V或+3V电源,STC等单片机中某些类
12、型为“宽电压型”,可以在 26V电压下工作。电源可以用 AC-DC 或 DC-DC 电路来实现。USB与多数手机充电电源都是+5V电源,可以供实验的单片机系统使用。硬件研发:硬件具有空间与时间复杂性。应当运用相关知识(电路,电子技术,集成电路,系统扩展与接口技术等)并参考别人的电路,必要时应当做模块的制作与测试,通过计算机辅助电子设计软件(Protel,Proteus,Altium Design,OrCAD,PADS,Candence 等)设计原理图和 PCB图,发到工厂进行制板,再通过元件焊接,测试,改进与完善。硬件研发也要编写较简单的测试软件,以判断制作的硬件功能。存储器与寄存器:存储器的
13、基本单元为字节,它用地址作为其访问(即读/写)的唯一标识,程序员可以在源程序中赋予存储器有意义的名称和所设定的功能;寄存器有厂家规定的功能和名字,CPU的寄存器与 CPU的某种功能相关,通过寄存器可以使用 CPU的该功能。扩展的单片机功能是通过扩展对应的 SFR单元来实现的。51 单片机的所有存储器都有间址寻址能力。存储器与寄存器的区别:不是在于是否在 CPU的内部还是在外部(百度百科说在CPU内部的是寄存器,而在内部的 RAM 或 CACHE 却是存储器)。一般不能将 SFR当作存储器单元使用,如连续执行:Mov SFR,A 与 Mov A,SFR,不能保证 A不改变。内部 RAM 与 SF
14、R:内部 RAM 地址空间为 00H FFH(某些类型的单片机 80H FFH为“有空间无单元”);SFR地址空间为 80H FFH(不充满)。80H FFH的空间依照指令寻址方式来区分 RAM 与 SFR:间接寻址的访问 RAM;直接寻址的访问SFR。注意:很多书上讲的“内部RAM80HFFH作为 SFR”是错误的!位单元:MCS-51的位单元必属于某个字节单元,00H 7FH位单元属于 20H 2FH字节单元;80H FFH位单元(不充满)属于地址能被 8 整除的 SFR。自定义位单元时,凡将位单元定义到某字节单元后,该字节单元就要作为位单元的集合单元使用。自定义的 RAM 中的位单元可以
15、作为程序中的状态标志或控制标志使用。工作寄存器 R0 R7:是由“内部 RAM 中可作为工作寄存器区 00H 1FH”的 4 个区之一担任,有 PSW中的 RS0,RS1确定。它们是寄存器,不是存储器(尽管它们与某片存储区的单元内容相同),某些指令规定不允许使用它们,如 PUSH/POP指令。堆栈:由 CPU通过 SP来自动操作,确保FILO的嵌套顺序。MCS-51 的堆栈在内部 RAM 中,堆栈隐含从 08H开始(SP=07H)。对于有高端 RAM 的 CPU,宜将堆栈放到高端 RAM 中。单片机的堆栈主要是用于子程序与中断调用-返回的,也可以用于不必指定 RAM 单元地址的数据传送与其他特
16、殊功能。MCS-51程序中要限定堆栈用于数据传送的使用,并且要严格注意堆栈操作的合理性,防止死机。XRAM:不能狭义认为是“外部扩展的 RAM”,实际上它是通过并行总线扩展的单元空间,可以用于扩展外部的工作 IC,在 80X86(PC)微机中,对应的是“扩展习我对微机原理课程的一些重要易错的内容进行扼要提示请同学们务必认真看一遍对照自己原来的认识如有问题需要解答请学习委员汇总后交给老师计算机系统扩展与接口应用依赖开发者的知识与能力本文列出的主要是知识中的部力等完全没有涉及需要同学们自己通过锻炼来获得重点易错点的扼要提示数字计算机中所说的数字不是阿拉伯数字而是以两极化的观点来抽象表达客观世界信息
17、的一种信息表示方法如男女高矮正反等等用二进制可以方便表示数字信种值也可以是有限种的状态百度百科或其他教科书的说法排除有限种状态不全面处理器微处理器也称为俗称计算机电脑是具有主动自动取指令执行指令能力的器件严格来说除了前述能力外还具有通过总学习好资料欢迎下载加刚好超学习好资料 欢迎下载 端口”。STC单片机中有的型号内部含有数 KB的 XRAM。PROM:硬件上没有“写”信号,为只读性质。内容可以为机器指令代码,常数和垃圾(没有用到的空间),0000H处不论存放什么都作为指令。MCS-51规定:无法识别的指令都作为 NOP处理。STC单片机有数十 KB的内部 EEPROM。复位与中断子程序的入口
18、地址是 PROM 中的重要知识,STC扩展了几个中断(如 A/D,电源管理等),相隔 8 个字节,排在 002BH之后。指令:指令是程序员的“武器”,用于指挥计算机和与其相连的IC 工作。不同的指令可以实现相同的功能,但效率(存储与执行)不同、副作用有大小。应当选择最优的指令来编程。指令由操作码和操作数构成,分开来学习有助于提高学习效率。指令中的寻址方式:用于提示程序员正确使用指令,并不等于指令的实际寻址方式,如:RET/Push 等。寻址方式:立即寻址的数在指令中,不可改;直接寻址/寄存器寻址(SFR,位,部分 RAM)的数在单元中,可以改,但单元不可改,以便对相同单元使用不同的数;间接寻址
19、(所有存储区)的单元地址在寄存器中,可以修改,以便程序访问不同的单元。:间接寻址标志,之后寄存器或寄存器之和中存的是地址,有R0,R1,Dptr,A+Dptr,A+PC。要防止用Ri修改自身或访问不存在的空间或破坏其他单元内容。CPU 执行指令过程:1.依 PC值取指令 2.修改 PC为相邻的下一条指令地址 3.执行取到的指令所要求的任务。注意:最后一步执行指令时,PC不在本指令的地址处,已经移到相邻的下一条指令地址了,这是为了连续执行指令与子程序调用指令而设计的。第 3 步执行指令时可能再次修改 PC的一类指令归于“控制转移类指令”传送:数据的传送或Mov或移动,都没有修改源单元,仅是复制
20、Copy 而已。通过 SFR的传送类指令可以实现诸多 CPU内部提供的功能。运算:运算改变数值并一定伴随着传送。注意运算指令与标志的关系,如“带 C”运算;结果对标志的影响等。多字节运算可以用 Cy 来建立联系,也可以用其他关系来建立联系。转移类指令:某些转移类指令包含了运算,如 CJNE,DJNZ,JBC等。注意条件转移指令执行之前要先产生相应条件,要注意防止互串(条件成立与不成立下执行的程序互串)。注意转子程序使用 Call 类指令,子程序结束用 RET。注意中断子程序结束必须用 RETI指令。源程序:由纯文本的符号代码表示的文件,用于程序员编写/阅读交流/汇编后产生目标代码/存档。CPU
21、不能执行源程序,只能执行经过汇编/编译之后产生的目标代码(机器语言)程序。MCS-51的程序可以用汇编语言或 C等高级语言来编写源程序。使用汇编语言编写的源程序可以产生最精确和最高效的目标代码。C等高级语言编写的源程序可以调用程序库,具有减少错误,便于阅读,移植性强,编程效率高,易于实现数值计算等优点。C语言中可以嵌入汇编助记符指令。软件:程序,数据,相关说明等文档。伪指令:指挥汇编程序工作的指令,它在 CPU的程序中不存在。数值单元定义伪指令:EQU,DATA,BIT 等,将标识名赋予数值,区别在于附加习我对微机原理课程的一些重要易错的内容进行扼要提示请同学们务必认真看一遍对照自己原来的认识
22、如有问题需要解答请学习委员汇总后交给老师计算机系统扩展与接口应用依赖开发者的知识与能力本文列出的主要是知识中的部力等完全没有涉及需要同学们自己通过锻炼来获得重点易错点的扼要提示数字计算机中所说的数字不是阿拉伯数字而是以两极化的观点来抽象表达客观世界信息的一种信息表示方法如男女高矮正反等等用二进制可以方便表示数字信种值也可以是有限种的状态百度百科或其他教科书的说法排除有限种状态不全面处理器微处理器也称为俗称计算机电脑是具有主动自动取指令执行指令能力的器件严格来说除了前述能力外还具有通过总学习好资料欢迎下载加刚好超学习好资料 欢迎下载 的属性,可用于区别与汇编程序的检查。DB/DW 伪指令:可以在
23、程序中安排单元与常数,或直接编写机器语言程序。ORG 伪指令:告诉汇编程序,以下程序或数据从此地址开始存放。$:源程序指令中用于表示“本处地址”。END 伪指令:告诉汇编程序:源程序到此结束,它不是结束指令,不表示程序到此结束。上电复位后,CPU不会“停止”程序的执行,更不能用 END伪指令来停止/结束程序。局部变量与全局变量(这里借用高级语言的“变量”说法):凡仅在某个子程序中或子程序入口和出口传递数据中其含义固定的为局部变量;变量含义跨子程序不变的为全局变量。应当规定用通用寄存器(A,B,R0R7,C,Dptr)作为局部变量,而全局变量应当用定义的 RAM 单元。语法与语义:语法(格式)错
24、可以由汇编程序检查出来;语义(逻辑)错不能由汇编程序检查出来,只能通过调试(观察单元数值,物理效果等)检查。查错/排错:可以在仿真环境中,将子程序或程序段单独调试,赋予边界值(最大,最小)、典型值与异常值等,设置断点,观察执行效果,与正确值(效果)比较,判断与思考是否正确,找到错误之处加以改正。典型小程序编写:通过典型小程序的编写培养编程能力,增加编程经验,累积程序“组合拳”与模块。需要编写与锻炼的程序模块有:条件与多分支;运算;时序控制;循环;查表;子程序,模块化编程等等。程序方法:计算方法+数据方法。单片机中常用数据表的方法。软件研发:程序具有时间复杂性,应当先明确涉及对象的性质,做必要的
25、实验,研究程序方法,最后再编写源程序并通过调试完善之。完整的程序:接管复位入口,没有开放的出口(即程序运行路线是封闭的)。通常由:初始化,主循环与各种中断子程序组成。程序片段与子程序:程序片段=程序中的一部分,用来学习、锻炼、测试与调试;子程序=具有可供调用的入口标号和从堆栈中取出返回地址返回主程序特点的程序。非完整的程序片段与子程序调试时可以在末尾用“SJmp$”将其转为完整程序,但作为书本举例或考试就不能添加。习我对微机原理课程的一些重要易错的内容进行扼要提示请同学们务必认真看一遍对照自己原来的认识如有问题需要解答请学习委员汇总后交给老师计算机系统扩展与接口应用依赖开发者的知识与能力本文列出的主要是知识中的部力等完全没有涉及需要同学们自己通过锻炼来获得重点易错点的扼要提示数字计算机中所说的数字不是阿拉伯数字而是以两极化的观点来抽象表达客观世界信息的一种信息表示方法如男女高矮正反等等用二进制可以方便表示数字信种值也可以是有限种的状态百度百科或其他教科书的说法排除有限种状态不全面处理器微处理器也称为俗称计算机电脑是具有主动自动取指令执行指令能力的器件严格来说除了前述能力外还具有通过总学习好资料欢迎下载加刚好超
限制150内