赛元单片机SC93F7432控制油烟机IC解密
- IC解密#include <reg51.h>
- IC解密#include <intrins.h>
- IC解密#include <math.h> //要用到取绝对值函数
- sbit DQ=P3^7;//DS18B20的数据线和单片机的P3.7口相接,且定义DQ为变量名
- sbit led3_g=P2^4;//单片机的P2.4口定义为LED1的g段,表示温度的正负
- sbit led0_off=P3^3;//led0熄灭信号接到P3.3口
- sbit led1_off=P3^4;//led0熄灭信号接到P3.4口
- sbit led2_off=P3^5;//led0熄灭信号接到P3.5口
- float low_limitedTmp,high_limitedTmp;
- //设置的报警最低温度和最高温度,因为要在几个函数中用,故为全局变量
- int Final_tmpvalue; //存放最终得到的十进制有符号并放大10倍的温度值
- unsigned char key_value;//存放键值
- unsigned char sys_state;//存放系统状态,共有3态
- //正常测温状态sys_state=0、调最低温度状态sys_state=1、
- //调最高温度状态sys_state=2
- unsigned char led_pst;//存放正在设置的led位置值
- //led_pst=0表示正在设置最右边的LED,加1依次往左表示
- /*****************延时函数**************
- *************功能:延时Nx15us***********/
- void delay_multi_15us(unsigned int N)
- {
- do{
- _nop_();//1
- _nop_();//2
- _nop_();//3
- _nop_();//4
- _nop_();//5
- _nop_();//6
- _nop_();//7
- _nop_();//8
- _nop_();//9
- _nop_();//10
- _nop_();//11
- _nop_();//12
- _nop_();//13
- N--;//计满15us后N减1
- }while(N);
- }
- /*********************初始化函数******************************
- ***********功能:初始化DS18B20,以便能进行后续读写操作********/
- bit Init_DS18B20(void)//返回为位的函数,以便检测是否成功启动
- {
- DQ=0;//先拉低延时一段时间
- delay_multi_15us(50);//延时750us,协议要求480us~980us,满足要求
- DQ=1;//再拉高延时
- delay_multi_15us(6);//延时等待返回低电平
- return(DQ);
- delay_multi_15us(26);//再延时一段时间
- }
- /****************** 写一字节数据函数*********************
- ************功能:向DS18B20写一个字节的数据内容**********/
- void WritetoDS_onebyte(char command)
- {
- unsigned char i; //8位数据记位,为了节约资源定义为8位
- bit temp;
- for(i=0;i<8;i++)
- {
- temp=command&0x01;//将最低位提取出来
- command>>1;//将其右移一位
- if(temp)//如果写入的是1,则按1的操作:先置DQ=0,延时15us,再置DQ=1,延时45us
- {
- DQ=0;
- delay_multi_15us(1);//延时15us
- DQ=1;
- delay_multi_15us(3);//延时45us
- }
- else //如果写入的是0,则按0的操作:先置DQ=0,延时60us,再置DQ=1
- {
- DQ=0;
- delay_multi_15us(4);//延时60us
- DQ=1;
- }
- }
- }

芯片解密