一次读取总线上多个ds18b20的序列号

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

//main.c/*******************************一次读取多个DS18B20的序列号,序列号存放在数组table[number][8]中;*******************************/#includeds18b20.hvoidmain(){get_rom();while(1);}//ds18b20.c#includeds18b20.hucharrom[64];//64位序列号缓存区uchartable[number][8];//序列号存放数组ucharnum[number-1];/*定时器延时函数*/voidDELAY_US(uinttime){time--;}voidwr_ds18b20(ucharbyte){uchari;for(i=0;i8;i++){CLR_DQ;DELAY_US(5);if((bytei)&0x01){SET_DQ;}elseCLR_DQ;DELAY_US(50);SET_DQ;DELAY_US(10);}}/*读取总线上两位数据*/ucharrd_two_bits(){uchari,Data=0x00;for(i=0;i2;i++){Data=1;CLR_DQ;DELAY_US(5);SET_DQ;DELAY_US(8);if(DQ)Data|=0x02;DELAY_US(45);SET_DQ;}returnData;}/*向总线上写一位数据*/voidwr_one_bit(ucharData){CLR_DQ;DELAY_US(5);if(Data&0x01){SET_DQ;}elseCLR_DQ;DELAY_US(50);SET_DQ;DELAY_US(10);}/*读多个DS18B20序列号的函数*/voidget_rom(){uchari,j,flag,rd_data,temp=0x00,pointer=0x01;for(i=0;inumber;i++){flag=init_ds18b20();if(flag){wr_ds18b20(0xf0);for(j=0;j64;j++){temp=1;rd_data=rd_two_bits();if(rd_data==0x01){temp|=0x80;rom[j]=1;wr_one_bit(1);}elseif(rd_data==0x02){temp&=0x7f;rom[j]=0;wr_one_bit(0);}elseif(rd_data==0x00){if(jnum[pointer-1]){num[pointer++]=j;temp&=0x7f;rom[j]=0;wr_one_bit(0);}elseif(jnum[pointer-1]){temp=(rom[j]7)|(temp&0x7f);rom[j]=rom[j];wr_one_bit(rom[j]);}elseif(j==num[pointer-1]){temp|=0x80;rom[j]=1;pointer--;wr_one_bit(1);}}if(((j+1)%8)==0){table[i][(j+1)/8-1]=temp;}}}}}ucharinit_ds18b20(){CLR_DQ;DELAY_US(500);SET_DQ;DELAY_US(50);if(!DQ){DELAY_US(400);return1;}else{DELAY_US(400);return0;}}//ds18b20.h#ifndef__ds18b20__h#define__ds18b20__h#includereg52.hsbitDQ=P1^0;#defineCLR_DQDQ=0;#defineSET_DQDQ=1;#defineucharunsignedchar#defineuintunsignedint#definenumber2//定义总线上ds18b20的个数externucharrom[64];//64位序列号缓存区externuchartable[number][8];//序列号存放数组externucharnum[number-1];externvoidDELAY_US(uinttime);externvoidwr_ds18b20(ucharbyte);externucharrd_ds18b20();externucharrd_two_bits();externvoidwr_one_bit(ucharData);externvoidget_rom();externucharinit_ds18b20();#endif

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功