内部恰好集成了一个功能强大的比较器,该比较器的正向输入是单片机的管脚13(RA0/AN0/CIN+), 反向输入为单片机的管脚12(RA1/AN1/CIN-),输出是管脚11(RA2/AN2/COUT)。与此比较器相关的寄存器有CMCON和VRCON,具体功能参见表2。 表2 与比较器模拟相关的关键性寄存器
寄存器位定义 BIT7(未用 BIT6比较器的输出位,该位数值就是比较器的输出寄存器名称 寄存器位功能简介 (COUT) 结果 BIT5(未用) 控制比较器的输出结果是否反向 (CINV) 比较器控制寄存器CMCON 控制输入信号是从RA1(CIN1)还是RA0BIT3(CIS) (CIN+)输入 BIT2(CM2) BIT1 BIT2~BIT0联合控制八种比较器I/O口工作模BIT4(CM1) 式的选择 BIT0(CM0) BIT7 参考电压启动控制位 (VREN) 比较器参考电压控制器VRCON BIT6(未用) 参考电压范围选择控制位 (VREN) BIT5BIT4(未用) BIT3(VR3) BIT2(VR2) BIT3~BIT0联合控制参考电压的具体设置 BIT1(VR1) BIT0(VR0) 如果对比较器的使用要求是:模拟信号由单片机管脚12(连接比较器的负向)输入;参考电压选自片内参考电压(参考电压设定为3V)(连接比较器的正向);比较器的输出结果不反向(即比较器正向输入大于负向输入则比较器输出高电平,反之输出低电平),则此与比较器相关的寄存器CMCON、VRCON设置程序如下:
MOVLW B'00010011' ;选择比较器模式011 MOVWF CMCON
MOVLW B'10101110' ;选择参考电压1110(其十进制是14)14/24×5=3V
MOVWF VRCON
图2是该比较器的电路原理(包括比较器的参考电压形成部分)框图。 3.2 回执输出电路
回执输出电路用于把探测到的代表烟雾浓度的数字信号通过总线回送到控制器。单片机信号一般为5V,总线上的信号大于20V。回执输出电路必须进行电平转换,并使信号有足够的总线驱动能力。
4 探测器的地址读写
火灾报警控制器通过总线上的地址编码来识别各个探测器。以往探测器的编码是依靠机械式拨码开关实现的。由于拨码开关寿命短、易损坏而且成本较高,因此现在多采用串行EEPROM来存储探测器地址。同时,探测器工作过程中的其它重要数据也需要存储保留,所以更有必要使用串行EEP-ROM。而单片机PIC16F676本身恰好内置有128字节的串行EEPROM,因此使用PIC16F676有助于简化电路设计、降低成本。与PIC16F676片内串行EEPROM有关的寄存器主要有EEDAT、EEADR、EECON1、EECON2(EECON2不是一个物理可用的寄存器)。其具体功能见表3所列。
表3 与PIC16F676内置EEPROM相关的寄存器
寄存器名称 EEPROM数据寄存器EEDAT EEPROM地址寄存器EEADR EEPROM控制寄存器寄存器位定义 所有数据位 寄存器位功能简介 用于暂时存储操作的目标数据 用于暂时存储目标数据的地所有数据位(7位) 址 BIT7~BIT4(未用) EECON1 BIT3(WRERR) BIT2(WREN) BIT1(WR) BIT0(RD) 写操作完毕还是被复位行为中断 允许还是禁止写周期 启动还是禁止写过程 启动还是禁止读过程 因为片内EEPROM的最大空间是128字节,所以EEADR寄存器仅使用到前7位,最高位不用。其中EECON1用于实现对串行EEPROM的具体操作命令。下面是部分读取地址的操作程序:
?与串行EEPROM有关的寄存器全部在数据存储器的第一分区中 BSF STATUS?RP0
MOVLW .0 ;假如内置EEPROM的.0地址用于存储探头地址 MOVWF EEADR
BSF EECON1?RD ;启动“读”命令 MOVF EEDATA,W
MOVWF NODE ;假如数据寄存器NODE用于暂时存储读出的地址数据
存储地址的操作程序片断举例:
BSF STATUS,RP0 ;Bank 1
MOVLW .0 ;假如内置EEPROM的.0地址用于存储探头地址 MOVWF EEADR ;Address to read MOVLW .1 ;假如探头地址为“1”
MOVWF EEDATA ;Move data to w
BSF STATUS,RP0 ;//DATA EEPROM WRITE//
BSF EECON1,WREN ?;启动“写”的使能命令
BCF INTCON,GIE ;暂时关闭全局中断以执行下列5句命令 ;以下5句相当重要并且必要,否则“写操作”不能初始化。
;在执行下列5句的过程中产生周期计数,任何不等于该计数的的数目将阻止数据写入片内EEPROM.
MOVLW B′01010101′; MOVWF EECON2 ;