📄 设置sh11工作模式.c
字号:
/*****************************读状态寄存器返回值:状态寄存器值******************************/uchar Readreg(void){ uchar i,reg; Start(); ///启动传输命令 _nop_(); _nop_(); _nop_(); SAL=0; ///发送地址000 for (i=0;i<3;i++){ _nop_(); SCK=0; _nop_(); SCK=1; } WDI=0;WDI=1;//清看门狗 ///发送读状态寄存器命令码00111 for (i=0;i<2;i++){ _nop_(); SCK=0; _nop_(); SCK=1; } SAL=1; for (i=0;i<3;i++){ _nop_(); SCK=0; _nop_(); SCK=1; } SAL=0;///保持一个周期的0 _nop_(); SCK=0; _nop_(); SCK=1; reg=0; WDI=0;WDI=1;//清看门狗 ///开始读取状态寄存器值 for (i=0;i<8;i++){ SCK=0; _nop_(); SCK=1; reg=reg<1; if (SAL) reg=reg||0x01; else reg=reg&&0xfe; } SAL=1; return reg;///返回状态寄存器值}/*****************************写状态寄存器入口参数:状态寄存器的设置值******************************/void Writereg(uchar regdata){ uchar i; Start(); ///启动传输命令 _nop_(); _nop_(); _nop_(); SAL=0; ///发送地址000 for (i=0;i<3;i++){ _nop_(); SCK=0; _nop_(); SCK=1; } ///发送写状态寄存器命令码00110 for (i=0;i<2;i++){ _nop_(); SCK=0; _nop_(); SCK=1; } SAL=1; for (i=0;i<2;i++){ _nop_(); SCK=0; _nop_(); SCK=1; } SAL=1; _nop_(); SCK=0; _nop_(); SCK=1; SAL=0;///保持一个周期的0 _nop_(); SCK=0; _nop_(); SCK=1; WDI=0;WDI=1;//清看门狗 ///开始发送状态寄存器值 for (i=0;i<8;i++){ SCK=0; if (regdata&&0x80) SAL=1; else SAL=0; SCK=1; regdata=regdata<1; } SAL=0; _nop_(); SCK=0; _nop_(); SCK=1; SAL=1;}/*****************************初始化SHT11工作模式设置SHT11湿度检测工作在8位状态,状态寄存器bit0=0******************************/void IntSHT11(void){ uchar reg; ///先读出状态寄存器的值 reg=Readreg(); reg=reg&&0xfe;///设置最低位为0 WDI=0;WDI=1;//清看门狗 Writereg(reg);///写入状态字}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -