ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:3.31MB ,
资源ID:5646687      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5646687.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机期末复习.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机期末复习.docx

1、单片机期末复习第1章:1:什么是单片机:单片机由三大组成部分(CPU、存储器(RAM,ROM)、I/O接口)和一些实时控制需要的功能期间集成在一片芯片上。它有三大总线:数据总线、地址总线、控制总线2: ISP:(In System Programming),即在系统编程IAP:(In Application Programming),即在应用编程3:I2C总线:采用俩线制,数据线(SDA)和时钟线(SCL)构成,其有起始信号(S)和终止信号(P),所有操作在起始信号后有效,在终止信号后无效4:单片机的特点:(1)单片机的存储器ROM和RAM是严格区分的(ROM为程序存储器,只存放程序、固定常数

2、及数据表格,RAM是数据存储器,用于工作区及存放用户数据)(2)采用面向控制的指令系统(3)单片机的I/O引脚通常是多功能的(4)单片机的外部扩展能力很强5:MCS单片机是Intel公司生产的单片机的总称,MCS-51是Intel的51系列单片机第2章:(H表示16进制,如:1FH,是指31的16进制表示,1FH也可以小写1fH)1:8051的内部资源:(1)定时器:T0,T1(2)五个中断源:(由高到低)外部中断0、定时器/计数器0中断、外部中断1、定时器/计数器1中断、串行口中断。(在单片机中定时器和计数器是同一个东西,由TMOD的C/T位来确定)(3)全双工串行口2:必须要记住的几个引脚

3、:ALE:地址锁存输出端RST:复位,高电平10ms以上才能保证有效复位EA(上面有个横线,不会弄额):片外程序存储器,低电平时,只选用片外程序存储器3:CPU的组成:控制器、运算器4:程序状态字PSW:bit位由高到低(70):C:进位标志,最高位有进位时(加法时)或有借位(减法),C=1,否则C=0;AC:辅助进位,D3位向D4位有进位(或借位)时为1F0:用户自定义区RS1: RS0:俩者用于选定4个工作寄存器组的某一组,00:工作寄存器0组,01:工作寄存器1组,10:工作寄存器2组,11:工作寄存器3组,(pg26页的工作寄存器组0、1、2、3)OV:判断运算结果是否溢出,其值为运算

