《单片机期末复习2.docx》由会员分享,可在线阅读,更多相关《单片机期末复习2.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、弟l早:l:什么是单片机:单片机由三大组成部分(CPU、存储器(RAM,ROM)、I/O接口)和一些实时控制需要 的功能期间集成在一片芯片上。它有三大总线:数据总线、地址总线、控制总线2:ISP: (In System Programming),即在系统编程IAP: (In Application Programming),即在应用编程3:I2C总线:采用俩线制,数据线(SDA)和时钟线(SCL)构成,其有起始信号(S)和终止信 号(P),所有操作在起始信号后有效,在终止信号后无效4:单片机的特点:(I)单片机的存储器ROM和RAM是严格区分的(ROM为程序存储器,只存放程序、固 定常数及数据
2、表格,RAM是数据存储器,用于工作区及存放用户数据)(2)采用面向控制的指令系统(3)单片机的I/O引脚通常是多功能的(4)单片机的外部扩展能力很强5:MCS单片机是Intel公司生产的单片机的总称,MCS-51是Intel的51系列单片机第2章:(H表示16进制,如:1FH,是指31的16进制表示,1FH也可以小写IfH)1: 8051的内部资源:(1)定时器:TO,T1(2)五个中断源:(由高到低)外部中断0、定时器/计数器0中断、外部中断1、定时 器/计数器1中断、串行口中断。(在单片机中定时器和计数器是同一个东西,由TMOD的 C/T位来确定)(3)全双工串行口2:必须要记住的几个引脚
3、:ALE:地址锁存输出端RST:复位,高电平10ms以上才能保证有效复位EA(上面有个横线,不会弄额):片外程序存储器,低电平时,只选用片外程序存储器3:CPU的组成:控制器、运算器4:程序状态字PSW:bit位由高到低(7-0):C:进位标志,最高位有进位时(加法时)或有借位(减法),C=L否则C=0;AC:辅助进位,D3位向D4位有进位(或借位)时为1F0:用户自定义区RS1:RS0:俩者用于选定4个工作寄存器组的某一组,00:工作寄存器。组,01:工作寄存器 1组,10:工作寄存器2组,11:工作寄存器3组,(pg26页的工作寄存器组0、1、2、3)OV:判断运算结果是否溢出,其值为运算
4、结果的最高位(bit7)和次高位(bit6)的异或-:暂留位,没用的,无视它P:奇偶校验位,累加器A中1的个数是奇数,则为15:单片机里的四个周期:振荡周期:振荡脉冲的周期,比如:12MHz的振荡频率,其振荡周期为l/12us存储类型 code data bdata idata pdata xdata与存储空间的对应关系程序存储区(ROM), 64Kb,通过MOVCA+DPTR访问直接寻址片内存储区可位寻址的片内数据存储区16B间接寻址的片内数据存储器,256B分页寻址片外数据存储区,256B通过MOVXRi访问片外数据存储区,64KB,通过MOVXDPTR访问(要记住)存储模式(我不知道这东
5、西。)(1) SMALL模式:默认存储类型data(2) COMPACT模式:默认存储类型pdata(3) LARGE模式:默认存储类型xdata状态周期:2个振荡周期为1个状态周期,也称时钟周期机器周期:一个机器周期包含6个状态周期,12个振荡周期,此时12MHz的振荡频率, 机器周期为lus指令周期:执行一条指令所用时间,以机器周期为单位,单周期指令和双周期指令在 12MHz下指令周期分别为lus和2us,乘除法为4周期(4us) 6:内部RAM (数据存储器)主要分为:工作寄存器(4个,地址为0:00H07H, l:08H0FH, 2:10H17H318H1FH,(由 程序状态字PSW里
6、的RS1和RS0控制工作寄存器组,上面已有描述)、位寻址区(20H2FH, 顾名思义,在控制,读写数据时可以进行位操作,为一个地址有8位,如21H下有08bit位 到OFbit位)、数据缓冲区(30H7FH(堆栈) 7:堆栈的操作:堆栈是按先进后出,后进先出的原则读写,当数据压栈时,先把SP内容加1,再把数 据存放到SP所指向的内容,出栈时:数据弹出后,SP减1.(要理解)(复位后,SP初值为 07H,存放数据时SP加1,在存放数据,也就是说,堆栈实际从08H存放信息) 8:1/0 :P0 n:地址总线的低8位,或普通I/O 口 (I:In O: Out)Pl : 一般 I/O 口P2 :地址
7、总线的高8位,或普通I/O 口,当作为普通I/O 口时,需加上拉电阻P3 口 :特殊功能I/O 口 ,或普通I/O 口附:当输入时,先写力”(我也不是很理解,普通的单片机是直接读取信号的,可能是 我不懂汇编,不知道具体工作原理的原因吧)9:定时器:工作方式由TMOD(timer mode)来决定,高四位决定T1,第四位决定TO,这四位分别 为:GATE (门控位,用于控制定时器/计数器的启动是否由中断引脚INT0/1来控制,这个 考试不必了解,无视吧,知道有这个一个位即可)、C/T(T上有个横线,表示低电平为T, 1:计数器0:定时器)、Ml、M0 (这俩位来决定工作方式)Ml、M0位对工作方
8、式的控制:(初值的计算,重点,通过理解来计算,前俩个重点看) 工作方式。(00) (13位计数器/定时器):定时时间:T = N*Tcy = (8192-x)*Tcy8192=2八13 (THx的高8位和TLx的低5位)x初值的设定Tcy:单片机的机器周期,比如12MHz的晶振,机器周期为lus也就是说工作方式0的定时范围是。8192us初值的计算:先求x,比如要求定时lOOOus (当然,主要讲解的是一个方法,考试 初值定位多少,使用的是工作方式几我也不知道),那(8192-x) *Tcy= 1000(Tcy= 1) 解得x为7192,()(以定时器0为例,也可能只考计算公式T=N*Tcy
9、= (8192-x)*Tcy 吧)工作方式1(01)(16位计数器/定时器)(实际应用中一般使用工作方式1):T=N*Tcy = (65536x)*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位),TL0可作为定时器也可作为计数器1
10、0:串行通信(用于计算机与计算机,上位机与下位机之间的通信):异步串行通信标准:RS-232C波特率的设置:由SCON的SM1和SM0这俩个控制位来设置波特率的工作方式SCON(8位,了解即可):70:SMO SMI SM2 REN TB8 RB8 TI RI由SM0和SM1来控制波特率的方式。3波特率的计算:方式0(00):fosc/12 (fosc是振荡频率,如果还不知道什么是振荡频率,面壁去。)方式 1 (01): (2人(SMOD)*T1 溢出率)/32方式2式0): 2八(SMOD)*fosc/64(SMOD可以取0或1 , 0时:波特率为:fosc/64, 1 时:波特率为:fos
11、c/32)方式3 (11): 3和1 一样附:PCON的bit7位是SMOD, SMOD是波特率系数控制位,SMOD = 1时波特率增大 一倍11:中断:五个中断源:三个内部中断:定时器/计数器T0中断、定时器/计数器T1中断、串行口外部中断INT1、。(在单片机中定时器和计数器是同中断,俩个外部中断:外部中断INTO、 一个东西,由TMOD的C/T位来确定) 中断优先级控制位(应该不考):IP(bit7 bitO)空 -PT2 PSPT1PX1PTOPXOPX:外部中断优先级控制 pt:定时器中断优先级 PS:串口中断优先级 -:没中断允许控制(需要知道)IE(bit7 bitO)EA -E
12、T2 ESET1EX1ETOEXOEA(enable El):中断总控制位ET:定时器/计数器溢出中断允许位ES:串行口中断允许位EX:外部中断允许位 外部中断控制(需要知道):TCON (bit7bitO)TF1 TRI TF0 TR0IE1IT1IEOITOrro(rn):外部中断触发控制位,o:电平触发1:电平跳变触发IE0(IEl):外部中断请求标志位,当有外部中断时,该位会自动置1TFO(TFl):定时器/计数器溢出标志位,当定时器/计数器溢出时,该位自动置1TRO(TRl): 1:打开定时器/计数器0:关闭定时器/计数器12:复位状态:单片机在复位后:(1) :SP的值指向07H
13、(SP用于堆栈的地址的,上面第7点介绍到)(2) :P0P3I/0 口默认电平变为1,即FFH(3):其它的都为013:单片机的低功耗:PCON (bit7bitO)(主要记住最后俩个)SMOD - GF1 GFO PD IDLPD:掉电方式控制位,1:进入掉电方式0:结束掉电方式IDL:空闲方式控制位,1:进入空闲方式0:结束空闲方式附:(SMOD,上面已有介绍,波特率控制位,该位来控制波特率是否加倍,GF1、GF0 无视吧,不常用)弟3早:1:指令一般有功能、时间和空间三种属性。2:寻址方式:主要记住的三种:(1)立即寻址(程序存储器ROM):例MOV A,#30H (30H就是一个立即数
14、,把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:双字节的存储时需要运用到DPTRA和DPTR都是数据传送过程中的“搬运工”(
15、一定要注意,在数据传送中,要有搬运工)MOVX:CPU对片外扩展的数据存储器RAM或I/O 口进行数据传输时,必须采用寄存 器间接寻址,通过累加器A完成。例: 读:MOVXMOVXA, DPTRA, Ri(Ri是指R。R7)写:MOVX DPTR,AMOVX Ri,AMOVC:访问程序存储器(ROM)的数据时,采用的命令采用基址寄存器间接寻址方式, 把程序存储器存放的表格数据中读出,传送到累加器A使用:MOVC A, A+DPTR ;(基址寄存器间接寻址,具体介绍见Pg57的变址寻址) 解释:由A和DPTR相加的值作为地址,将该地址的值存放到累加器A中 下面这个图,可以方便数据传输的理解:Pg
16、93:若要完成以下数据传送,应如何用51单片机的指令来完成(l)R0的内容传送至UR1中代码:MOV A, RO (看!有个逗号,这个不能省!)MOV RI, A理解:(“;为注释,写答案时是不需要写注释的)MOV A, RO ;将R0的值存放到累加器A中MOV RI, A ;将累加器A中的值存放到R1中(2)外部RAM的20H单元内容传送到R0,送内部RAM的20H单元(假设20H中的内容为41H思路:重点是MOVX A,R0的理解,这是以R0中的值为地址,把该地址的值(41H) 存到A中,所以,首先对R0进行赋值,所赋值的内容为该数的地址!,也就是MOVR0,#20H,然后,在MOVX A
17、,R0之后,A中的就是20H单元的内容(41H),然后, 就是把该内容传送到R0中MOVRO, A,传送到内部RAM的20H单元MOV20H, A)只需要写代码部分,”后的注释不需要写,以下都是这样!MOV RO, #20HMOVX A, R0MOV RO,AMOV 20H,A;将立即数20H存到RO中;预备知识中写了,当由工作寄存器到;累加器时用MOVX,;把R0中以20H为地址的内容存放到累加器A中;把把累加器A中的值存到R0中;把累加器A中的值存到20H单元的内容中(3)外部RAM的2000H单元内容送R0,送内部RAM的20H单元,送外部RAM的20H 单元如果该题目无法更好的理解,请
18、把上一题多多理解下!MOVDPTR,#2000H;将立即数送到DPTR中,因为2000H是双字节数, ;单字节就可以直接送到R0中MOVXA,DPTR;将200011送到累加器A中MOVR0,A;将累加器A中的值送到R0中MOV20H,A;将累加器A中的值送到20H中MOVRI,#20;因为要存放到外部RAM中;就要MOVX Ri, A, R0之前已经用了,所以用R1,;要存放到外部RAM的20H中,先对R1进行赋值MOVX R1, A ;传送数据到外部RAM的20H中(4)ROM的2000H单元内容送R0,送内部RAM的20H单元,送外部RAM的20H单MOVDPTR,#2000H;将立即数
19、送到DPTR中,因为2000H是双字节数MOVA,#00H;这个主要解释见Pg57的变址寻址MOVCA,DPTR+A;把以00H+2000H位地址的内容存放到累加器A中MOVR0,A;将A中的值(2000H为地址中的内容)存放到R0中MOV20H,A;将数值传送到内部RAM的20H单元中MOVRI,#20H;因为要存放到外部RAM中;就要MOVX Ri, A, R0之前已经用了,所以用R1;要存放到外部RAM的20H中,先对R1进行赋值MOVX R1, A;传送数据到外部RAM的20H中Pg95:下面的程序段经汇编后,从2000H开始的各有关存储器单元的内容是什么?ORG 2000HTAB:
20、DB 10H,20HDW2100H,23HDW TABDB WORK理解:ORG 2000H是程序运行时需要把程序跳转到一个起始位置,(无视这句)DB:定义字节伪指令ORG 2000HTABI: DB 30H,8AH, DB A 那么,TABI的值为2000H (2000H)= 30H,(2001H)= 8AH (2001H)= 41H,A,的 ASCII 码)所以上题的结果:(2000H) = 10H(2001H) = 20H(2002H) = 21H(2003H) = OOH(2004H) = OOHDW:定义字(双字节)伪指令,先写高字节,再写低字节;因为DW是写双字节,所以23H就要表
21、示为0023H;高字节 00H(2005H) = 23H(2006H) = 20H(2007H) = 00H(2008H) = 57H(2009H) = 4FH(2010H) = 52H(2011H) = 4BHW的 ASCII 码,R,K,下面这题,老师说了肯定考! Orz .外部RAM2000H单元有个8位二进制数,要求转换为8421BCD码,并将百、十、个 位分别存放到内部RAM的20H、21H、22H8 位:(0-256)如 1011 1001百:185/100=1十:85/10 = 8个:5DIV (除法)的使用DIV AB (A -余数:余数:BCD 码为:185855A/B的商
22、B c、d e、f、g、dp) 以数字3为例,需要把a、b、c、d、g五个LED点亮 共阳极:(点亮的部分设置为0)dp gf ed c101100所以连接P0 的数据为OxBO (1011 0000)共阴极:(点亮的部分设置为1)dpgfed c010011所以连接P0 口的数据为0x4F (0100 1111)数码管显示分为动态显示和静态显示,当数码管就一个(指个数比较少)时,使用静态 显示,当个数比较多时,使用动态显示,动态显示是指几个数码管按照一定的顺序依次点亮, 每个点亮n ms,因为视觉暂留,人会认为数码管都是亮的3:AD转换芯片:ADC0809ADC0809的讲解:Pgl97 页
23、:ADC0809 芯片:Pg:282例题(这是他上课具体提出的题目)稍微针对该题题目说一下难点:通道的选择:如图所示,题中说选择通道。也就是说A,B,C均为0芯片的使用:1:先将地址确定2:启动芯片(此时,EOC变0,表示芯片正在运作)3:当EOC (检测繁忙)由。变为1时,表示数据转换结束4:读取数据,先读取的低字节,后是高字节DA 转换 DAC0832分辨率:=模拟量输出的满量程值/2八n比如:满量程为1, 8位的二进制D/A转换器Pg207页例题书上的图错误,将loutO改为loutl, loutl改为loutO操作顺序:1:先把准备要转换的数据2:拉低CS引脚,开始转换Pg287页例题
24、实验书上的三角波实验这几个例题想说些什么,但又不知道说啥好了,还是在自己看吧,自己领悟吧,能理解就理 解,理解不了就算了,或者问我第7章:万用表:略,都懂的逻辑笔:用于测试数字电路中测试点的电平状态(高或低)及脉冲信号的有无逻辑分析仪:获取通道的逻辑信号第8章:常用数据类型位/bit字节数/byte值的范围bit10,1signed char81-128+127unsigned char810-255signed int162-32768+32767unsigned int1620-65535float324O O Osbit1。或1sfr810-255前五个要记住其中sbit和sfr用于特殊的数据定义(了解即可)在单片机中,尽可能使用无符号类型变量,因为它可以被51直接接受 存储类型: