第三章基于单片机的智能仪器仪表的设计原理_第1页
第三章基于单片机的智能仪器仪表的设计原理_第2页
第三章基于单片机的智能仪器仪表的设计原理_第3页
第三章基于单片机的智能仪器仪表的设计原理_第4页
第三章基于单片机的智能仪器仪表的设计原理_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 96系列单片机简介及应用实例z 主要内容y 3.1 硬件结构y 3.2 MCS-96指令系统y 3.3 80C196KB单片机应用实例x 目的:通过一种单片机的设计实例,掌握智能仪器仪表中CPU设计的一般方法。3.1 硬件结构z 主要内容主要内容y 3.1.1 内部定时y 3.1.2 存储空间y 3.1.3 芯片配置寄存器CCRy 3.1.4 状态和控制寄存器y 3.1.5 中断结构 ()重点y 3.1.6 定时器y 3.1.7 高速输入单元 ()y 3.1.8 高速输出单元 ()y 3.1.9 模拟接口y 3.1.10 串行口 ()y 3.1.11 监视定时器y 3.1.12 复位和

2、掉电保护z 内部定时(续)z 8098为3分频结构,即每3个时钟周期为1个状态周期,在12M的晶振下:y 1个状态周期=3个时钟周期=1/12000000*3s=1/4s (8T)z80C196为2分频结构:y 1个状态周期=2个时钟周期=1/12000000*2s=1/6sz 寄存器组合空间 ()z 专用寄存器空间z 掉电保护空间z ROM空间的寻址存储空间READW RITE00H01H02H03H04H05H06H07H08H09H0AH0BH0CH0DH0EH0FH10H11H12H13H14H15H16H17H18H19HR0(LO )R0(HI)AD_CMDHSI_MO DHSO

3、_TIM(L)HSO _TIM(H)HSO _CMDSBUF(TX)INT_MASKINT_PENW ATCHDO GR0(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)PO RT0PO RT2SP_STATRESERVEDIO S0IO S1 STACKPSTACKPPW M_CO NIO C1IO C0RESERVEDSP_CO NPO RT2RESERVEDBAUD_RARESERVEDRESERVEDRAM

4、PRO TECT PO W DERDO W N RAM0EFH1AH0F0H0FFH0000H00FFH0100H1FFDH1FFEH1FFFH2000H2011H2012H-2017H2018H2019H201AH-201BH201CH-201FH2020H-202FH2030H-207FH2080HFFFFHINER O R O UTERRESERVEDCO DERESERVEDJUMP SELFRESERVEDCCRRESERVEDINTERUPT VECTO RPO RT4PO RT3O UTER MEM I/OINNER RAMRO M RAM I/O etc.图 3.3 存 储 空

5、 间 图CCRz CCR的内容由用户预先写入018H单元(芯片配置字节),系统复位时,该芯片配置字节被自动送入CCR寄存器。(8位总线时一般为0BDH)z 8098有两个I/O控制寄存器IOC0和IOC1y IOC0控制定时器2和高速输入线。y IOC1控制某些引脚功能、中断源和两个HSO引脚。控制寄存器HSI.0输入/分断定时器2复位,写1使之复位HSI.1输入/分断定时器2外部复位允许/禁止HSI.2输入/分断定时器2复位源HSI.0/T2RSTHSI.3输入/分断定时器2时钟源HSI.1/T2CLK01234567图3.5 I/0控制寄存器0PWM/P2.5选择ACH7/EXTINT选择

6、定时器1溢出中断允许/禁止定时器2溢出中断允许/禁止HSO.4输出允许/禁止TXD/P2.0选择HSO.5输出允许/禁止HIS中断源选择FIFO 满/保持寄存器已有数据01234567图3.6 I/0控制寄存器1状态寄存器HSO.0 现行状态01234567图 3.7 I/0 状态寄存器 0HSO.1 现行状态HSO.2 现行状态HSO.3 现行状态HSO.4 现行状态HSO.5 现行状态CAM 或保持寄存器满HSO 保持寄存器满软件定时器 0 到时软件定时器 1 到时软件定时器 2 到时软件定时器 3 到时定时器 2 溢出定时器 1 溢出HSI FIFO 已满HSI 保持寄存器数据可用012

7、34567图 3.8 I/0 状态寄存器 13.1.5中断结构 (详细)z 中断源中断向量地址优先级别软件2011H 2010H用户不可用外部中断200FH 200EH7(最高)串行口200DH 200CH6软件定时器200BH 200AH5HS1.02009H 2008H4高速输出2007H 2006H3HSI 数据2005H 2004H2A/D 转换完成2003H 2002H1定时器溢出2001H 2000H0(最低)设置中断向量z ;设置HSI,TIME,SPCON 的中断向量zORG2000HzDCWTYCINT ;T1溢出中断zORG2004HzDCWHSIINT ;HSIINT-高

