您好,欢迎访问三七文档
第1章绪论一、什么是单片机从外形上看:双列直插式封装、贴片式封装从内部上看:结构图又称微控制器(MicrocontrollerUnit,MCU)或称嵌入式控制器(EmbeddedController)在一块半导体硅片上集成了微处理器(CPU)、存储器、各种I/O接口,具有计算机的属性,称为单片微型计算机(简称单片机)。从类型上看:通用型单片机专用型单片机P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST/VPD9RXDP3.010TXDP3.111INT0P3.212INT1P3.313T0P3.414T1P3.515WRP3.616RDP3.717XTAL218XTAL119VSS20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/PROG30EA/VPP31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC408031805187512.1单片机的外特性一、电源:2个Vcc(40)Vss(20)二、时钟:2个XTAL1(19)XTAL2(18)三、输入输出(I/O):32个P0:8个P1:8个P2:8个P3:8个四、控制信号:4个RST/VPDALE/PROGPSENEA/VppXTAL1XTAL2MCS-51C1C2CYSXTAL2XTAL1MCS-51+5VVSS外部时钟源图1内部振荡方式图2外部振荡方式二、时钟电路引脚XTAL1(19)XTAL2(18)1、两种方式说明:频率越高,工作速度就越快,但功耗就要增加,其产生的高次谐波也会对系统内部的模拟电路(如ADC)产生严重的干扰。1.振荡周期:为单片机提供时钟信号的振荡源的周期。2.状态周期:是振荡源信号经二分频后形成的时钟脉冲信号。3.机器周期:通常将完成一个基本操作所需的时间称为机器周期。6个状态周期4.指令周期:是指CPU执行一条指令所需要的时间。一个指令周期通常含有1~4个机器周期。思考:若MCS-51单片机外接晶振为12MHz时,则单片机的机器周期为多少?+5V实例1:用8051最小系统点亮发光二极管LED+5V+5V+5VP1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST/VPD9RXDP3.010TXDP3.111INT0P3.212INT1P3.313T0P3.414T1P3.515WRP3.616RDP3.717XTAL218XTAL119VSS20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/PROG30EA/VPP31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40803180518751+5VORG0000HD1:JBP1.6,LOOPCLRP1.3SJMPLOOP1LOOP:SETBP1.0LOOP1:SJMPD1END1、程序存储器(1)作用:存储应用程序的机器码、表格常数(2)如何选择片内片外的程序存储器?(3)系统保留ROM地址(特殊存储单元)0000H:启动地址0003H:外部中断0的中断服务入口地址000BH:定时/计数器0溢出中断入口地址0013H:外部中断1的中断服务入口地址001BH:定时/计数器1溢出中断入口地址0023H:串行口中断服务程序入口地址2、数据存储器(1)作用:存放运算的中间结果、数据暂存、缓冲(2)片外数据存储器:64K(3)片内数据存储器:地址范围:低128字节00H—7FH高128字节80H—FFH特殊功能寄存器通用RAM位寻址区00H1FH20H2FH30H7FH80HFFH外部RAM(I/O口地址)0000HFFFFH内部数据存储器(a)外部数据存储器(b)工作寄存器区返回CYACF0RS1RS0OV/PD0HPSW.0PSW.1PSW.2PSW.4PSW.6PSW.7PSW.5PSW.3CY:进借位标志;AC:辅助进借位标志;F0:用户标志;RS1、RS0:工作寄存器组选择;OV:溢出位;P:奇偶位。RS1RS0选择工作寄存器组000组(00H~07H)011组(08H~0FH)102组(10H~17H)113组(18H~1FH)工作寄存器组选择控制表③特殊功能寄存器SFR三、比较不相等转移指令CJNEA,#data,relCJNEA,direct,relCJNE@Ri,#data,relCJNERn,#data,rel该类指令具有比较和判断双重功能,比较的本质是做减法运算,用第一操作数内容减去第二操作数内容,但差值不回存。两个操作数的内容不变。若(第一操作数)=(第二操作数),则程序继续执行,(PC)←(PC)+3若(第一操作数)(第二操作数),则程序转移,(PC)←(PC)+rel+3,Cy←0若(第一操作数)(第二操作数),则程序转移,(PC)←(PC)+rel+3,Cy←1自然优先级矢量地址自然优先级矢量地址高级中断请求PCPC断请求低级中SCON中断标志IPPX01PT0110PX110PS100PT10IEEX0ET0EX1ET1ESTCONIE0TF0IE1TF1TIRIRXTXT11INT10T0INT010源允许总允许优先级硬件查询EA5.2MCS-51的中断系统MCS-51提供了5个中断源,2个中断优先级控制,可实现2级中断服务嵌套。可通过程序设置中断的允许或屏蔽,设置中断的优先级。P3.0P3.1P3.5P3.4P3.2P3.3IT0IT1一、内部结构图TF1TR1TF0TR0IE1IT1IE0IT088HTCON:定时器/计数器控制寄存器SCON:串行口控制寄存器EA--ESET1EX1ET0EX098HIE:中断允许寄存器SM0SM1SM2RENTB8RB8TIRIA8HIP:中断优先级寄存器---PSPT1PX1PT0PX0B8HMCS-51单片机设置了4个专用寄存器用于中断控制,用户通过设置其状态来管理中断系统。二、处理外部中断举例例1:要求每次按动按键,使外接发光二极管LED改变一次亮灭状态。解:INT0输入按键信号,P1.0输出改变LED状态。1.跳变触发:每次跳变引起一次中断请求。ORG0000H;复位入口AJMPMAINORG0003H;中断入口AJMPPINT0ORG0100H;主程序MAIN:MOVSP,#40H;设栈底SETBIT0;负跳变触发中断SETBEX0;开INT0中断SETBEA;开总允许开关H:SJMPH;执行其它任务ORG0200H;中断服务程序PINT0:CPLP1.0;改变LEDRETI;返回主程序单片机INT0P1.01+5V(1)软件等待按键释放。(2)硬件清除中断信号。2、电平触发:单片机INT0P1.01+5VORG0000H;复位入口AJMPMAINORG0003H;中断入口AJMPPINT0ORG0100H;主程序MAIN:MOVSP,#40H;设栈底CLRIT0;低电平触发中断SETBEX0;开INT0中断SETBEA;开总允许开关H:SJMPH;执行其它任务ORG0200H;中断服务程序PINT0:CPLP1.0;改变LEDWAIT:JNBP3.2,WAIT;等按键释放RETI;返回主程序例2:通过外部中断控制八盏灯循环点亮。解:通过P1口扩展八盏灯,在/INT1引脚接一个按钮开关到地,每按一下按钮就申请一次中断,点亮一盏灯,中断服务则是:依次点亮八盏灯中的一盏。采用边沿触发。程序如下:ORG0000HLJMPMAINORG0013H;中断服务程序入口地址LJMPIN11MAIN:SETBEA;开总中断允许“开关”SETBEX1;开分中断允许“开关”CLRPX1;低优先级(也可不要此句)SETBIT1;边沿触发MOVA,#01H;给累加器A赋初值SJMP$;原地等待中断申请IN11:RLA;左环移一次MOVP1,A;输出到P1口RETI;中断返回ENDTF1TR1TF0TR0IE1IT1IE0IT01、TCON定时器/计数器控制寄存器88HTF0/TF1:T0/T1溢出标志位。可用于申请中断或供CPU查询。在进入中断服务程序时会自动清零;但在查询方式时必须软件清零。定时或计数时间到,可以采用查询或中断方式处理;=1:计数溢出;=0:计数未满。TR0/TR1:T0/1启停控制位。=1:启动计数;=0:停止计数。IE0/IE1和IT0/IT1:用于管理外部中断。二、4个SFRGATEC/TM1M0GATEC/TM1M02、TMOD:定时器/计数器工作方式控制寄存器89H0:INT0对启动T0没有影响,由TR0启动;GATE:门控位1:启动T0由INT0、TR0共同启动。M1M0:工作方式选择位。00:13位定时器/计数器;01:16位定时器/计数器(常用);10:可自动重装的8位定时器/计数器(常用);11:T0分为2个8位定时器/计数器;仅适用于T0。C/T:定时方式/计数方式选择位。1:计数器工作方式,对T0/T1引脚外部事件的负脉冲计数;0:选择定时器工作方式,对机器周期脉冲计数定时。例1:利用定时器产生周期为2ms的方波,fosc=6MHZ使用T0/T1的步骤:1、确定选择T0/T12、确定工作模式3、确定工作方式4、计算初值5、编写主程序中断入口处理定时器/计数器初始化6、编写中断服务程序(1)方式0:Tmax=213×1s=8.192ms(2)方式1:Tmax=216×1s=65.536ms(3)方式2、3:Tmax=28×1s=0.256ms定时选择T0T=(MTC)×T01ms=(216-TC)×2sTC=65036=0FE0CH一、方式1的应用ORG0000HAJMPMAINORG000BHAJMPTT0ORG0100HMAIN:MOVSP,#40HMOVTMOD,#01HMOVTL0,#0CHMOVTH0,#0FEHSETBTR0SETBET0SETBEALOOP:SJMPLOOPORG0200HTT0:CPLP1.0MOVTL0,#0CHMOVTH0,#0FEHRETIEND思考题:1、实现本题功能T0是否需要停止?2、中断服务程序为什么要给T0重新赋初值?不赋初值会出现什么现象?讨论题:定时精度可能会受什么因素影响?方案1:采用中断方法方案2:采用查询方法ORG0000HMOVTMOD,#01HLOOP:MOVTH0,#0FEHMOVTL0,#0CHSETBTR0LOOP1:JNBTF0,LOOP1CLRTR0CPLP1.0SJMPLOOP讨论题:比较两个方案的优缺点查询方法:程序简单;但CPU必须不断查询TF0标志;CPU效率低。中断方法:程序复杂;能提高CPU效率。128345610111213数据输出移位脉冲RXDTXD805174LS164D7D6D5D4D3D2D1D03、方式0的应用:扩展并行输入输出口CB:MOVR7,#0AHMOVR0,#50HMOVSCON,#00HSEND1:MOVA,@R0MOVSBUF,AWAIT:JNBTI,WAITCLRTIINCR0DJNZR7,SEND1例:将以50H为首地址的10个单元中数据由串口送出。92654314131211数据输入移位脉冲RXDTXD805174LS165D7D6D5D4D3D2D1D0CB:MOVR7,#05HMOVR0,#30HRE1:MOVSCON,#10HWAIT:JNBRI,WAITCLRRIMOVA,SBUFMOV@R0,AINCR0DJNZR7,RE1例:从扩展口读入5个数据,存到内部RAM以30H开始的单元中。例:T0引脚发生负跳变时,从p1.0引脚输出1个周期为1ms的方波T0500us500usP1.0分析:(1)工作方式选择T0为方式2计数,初值0FFH.T1为方式2定时,初值(28-X)×2us=500usX=06H(2)中断服
本文标题:单片机总结
链接地址:https://www.777doc.com/doc-5674127 .html