您好,欢迎访问三七文档
第三章96系列单片机简介及应用实例主要内容§3.1硬件结构§3.2MCS-96指令系统§3.380C196KB单片机应用实例目的:通过一种单片机的设计实例,掌握智能仪器仪表中CPU设计的一般方法。§3.1硬件结构主要内容3.1.1内部定时3.1.2存储空间3.1.3芯片配置寄存器CCR3.1.4状态和控制寄存器3.1.5中断结构(√)——重点3.1.6定时器3.1.7高速输入单元(√)3.1.8高速输出单元(√)3.1.9模拟接口3.1.10串行口(√)3.1.11监视定时器3.1.12复位和掉电保护3.1.1内部定时内部定时(续)8098为3分频结构,即每3个时钟周期为1个状态周期,在12M的晶振下:1个状态周期=3个时钟周期=1/12000000*3s=1/4μs(8T)80C196为2分频结构:1个状态周期=2个时钟周期=1/12000000*2s=1/6μs3.1.2存储空间寄存器组合空间(√)专用寄存器空间掉电保护空间ROM空间的寻址存储空间READWRITE00H01H02H03H04H05H06H07H08H09H0AH0BH0CH0DH0EH0FH10H11H12H13H14H15H16H17H18H19HR0(LO)R0(HI)AD_CMDHSI_MODHSO_TIM(L)HSO_TIM(H)HSO_CMDSBUF(TX)INT_MASKINT_PENWATCHDOGR0(LO)R0(HI)AD_RES(L)AD_RES(H)HSI_TIM(L)HSI_TIM(H)HSI_STASBUF(RX)INT_MASKINT_PENTIMER1(L)TIMER1(H)TIMER2(L)TIMER2(H)PORT0PORT2SP_STATRESERVEDIOS0IOS1STACKPSTACKPPWM_CONIOC1IOC0RESERVEDSP_CONPORT2RESERVEDBAUD_RARESERVEDRESERVEDRAMPROTECTPOWDERDOWNRAM0EFH1AH0F0H0FFH0000H00FFH0100H1FFDH1FFEH1FFFH2000H2011H2012H-2017H2018H2019H201AH-201BH201CH-201FH2020H-202FH2030H-207FH2080HFFFFHINEROROUTERRESERVEDCODERESERVEDJUMPSELFRESERVEDCCRRESERVEDINTERUPTVECTORPORT4PORT3OUTERMEMI/OINNERRAMROMRAMI/Oetc.图3.3存储空间图3.1.3芯片配置寄存器CCRCCR的内容由用户预先写入018H单元(芯片配置字节),系统复位时,该芯片配置字节被自动送入CCR寄存器。(8位总线时一般为0BDH)3.1.4状态和控制寄存器8098有两个I/O控制寄存器IOC0和IOC1IOC0控制定时器2和高速输入线。IOC1控制某些引脚功能、中断源和两个HSO引脚。控制寄存器HSI.0输入/分断定时器2复位,写1使之复位HSI.1输入/分断定时器2外部复位允许/禁止HSI.2输入/分断定时器2复位源HSI.0/T2RSTHSI.3输入/分断定时器2时钟源HSI.1/T2CLK01234567图3.5I/0控制寄存器0PWM/P2.5选择ACH7/EXTINT选择定时器1溢出中断允许/禁止定时器2溢出中断允许/禁止HSO.4输出允许/禁止TXD/P2.0选择HSO.5输出允许/禁止HIS中断源选择FIFO满/保持寄存器已有数据01234567图3.6I/0控制寄存器1状态寄存器HSO.0现行状态01234567图3.7I/0状态寄存器0HSO.1现行状态HSO.2现行状态HSO.3现行状态HSO.4现行状态HSO.5现行状态CAM或保持寄存器满HSO保持寄存器满软件定时器0到时软件定时器1到时软件定时器2到时软件定时器3到时定时器2溢出定时器1溢出HSIFIFO已满HSI保持寄存器数据可用01234567图3.8I/0状态寄存器13.1.5中断结构(详细)中断源中断向量地址优先级别软件2011H2010H用户不可用外部中断200FH200EH7(最高)串行口200DH200CH6软件定时器200BH200AH5HS1.02009H2008H4高速输出2007H2006H3HSI数据2005H2004H2A/D转换完成2003H2002H1定时器溢出2001H2000H0(最低)设置中断向量;设置HSI,TIME,SPCON的中断向量ORG2000HDCWTYCINT;T1溢出中断ORG2004HDCWHSIINT;HSIINT---高速输入中断ORG200AHDCWTIMEINT;TIMEINT---软件定时中断3.1.6定时器系统中有两个16位定时器,定时器1和定时器2。定时器1作为实时时钟用来同步其他事件。它自由运行,每8个状态周期加1。(定时器+1时间为8T=?)该计数器在任何时刻均可读出,但一般不可改写,且除芯片复位之外也没有其他手段使其停止计数并恢复为0。定时器(续)定时器1产生高速输入单元HSI和高速输出单元HSO的基准时间。定时器溢出时可用来产生中断,溢出间隔时间(在12M晶振下):0FFFFH*8*T=65535*8*1/4≈131ms(三分频系列,如8098)0FFFFH*8*T=65535*8*1/6≈87ms(二分频系列,如80C196)T1溢出中断服务子程序TYCINT:PUSHF…POPFRET3.1.7高速输入单元HSI运行方式HSI状态寄存器(HSI_STATUS)HSI的控制和操作(√)(详细)高速输入概述高速输入单元HSI可用定时器1作实时时钟来记录外部事件发生的时间。“高速”表示事件的获取无需CPU的干预。该单元有四条高速输入线(HSI.0-3),其中HSI.2-3为双向引线,和HSO.4-5共用同一引脚。由IOC0和IOC1确定。一.HSI运行方式HSI_MODEHSI.0方式选择位01234567图3.9HSI_MODE寄存器HSI.1方式选择位HSI.2方式选择位HSI.3方式选择位方式选择位事件定义008个正跳变为一个事件01每个正跳变为一个事件10每个负跳变为一个事件11每个跳变(正和负)均为事件二.HSI状态寄存器HSI_STATUS)各位的定义同图3.9其中低位表示本引脚上是否有事件发生;高位表示本引脚的现行状态。三.HSI的控制和操作有关控制见HSI_MODE、IOC0、IOC1、INT_MASK、INT_PENDING以及中断向量。中断发生后:先读HSI的状态,后读其中断时间。(两者均得读,且顺序读)HSIINT子程序(记录脉冲)HSIINT:PUSHFLDBHSIBJ,HSISTAJBSHSIBJ,0,HI0;判断是否0口中断JBSHSIBJ,2,HI1;判断是否1口中断JBSHSIBJ,4,HI2;2JBSHSIBJ,6,HI3;3SJMPHSIFHHI0:STHSITIM,HI0T;读时间到HI0T中…POPFRET3.1.8高速输出单元HSO输出控制LDBHSO_COMMAND,#WHAT_TO_DOADDHSO_TIME,TIMER1,#WHEN_TO_DO_IT高速输出单元(续)通道:0-5HSO.0-5相应各位6HSO.0-1两位同时7HSO.2-3两位同时8-B软件定时器0-3E定时器2复位F启动A/D转换中断/无中断置位/清0定时器2/1×01234567图3.10HSO命令格式软件定时1ms中断服务子程序TIMEINT:PUSHFDILDBHSOCOM,#38H;重设TIMEINTADDHSOTIM,TIMER1,#TIJG;12M=#7506M=#375EIINCZDCS;中断次数加1POPFRET3.1.9模拟接口模拟输入AD_COMMANDAD_RESULT脉冲宽度调制输出(PWM)数/模转换可以通过脉冲宽度PWM输出来实现,PWM输出波形是一个重复周期为256个状态周期,而占空比可变,占空比的变化通过向PWM寄存器写入新值来实现。对此波形进行积分,那么,即可得到一个DC电平,通过改变占空比,可使该电平分256个阶梯变化。AD变换子程序ADBH:LDBTDHAO,ACHTDH;TDHAO标记ACHTDHORBTDHAO,#00001000BLDBADCOM,TDHAO;立即启动AD变换NOPNOPNOPADDD1:LDBBL,ADL;等待AD变换的完成JBSBL,3,ADDD1LDBBL,ADLLDBBH,ADHSHRBX,#6ADDADLJD,BX;累计A/D变换值ADDCADLJG,#0INCADBHCS;A/D变换次数+1RET3.1.10串行口方式0:同步方式,通常用在以移位寄存器为基础的I/O扩展方面方式1:标准异步通讯方式。串行口(续)方式2和方式3:用于多机通讯串行口(续)串行口的控制串行口波特率设置1.98:方式0=方式1、2、3=因为波特率寄存器的最高位用于对内部时钟源的选择,当用XTAL1时,固定为“1”XTALBB1410();XTALB1641()BAUDRATE方式0方式1、2、312M6M96008137H8013H8009H48008270H8026H8000H+192.96系列单片机的波特率设置方式0=方式1、2、3=XTALBB1210();XTALB1161()BAUDRATE6M8M10M12M960038516477480077103129155基于串行口的多机通讯串行口方式2和方式3是提供给多机通讯用的。在方式2下若所接收到的第9位数据非1,则不会发生串行口中断,而方式3则均会中断。在多机系统中,当主机欲向某从机发送数据时,它首先发出一帧地址以确定目的从机。地址帧和数据帧的不同点在于,前者之第9位数据位为1,后者之该位为0。在方式2下,数据帧不会引起任何从机中断。然而,地址帧却将在所有从机中激发中断。这样,各从机便在各自的中断服务程序中检查所收到的字节是否等于自己的地址。相等者即为被呼叫的从机,于是它便切换到方式3下运行,以接收此后主机发来的数据;并回送主机数据后恢复到方式2下等待。未被呼叫的多个从机则仍留在方式2下继续自己的作业。主机12n通讯举例:主机和2号从机进行数据交换1、主机和全部从机工作于方式2;2、主机以第9位为1发送地址码2;3、全部从机接收中断,2号判定被呼叫转入方式3;其它从机仍然工作与方式2;4、主机发送数据,DB9=0,2号中断接收;5、2号反送主机数据,主机接收;6、主机和2号从机再转入方式2待命。串口中断服务程序SERINT:PUSHFRDAGA:LDBSPTEMP,SPSTATORBTEMP,SPTEMPANDBSPTEMP,#60HJNERDAGAJBSTEMP,5,TRANSJBSTEMP,6,GETSJMPSEROUT…3.1.11监视定时器在12M晶振下:98:WATCHDOG溢出时间为:16ms96:WATCHDOG溢出时间为:10.67ms监视定时器的驱动:(连续写入)DILDBWATCHD,#1EHLDBWATCHD,#0E1HEI3.1.12复位和掉电保护在电源处于正常范围且振荡器稳定后,RESET引脚上至少保持两个状态周期的低电平就可使系统复位。RESET引脚电压升高后,系统将执行10个状态周期的内部复位序列。在此期间,芯片配置字节CCR被从2018H单元读出并进而写入芯片CCR寄存器。上电复位可用电容、单稳或其他方法实现,条件是它们能够提供一个宽度要比Vcc和振荡器稳定下来所需的时间至少长两个状态周期的负脉冲。对于9
本文标题:96系列单片机简介
链接地址:https://www.777doc.com/doc-2893965 .html