8、速输入中断zORG200AHzDCWTIMEINT ;TIMEINT-软件定时中断z 系统中有两个16位定时器,定时器1和定时器2。定时器1作为实时时钟用来同步其他事件。它自由运行,每8个状态周期加1。(定时器+1时间为8T=?)z 该计数器在任何时刻均可读出,但一般不可改写,且除芯片复位之外也没有其他手段使其停止计数并恢复为0。定时器(续)z 定时器1产生高速输入单元HSI和高速输出单元HSO的基准时间。z 定时器溢出时可用来产生中断,溢出间隔时间(在12M晶振下):y 0 F F F F H * 8 * T = 6 5 5 3 5 * 8 * 1 / 4 1 3 1 m s (三分频系列,

9、如8098)y 0 F F F F H * 8 * T = 6 5 5 3 5 * 8 * 1 / 6 8 7 m s (二分频系列,如80C196)T1溢出中断服务子程序z TYCINT:PUSHFzz POPFz RETz HSI运行方式z HSI状态寄存器(HSI_STATUS)z HSI的控制和操作 ()z (详细)高速输入概述z 高速输入单元HSI可用定时器1作实时时钟来记录外部事件发生的时间。“高速”表示事件的获取无需CPU的干预。z 该单元有四条高速输入线(HSI.0-3),其中为双向引线,和共用同一引脚。由IOC0和IOC1确定。 一一 HSIHSI运行方式运行方式HSI_MO

10、DEHSI_MODEz HSI.0方式选择位01234567图3.9 HSI_MODE寄存器HSI.1方式选择位HSI.2方式选择位HSI.3方式选择位z方式选择位 事件定义z 008个正跳变为一个事件z 01 每个正跳变为一个事件z 10每个负跳变为一个事件z 11每个跳变(正和负)均为事件 二二HSIHSI状态寄存器状态寄存器HSI_STATUSHSI_STATUS)zy 其中低位表示本引脚上是否有事件发生;y 高位表示本引脚的现行状态。三三HSIHSI的控制和操作的控制和操作z 有关控制见HSI_MODE、IOC0、IOC1、INT_MASK、INT_PENDING以及中断向量。z 中断

11、发生后:先读HSI的状态,后读其中断时间。(两者均得读,且顺序读)HSIINT 子程序(记录脉冲)z HSIINT: PUSHFzLDBHSIBJ,HSISTAzJBSHSIBJ,0,HI0 ;判断是否0口中断zJBSHSIBJ,2,HI1 ;判断是否1口中断zJBSHSIBJ,4,HI2 ;2zJBSHSIBJ,6,HI3 ;3zSJMPHSIFHz HI0:STHSITIM ,HI0T ;读时间到HI0T中z z POPFz RETz HSO输出控制y LDB HSO_COMMAND, #WHAT_TO_DOy ADD HSO_TIME,TIMER1, #WHEN_TO_DO_IT高速输出

12、单元(续)通 道 : 0-5 HSO.0-5 相 应 各 位 6 HSO.0-1 两 位 同 时 7 HSO.2-3 两 位 同 时 8-B 软 件 定 时 器 0-3 E 定 时 器 2 复 位 F 启 动 A/D 转 换中 断 /无 中 断置 位 /清 0定 时 器 2/101234567图 3.10 HSO 命 令 格 式软件定时1ms中断服务子程序z TIMEINT:PUSHFzDIzLDBHSOCOM ,#38H ;重设TIMEINTzADDHSOTIM ,TIMER1 ,#TIJG ;12M=#750 6M=#375zEIzINCZDCS ;中断次数加1zPOPFzRETz 模拟输

13、入z AD_COMMANDz z AD_RESULT脉冲宽度调制输出(PWM)z 数/模转换可以通过脉冲宽度PWM输出来实现,PWM输出波形是一个重复周期为256个状态周期,而占空比可变,占空比的变化通过向PWM寄存器写入新值来实现。对此波形进行积分,那么,即可得到一个DC电平,通过改变占空比,可使该电平分256个阶梯变化。AD变换子程序zADBH:ADBH:LDBLDBTDHAO,ACHTDHTDHAO,ACHTDH;TDHAO;TDHAO标记标记ACHTDHACHTDHzORBORBTDHAO,#00001000BTDHAO,#00001000BzLDBLDBADCOM,TDHAOADCO

14、M,TDHAO; ;立即启动立即启动ADAD变换变换zNOPNOPzNOPNOPzNOPNOPzADDD1:ADDD1:LDBLDBBL,ADLBL,ADL; ;等待等待ADAD变换的完成变换的完成zJBSJBSBL,3,ADDD1BL,3,ADDD1zLDBLDBBL,ADLBL,ADLzLDBLDBBH,ADHBH,ADHzSHRSHRBX,#6BX,#6zADDADDADLJD,BXADLJD,BX ; ;累计累计A/DA/D变换值变换值zADDCADDCADLJG,#0ADLJG,#0zINCINCADBHCSADBHCS ;A/D;A/D变换次数变换次数+1+1zRETRETz 方式

15、0:同步方式,通常用在以移位寄存器为基础的I/O扩展方面z 方式1:标准异步通讯方式。串行口(续)z 方式2和方式3:用于多机通讯串行口(续)z 串行口的控制串行口波特率设置串行口波特率设置 z 1. 98:方式0= y z 方式1、2、3=yy z 因为波特率寄存器的最高位用于对内部时钟源的选择 ,当用XTAL1时,固定为“1”XTALBB1410();XTALB1641()BAUDRATE方式0方式1、2、312M6M96008137H8013H8009H48008270H8026H8000H+19 2. 96系列单片机的波特率设置z z方式0=z 方式1、2、3=X T A LBB121

16、0();X T A LB11 61()BAUDRATE6M8M10M12M960038516477480077103129155基于串行口的多机通讯基于串行口的多机通讯z串行口方式2和方式3是提供给多机通讯用的。在方式2下若所接收到的第9位数据非1,则不会发生串行口中断,而方式3则均会中断。在多机系统中,当主机欲向某从机发送数据时,它首先发出一帧地址以确定目的从机。地址帧和数据帧的不同点在于,前者之第9位数据位为1,后者之该位为0。z在方式2下,数据帧不会引起任何从机中断。然而,地址帧却将在所有从机中激发中断。这样,各从机便在各自的中断服务程序中检查所收到的字节是否等于自己的地址。相等者即为被

17、呼叫的从机,于是它便切换到方式3下运行,以接收此后主机发来的数据;并回送主机数据后恢复到方式2下等待。未被呼叫的多个从机则仍留在方式2下继续自己的作业。主机12nz 通讯举例:主机和2号从机进行数据交换z 1、主机和全部从机工作于方式2;z 2、主机以第9位为1发送地址码2;z 3、全部从机接收中断,2号判定被呼叫转入方式3;其它从机仍然工作与方式2;z 4、主机发送数据,DB9=0,2号中断接收;z 5、2号反送主机数据,主机接收;z 6、主机和2号从机再转入方式2待命。串口中断服务程序z SERINT: PUSHFSERINT: PUSHFz RDAGA:RDAGA:LDBLDBSPTEM

18、P,SPSTATSPTEMP,SPSTATzORBORBTEMP,SPTEMPTEMP,SPTEMPzANDBANDBSPTEMP,#60HSPTEMP,#60HzJNEJNERDAGARDAGAzJBSJBSTEMP,5,TRANSTEMP,5,TRANSzJBSJBSTEMP,6,GETTEMP,6,GETzSJMPSJMPSEROUTSEROUTz z 在12M晶振下:y 98:WATCHDOG溢出时间为:16msy 96:WATCHDOGmsz 监视定时器的驱动:(连续写入)y DIy LDB WATCHD,#1EHy LDB WATCHD,#0E1Hy EIz在电源处于正常范围且振荡

19、器稳定后,RESET引脚上至少保持两个状态周期的低电平就可使系统复位。zRESET引脚电压升高后,系统将执行10个状态周期的内部复位序列。在此期间,芯片配置字节CCR被从2018H单元读出并进而写入芯片CCR寄存器。z上电复位可用电容、单稳或其他方法实现,条件是它们能够提供一个宽度要比Vcc和振荡器稳定下来所需的时间至少长两个状态周期的负脉冲。对于96系列单片机,复位电平是低电平有效。 3.2 MCS-96指令系统z 主要内容z3.2.1操作数类型 ()z3.2.2操作数的寻址 ()zPSWz指令系统z 字节型(BYTE)z 字型(WORD)z 短整数型(SHORT_INTEGER)z 整数型

