PIC16F877A单片机对DS18B20温度传感器芯片操作的问题

问题是,怎么设置单片机数据输入引脚为高电平或低电平,别人程序是这样写的
#define DQ RC1//数据输入引脚
#define DQ_HIGH() TRISC1=1//设置引脚为输入
#define DQ_LOW() TRISC1=0;DQ=0//设置引脚为输出
能否帮我解释下,为什么这样写?谢谢
除了这样写,还有其他的写法吗?难道不能先定义引脚为输出状态,然后直接写1拉高,写0拉低吗?这是我现在的理解:引脚定义为输入时,为高阻态,若上拉一个电阻时,为高电平,定义为输出时,引脚上的电平由自己定义,1为高电平,0为低电平。不知道对不对?

因PIC和51系列不同在是多了一个端口方向寄存器,所以你要用它这端口时就要先定义这端口方向寄存器1为输入0为输出,再这后你在可在它的端口寄存器进行相应的是输出或读回输入信号。TRIS就是专用来设置这端口寄存器的专用指令。在这用其它传送指令时都有是只对端吕寄存器的操纵,唯只有这TRIS才是对端口方向寄存器的操作。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-20
#define DQ_HIGH() TRISC1=1//设置引脚为输入
引脚定义为输入时,为高阻态,因为DS18B20上拉一个4.7K电阻,所以相对于DS18B20就是输出为高电平。

#define DQ_LOW() TRISC1=0;DQ=0//设置引脚为输出

引脚输出低电平,不用解释吧?

-------------------------------------------------------------------------------------------------------------
你说的没问题,这种方式可认为合理利用硬件资源本回答被提问者采纳
相似回答