4、结果的最高位(bit7)和次高位(bit6)的异或-: 暂留位,没用的,无视它P:奇偶校验位,累加器A中1的个数是奇数,则为15:单片机里的四个周期:振荡周期:振荡脉冲的周期,比如:12MHz的振荡频率,其振荡周期为1/12us状态周期:2个振荡周期为1个状态周期,也称时钟周期机器周期:一个机器周期包含6个状态周期,12个振荡周期,此时12MHz的振荡频率,机器周期为1us指令周期:执行一条指令所用时间,以机器周期为单位,单周期指令和双周期指令在12MHz下指令周期分别为1us和2us,乘除法为4周期(4us)6:内部RAM(数据存储器)主要分为:工作寄存器(4个,地址为0:00H07H,1:

5、08H0FH,2:10H17H,3:18H1FH,(由程序状态字PSW里的RS1和RS0控制工作寄存器组,上面已有描述)、位寻址区(20H2FH,顾名思义,在控制,读写数据时可以进行位操作,为一个地址有8位,如21H下有08bit位到0Fbit位)、数据缓冲区(30H7FH(堆栈))7:堆栈的操作:堆栈是按先进后出,后进先出的原则读写,当数据压栈时,先把SP内容加1,再把数据存放到SP所指向的内容,出栈时:数据弹出后,SP减1.(要理解)(复位后,SP初值为07H,存放数据时SP加1,在存放数据,也就是说,堆栈实际从08H存放信息)8:I/O口:P0口:地址总线的低8位,或普通I/O口(I:I

6、n O:Out)P1口:一般I/O口P2口:地址总线的高8位,或普通I/O口,当作为普通I/O口时,需加上拉电阻P3口:特殊功能I/O口,或普通I/O口附:当输入时,先写”1”(我也不是很理解,普通的单片机是直接读取信号的,可能是我不懂汇编,不知道具体工作原理的原因吧)9:定时器:工作方式由TMOD(timer mode)来决定,高四位决定T1,第四位决定T0,这四位分别为:GATE(门控位,用于控制定时器/计数器的启动是否由中断引脚INT0/1来控制,这个考试不必了解,无视吧,知道有这个一个位即可)、C/T(T上有个横线,表示低电平为T,1:计数器0:定时器)、M1、M0(这俩位来决定工作方

7、式)M1、M0位对工作方式的控制:(初值的计算,重点,通过理解来计算,前俩个重点看)工作方式0(00)(13位计数器/定时器):定时时间:T = N*Tcy = (8192 - x)*Tcy 8192=213(THx的高8位和TLx的低5位)x初值的设定Tcy:单片机的机器周期,比如12MHz的晶振,机器周期为1us也就是说工作方式0的定时范围是08192us初值的计算:先求x,比如要求定时1000us(当然,主要讲解的是一个方法,考试初值定位多少,使用的是工作方式几我也不知道),那(8192 - x)*Tcy = 1000 (Tcy = 1)解得x为7192,()(以定时器0为例,也可能只考

8、计算公式T = N*Tcy = (8192 - x)*Tcy 吧)工作方式1(01)(16位计数器/定时器)(实际应用中一般使用工作方式1):T = N*Tcy = (65536 - x)*Tcy(具体的解释参考上面,THx和TLx都是8位)工作方式2(10)(8位计数器/定时器)T = N*Tcy = (256 - x)*Tcy工作方式3(11)(只适用于定时器0)(应该无视吧,因为实际应用中也基本不用)分为俩个独立的8位计数器(TH0和TL0),TH0只可作为定时器,占用定时器1的TR1(定时器1的启动位)和TF1(定时器1的中断标志位),(无论定时器0还是1操作时都会运用到TR和TF位)

9、,TL0可作为定时器也可作为计数器10:串行通信(用于计算机与计算机,上位机与下位机之间的通信):异步串行通信标准:RS-232C波特率的设置:由SCON的SM1和SM0这俩个控制位来设置波特率的工作方式SCON(8位,了解即可):70:SM0 SM1 SM2 REN TB8 RB8 TI RI由SM0和SM1来控制波特率的方式03波特率的计算:方式0(00): fosc /12 (fosc是振荡频率,如果还不知道什么是振荡频率,面壁去。)方式1(01):(2(SMOD)*T1溢出率)/32方式2(10): 2(SMOD) * fosc/64 (SMOD可以取0或1 ,0时:波特率为:fosc

10、/64, 1时:波特率为:fosc/32)方式3(11):3和1一样附:PCON的bit7位是SMOD,SMOD是波特率系数控制位,SMOD = 1时波特率增大一倍11:中断:五个中断源:三个内部中断:定时器/计数器T0中断、定时器/计数器T1中断、串行口中断,俩个外部中断:外部中断INT0、外部中断INT1、。(在单片机中定时器和计数器是同一个东西,由TMOD的C/T位来确定)中断优先级控制位(应该不考):IP(bit7bit0)空 - PT2 PS PT1 PX1 PT0 PX0PX:外部中断优先级控制PT:定时器中断优先级PS:串口中断优先级-:没有中断允许控制(需要知道)IE(bit7

11、bit0)EA - ET2 ES ET1 EX1 ET0 EX0EA(enable all):中断总控制位 ET: 定时器/计数器溢出中断允许位ES: 串行口中断允许位EX: 外部中断允许位外部中断控制(需要知道): TCON(bit7bit0)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0IT0(IT1): 外部中断触发控制位,0:电平触发 1:电平跳变触发IE0(IE1):外部中断请求标志位,当有外部中断时,该位会自动置1TF0(TF1):定时器/计数器溢出标志位,当定时器/计数器溢出时,该位自动置1TR0(TR1): 1:打开定时器/计数器 0:关闭定时器/计数器12:复

12、位状态:单片机在复位后:(1):SP的值指向07H(SP用于堆栈的地址的,上面第7点介绍到)(2):P0P3 I/O口默认电平变为1,即FFH(3):其它的都为013:单片机的低功耗:PCON(bit7bit0)(主要记住最后俩个)SMOD - - GF1 GF0 PD IDLPD:掉电方式控制位,1:进入掉电方式 0:结束掉电方式IDL:空闲方式控制位,1:进入空闲方式 0:结束空闲方式附:(SMOD,上面已有介绍,波特率控制位,该位来控制波特率是否加倍,GF1、GF0无视吧,不常用)第3章:1:指令一般有功能、时间和空间三种属性。2:寻址方式:主要记住的三种:(1)立即寻址(程序存储器RO

13、M): 例MOV A,#30H (30H就是一个立即数,把30H这个数送到累加器A中)(2)寄存器间接寻址(内部RAM、外部RAM和I/O口):例 MOV A,R1(功能是将以工作寄存器R1(假设为80H)中的内容为地址的片内RAM单元的数据传送到A中去) (3)直接寻址(内部RAM、特殊寄存器(唯一方法):例 MOV A,40H (40H就是操作数的地址该指令的功能是把片内RAM地址为40H的内容送到A中)预先添加的知识(一定要看懂,不然后面的题目你不会!believe me。):R0R7:是工作寄存器组里的工作寄存器A:累加器(ACC)MOV:数据传送DPTR:双字节的存储时需要运用到DP

14、TRA和DPTR都是数据传送过程中的”搬运工”(一定要注意,在数据传送中,要有搬运工)MOVX:CPU对片外扩展的数据存储器RAM或I/O口进行数据传输时,必须采用寄存器间接寻址,通过累加器A完成。例: 读:MOVX A, DPTRMOVX A, Ri (Ri是指R0R7)写:MOVX DPTR, AMOVX Ri, AMOVC:访问程序存储器(ROM)的数据时,采用的命令采用基址寄存器间接寻址方式,把程序存储器存放的表格数据中读出,传送到累加器A使用:MOVC A, A+DPTR ;(基址寄存器间接寻址,具体介绍见Pg57的变址寻址)解释:由A和DPTR相加的值作为地址,将该地址的值存放到累

15、加器A中下面这个图,可以方便数据传输的理解:Pg93:若要完成以下数据传送,应如何用51单片机的指令来完成(1)R0的内容传送到R1中代码: MOV A, R0 (看!有个逗号,这个不能省!) MOV R1, A理解:(“;为注释,写答案时是不需要写注释的”)MOV A, R0 ;将R0的值存放到累加器A中MOV R1, A ;将累加器A中的值存放到R1中(2)外部RAM的20H单元内容传送到R0,送内部RAM的20H单元(假设20H中的内容为41H思路:重点是MOVX A,R0的理解,这是以R0中的值为地址,把该地址的值(41H)存到A中,所以,首先对R0进行赋值,所赋值的内容为该数的地址!

16、,也就是MOV R0,#20H,然后,在MOVX A,R0之后,A中的就是20H单元的内容(41H),然后,就是把该内容传送到R0中MOV R0, A,传送到内部RAM的20H单元MOV 20H, A)只需要写代码部分,”;”后的注释不需要写,以下都是这样!MOV R0, #20H ;将立即数20H存到R0中MOVX A, R0 ;预备知识中写了,当由工作寄存器到;累加器时用MOVX,;把R0中以20H为地址的内容存放到累加器A中MOV R0, A ;把把累加器A中的值存到R0中MOV 20H, A ;把累加器A中的值存到20H单元的内容中(3)外部RAM的2000H单元内容送R0,送内部RA

17、M的20H单元,送外部RAM的20H单元如果该题目无法更好的理解,请把上一题多多理解下!MOV DPTR, #2000H ;将立即数送到DPTR中,因为2000H是双字节数,;单字节就可以直接送到R0中MOVX A, DPTR ;将2000H送到累加器A中MOV R0, A ;将累加器A中的值送到R0中MOV 20H, A ;将累加器A中的值送到20H中MOV R1, #20 ;因为要存放到外部RAM中;就要MOVX Ri,A,R0之前已经用了,所以用R1,;要存放到外部RAM的20H中,先对R1进行赋值MOVX R1, A ;传送数据到外部RAM的20H中 (4)ROM的2000H单元内容送

18、R0,送内部RAM的20H单元,送外部RAM的20H单元MOV DPTR, #2000H ;将立即数送到DPTR中,因为2000H是双字节数MOV A, #00H ;这个主要解释见Pg57的变址寻址MOVC A, DPTR+A ;把以00H+2000H位地址的内容存放到累加器A中MOV R0, A ;将A中的值(2000H为地址中的内容)存放到R0中MOV 20H, A ;将数值传送到内部RAM的20H单元中MOV R1, #20H ;因为要存放到外部RAM中;就要MOVX Ri,A,R0之前已经用了,所以用R1;要存放到外部RAM的20H中,先对R1进行赋值MOVX R1, A ;传送数据到

19、外部RAM的20H中Pg95:下面的程序段经汇编后,从2000H开始的各有关存储器单元的内容是什么?ORG 2000HTAB : DB 10H,20HDW 2100H,23HDW TABDB WORK理解: ORG 2000H是程序运行时需要把程序跳转到一个起始位置,(无视这句)DB:定义字节伪指令ORG 2000HTAB1: DB 30H,8AH,DB A那么,TAB1的值为2000H(2000H) = 30H,(2001H) = 8AH (2001H) = 41H(A的ASCII码)DW:定义字(双字节)伪指令,先写高字节,再写低字节所以上题的结果:(2000H) = 10H(2001H)

20、 = 20H(2002H) = 21H(2003H) = 00H(2004H) = 00H ;因为DW是写双字节,所以23H就要表示为0023H;高字节 00H(2005H) = 23H(2006H) = 20H(2007H) = 00H(2008H) = 57H ;W的ASCII码 (2009H) = 4FH ;O(2010H) = 52H ;R (2011H) = 4BH ;K 下面这题,老师说了肯定考! Orz .外部RAM2000H单元有个8位二进制数,要求转换为8421BCD码,并将百、十、个位分别存放到内部RAM的20H、21H、22H8位:(0256)如 1011 1001 BC

21、D码为:185百:185/100=1 余数:85十:85/10 = 8 余数:5个:5DIV(除法)的使用DIV AB (A - A/B的商 B - A/B的余数)(此处的B寄存器是辅助累加器A完成乘除法运算)注意没有逗号Code:MOV DPTR, #2000H ;先读取外部RAM2000H中的值MOV A, DPTR ;具体操作上面讲过MOV B, #64H ;64H就是100的16进制,B作为被除数DIV AB ;A/B = 185/100,然后,商(1)给A,余数(85)给BMOV 20H, A ;将A中的值(百位)存放到20H中 MOV A, B ;A中的值为85MOV B, #0A

22、H ;将10(0AH)存放到B中DIV AB ;A/B = 85/10,商(8)给A,余数(5)给BMOV 21H, A ;十位放到21HMOV 22H, B ;个位放到22H 第4章:80C31的最小系统结构图(加程序存储器)(80C31无ROM(程序存储器),80C51才有ROM)引脚及芯片介绍:ALE:地址锁存有效信号输出端,在访问片外程序存储器期间,ALE以每机器周期俩次进行信号输出,其下降沿用于控制锁存P0口输出低8位地址,在不访问片外程序存储器时,ALE仍可作为对外输出的时钟脉冲P2口:高5位地址线(A812) P0口:低8位地址线(A0A7),及数据线(D0D7) (A:Addr

23、ess D:Date)PSEN:片外程序存储器选通信号输出端低电平有效,图中OE控制芯片输出是否有效,也就是读取数据74LS373:锁存器,当G为1时,锁存器输出端同输入端,当G由1变0时,数据存入锁存器中要求:会确定地址这部分,他也没讲多少,我上课也没听,我就随便写写一点吧,对不住了 :51单片机地址总线宽度为(16位,P2口的高8位加P0口的低8位)也就是216 b= 26*210 b= 64*1Kb = 64Kb地址范围:0000HFFFFH当连接到芯片的引脚不是16根时,要额外的思考,如只连接P2口的P2.0P2.5 和P0口的P0.0P0.7则地址线为8+6 = 14 (0011 1

24、111 1111 1111)214 = 16Kb 地址范围 0000H3FFFH总之把连接到芯片的引脚以二进制表示出来,再化为十六进制顺便看一下Pg:102页下面的地址译码关系。值得一提的是:译码地址线和与存储器芯片连接的地址线是有思考上的差别的译码地址线:这是作为芯片选通的地址(这些芯片在运用中地址不一样,有上面的地址引脚电平连接决定,是固定值)存储器芯片连接的地址线:这是芯片内部数据,计算方法如上实验一(1)图解释:74LS240:提高I/O口的驱动能力的,从功能上讲,可以无视它代码:实验一的代码还是挺简单的,但是量比较多,就不写了,还是你们自己看吧,不好意思74LS377的使用:74LS

25、377是一个锁存器因为P2.7控制着E(芯片的使用与否,低电平有效)在使用时,这么连接的输出口地址是P2.7 = 0 的任何16位地址,7FFFH可作为该入口地址7FFFH的由来(一定要记住,我觉得应该会考):P2.7P2.0 P0.7P0.00 x x x x x x x x x x x x x x x暂时可把x设置为1,就可以使用它了所以就为0111 1111 1111 1111 ,7FFFH使用代码: MOV DPTR, #7FFFH ;使DPTR指向74LS377输出口MOV A, #data ;输出的数据要通过累加器A传送MOVX DPTR, A ;向74LS377扩展口输出数据同上

26、,此处连接的是P2.6,当P2.6为0时,0与x相或,值为x,1与x相或,值为1,所以,我们不能使P2.6为1,若为1,RD引脚就没用了此时P2.7P2.0 P0.7P0.0x 0 x x x x x x x x x x x x x x同上把x设置为11011 1111 1111 1111也就是BFFFH(同上一定要懂,主要要看P2口芯片,连接的引脚是哪个)代码: MOV DPTR, #0BFFFH ;0可有可无MOVX A , DPTR第5章:无 Orz .真尼玛的累,各位同学辛苦了!好好复习,回家过个年第6章:1:按键抖动消除解决方案: 硬件(RC滤波,信号锁存)软件(读取一次状态(按键是

27、按下,还是弹起),延时约3050ms,再读取一次状态,看俩次状态是否一样,如果一样,那么就是这个状态,实际应用中就是通过软件来解决消除按键抖动的)2:数码管显示:记住数码管各个LED的位置(a、b、c、d、e、f、g、 dp)以数字3为例,需要把a、b、c、d、g五个LED点亮共阳极:(点亮的部分设置为0)dp g f e d c b a1 0 1 1 0 0 0 0所以连接P0口的数据为 0xB0(1011 0000)共阴极:(点亮的部分设置为1)dp g f e d c b a0 1 0 0 1 1 1 1所以连接P0口的数据为 0x4F(0100 1111)数码管显示分为动态显示和静态显

28、示,当数码管就一个(指个数比较少)时,使用静态显示,当个数比较多时,使用动态显示,动态显示是指几个数码管按照一定的顺序依次点亮,每个点亮n ms,因为视觉暂留,人会认为数码管都是亮的3:AD转换芯片:ADC0809ADC0809的讲解:Pg197页:ADC0809芯片:Pg:282例题(这是他上课具体提出的题目)稍微针对该题题目说一下难点:通道的选择:如图所示,题中说选择通道0也就是说A,B,C均为0然后,也74LS373锁存器,用于锁存信号,A,B,C为0,就是P0口的P0.0,P0.1,P0.2为0,然后P2.7口与WR和RD分别相或,为了不干涉它们的工作,该位置0,所以设置通道0的地址是

29、:0111 1111 1111 1000(7FF8H也就是C语言里的0x7FF8(小写0x7ff8也是可以的))芯片的使用:1:先将地址确定2:启动芯片(此时,EOC变0,表示芯片正在运作)3:当EOC(检测繁忙)由0变为1时,表示数据转换结束4:读取数据,先读取的低字节,后是高字节DA转换DAC0832分辨率: = 模拟量输出的满量程值/2n比如:满量程为1,8位的二进制D/A转换器 = 1、256 =0.39%Pg207页例题书上的图错误,将Iout0改为Iout1,Iout1改为Iout0P2.7控制CS与XFER,片选信号,低电平有效,所以控制地址为7FFFH,不再解释操作顺序:1:先

30、把准备要转换的数据2:拉低CS引脚,开始转换Pg287页例题实验书上的三角波实验这几个例题想说些什么,但又不知道说啥好了,还是在自己看吧,自己领悟吧,能理解就理解,理解不了就算了,或者问我第7章:万用表:略,都懂的逻辑笔:用于测试数字电路中测试点的电平状态(高或低)及脉冲信号的有无逻辑分析仪:获取通道的逻辑信号第8章:常用数据类型 位/bit 字节数/byte 值的范围bit 1 0,1signed char 8 1 -128+127unsigned char 8 1 0255signed int 16 2 -32768+32767unsigned int 16 2 065535float 32 4 。sbit 1 0或1sfr 8 1 0255前五个要记住其中sbi

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1