20、(INTEGER)z 位型(BIT)z 双字型(DOUBLE_WORD)z 长整数型(LONG_INTEGER)3.2.2 操作数的寻址 (详细)z 寄存器直接寻址 (LD AX,BX)z 间接寻址 (LD AX,BX)z 自动增量间接寻址 (LD AX,BX+)z 立即寻址 (LD AX,#1234)z 短变址寻址 (LD AX,123BX)z 长变址寻址 (LD AX,1234BX)z 栈指针寄存器寻址 (LD AX,2SP)PSWz 位151413121110987 6 5 43 2 1 0标志ZNVVTCIST中断屏蔽寄存器INT_MASK1. Z:0标志,若为1,则表示刚刚进行的操作

21、所得结果为0;z 8098单片机共有100条指令。z 80C196单片机共用112条指令,其中的100条与8098完全相同。专用指令如:CMPL/MOVB/JNZW等都是98所没有的。z (详细)1. 数据传送指令z LD LDB ST STB LDBSE(短整数整数) LDBZE(字节字)y LD AX,BX; LDB AL,BLy ST AX,BX; STB AL,BLy LDBSE LDBZE不常用2. 算术运算指令z ADD ADDB ADDC ADDCB SUB SUBB SUBC SUBCB CMP CMPB MULU MULUB MUL MULB DIVU DIVUB DIV D

22、IVB CMPL(双字比较80C196)y 注意有无符号和操作数类型y MULU(16*16=32) MULUB(8*8=16) 无符号y DIVU(32/16=16 低16=商 高16=余数)y DIVUB(16/8=8 低8=商 高8=余数)y 课堂练习:将1234分解为BCD码BCD变换子程序 BCSD为入口,AX BX为转换的压缩BCD码zBCDBH:CLRAXzCLRBCSGzDIVUBCSD,#1000zORAX,BCSDzSHLAX,#4zLDBCSD,BCSGzCLRBCSGzDIVUBCSD,#100zORAX,BCSDzSHLAX,#4zLDBCSD,BCSGzCLRBCS

23、Gz DIVUBCSD,#10zORAX,BCSDzSHLAX,#4zORAX,BCSGzSTBAL,BLzSTBAL,BHHzSHRBBL,#4zANDBBHH,#00001111BzSTBAH,ALzSHRBAL,#4zANDBAH,#00001111BzPMXYH:RET3. 逻辑操作指令zAND ANDB OR ORB XOR XORBy ANDB AL,#11101111B ;指定位清0y ORB AL,#00010000B ;指定位置1y XORB AL,#00010000B ;指定位取反4. 栈操作指令z PUSH PUSHF POP POPF PUSHA POPA(双字进栈80

24、C196专用)y PUSHFy PUSH AX ;96的堆栈向下生成SP=SP-2y PUSH BX ;若SP原为0F0H,BX压栈后SP=0EEH y y POP BX ;先入后出y POP AX y POPF5. 转移操作指令zLJMP SJMP BR LCALL SCALL RET TRAP(软件中断陷井,用户不用)6. 条件转移指令zJC JNC JNH JE JH JNE JV JNV JGE JLT JVT JNVT JGT JLE JST JNSTy CMPBAL,BLy JNHADDRESS0 ;当AL=BL时跳转7. 位为0或位为1的转移指令zJBS(位为1跳转) JBC(位

25、为0跳转)y JBS AL,0,ADDRESS1 ;当AL的第0位=1时跳转y JBC AL,0,ADDRESS2 ;当AL的第0位=0时跳转8. 循环控制指令zDJNZ DJNZW(一个字的递减,80C196所有)y LDB AL,#8y LOOP1: LDBBL,#0F0Hy LOOP0: NOPy DJNZ BL,LOOP0y DJNZ AL,LOOP19. 单寄存器指令zDEC DECB NEG NEGB INC INCB EXT EXTB(符号扩展) NOT NOTB CLR CLRBy NEG 求补=求反1 例如:-1=11111111By 1=00000001,1求反=11111

26、110B,求反+1=11111111By 再例如DS1820输出的温度值为补码,若收到00000001B则为1,若收到11111111B则为-1。10. 移位指令zSHL SHLB SHLL SHR SHRB SHRL SHRA SHRAB SHRALy 注:SHRA 为带符号右移,移位后左边补1y SHRAL AL(AL=#11000011B);AL结果=#11100001B11. 专用指令zz SETC CLRC CLRVT RST DI EI NOP SKIP NORMLy RST 机器码为0FFH ,软件复位y 数据总线D0D7接上拉排阻,若程序跑飞到无效地址,取回指令为0FFH使系统复位。12. 块移动(80C196所有)zBMOV BMOVIzy BMOV LREG,WREG y 其中LREG为源地址(低16位)指针和目的地址(高16位)指针的组合,WREG为移动的字数y BMOV LREG(高16位=5000H 低16位=4000H),WREG(16位=100)y 上面语句的作用为将以4000H为首地址的100个字的数块移到以5000H为首地址的存储器中中13. 伪指令z REG:定义寄存器地址z OR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论