📄 ds1990a.c
字号:
/*
;-----------------------------------------
;程序文件名称:DS1990A.C
;软件标题:DS1990A操作标准子程序集
;软件说明:DS1990A ROM码读取程序
;程序最后修改时间: 2007-11-03 13:10
;-----------------------------------------
;原作者: 张 鑫
;程序修改人:张 鑫
;版本号: V1.0.0
;-----------------------------------------
*/
#include <intrins.h>
#define T4us _nop_();_nop_();_nop_();_nop_(); //延时4us的宏 base=11.059Mhz(精确控制)
#define T6us _nop_();_nop_();_nop_();_nop_();_nop_(); //延时6us的宏 base=11.059Mhz(精确控制)
//外部变量声明
extern bit Key;
//*********************************************
//函数功能:发出复位脉冲
//入口:无
//出口: 0=失败,1=成功,失败表示总线被钳在低电平
//*********************************************
bit TouchReset(void)
{
uchar i;
bit a;
Key=0; //拉低总线
for (i=230;i>0;--i); //保持500us base=11.059Mhz(精确控制)
Key=1; //释放总线
i=255; //超时1.6ms base=11.059Mhz(精确控制)
while (--i)
if (Key==1) //等待总线拉高
{
a=0;
for (i=63;i>0;--i) //延时480us base=11.059Mhz(精确控制)
a|=!Key; //采集总线状态
return(a); //返回总线状态
}
return(0); //返回失败标示
}
//********************************************************
//函数功能:读入DS1990A的SN,要检查复位情况和CRC,总共读10次
//入口: 指向内部RAM的指针
//出口: 返回0表示没有成功读取,指针的值不变,返回1表示成功读
// 取,指针指向最后一个字节
//*********************************************************
bit Read1990a(void)
{
uchar c;
for (c=30;c>0;--c) //最多读10次
{
if (TouchReset()) //检查复位是否正确
{
return(1); //成功返回1
}
}
return(0); //失败返回0
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -