2.2 温湿度处理子程序

温度传感器选用DS1820,其软件的编写相对简单,DS1820输入单片机的信号为9位数字信号,它不需要进行转换。这里应注意的是,软件控制单片机向DS1820发送的复位脉冲一定要大于1ms,否则软件将无法正常运行。这主要与DS1820的写时间有关,在用软件进行写0之后和写1之前,必须有800μs的低脉冲,写1后再写1也是如此,否则将出现数据写错误。

由于PIC16C73内含A/D转换器,因此,参考电压可由软件设置为器件的正电源电压,同时由RA0引脚接入的模拟电压可经A/D转换成数字信号。系统中的A/D模块有3个寄存器分别为:A/D转换结果寄存器(ADRES)、A/D控制寄存器0(ADCON0)和A/D控制寄存器1(ADCON1)。其中A/D控制寄存器0用于控制A/D模块的工作,寄存器的上电复位值是00H,未用位在执行读操作时为0,不能执行写操作,其它位均可读写。A/D控制寄存器1则只用了0~2位,这3位是A/D转换口配置位,通过这些位可将模拟口配置成不同的工作方式,包括模拟量输入输出、数字量输入输出以及参考电压。

以RA0通道为例,其A/D转换程序如下:

BSF STATUS,RP0 ;选择页面1

CLRF ADCON1 ;配置A/D输入

BSF PIE1,ADIE ;使能A/D中断

BCF STATUS,RP0 ;选择页面0

MOVLW 0XC1 ;时钟、A/D接通

MOVWF ADCON0 ;