单片机控制PT2313汇编程序单片机解密
单片机解密单片机main.c程序:
- #include "MAIN.H"
- #include "OLED.H"
- #include "mcp4725.h"
- #include "KEY.H"
- uint set_voltage,set_voltage1; //设定值
- uchar digit4,digit3,digit2,digit1; //设定值千百十个位
- uchar i=0;
- uchar buffer[7]={0,0,0,0,0,0,0}; //485缓存
- bit flag=0; //接收完标志位
- void UartInit(void) //9600bps@11.0592MHz
- {
- SCON = 0x50; //8位数据,可变波特率
- AUXR |= 0x01; //串口1选择定时器2作为波特率发生器
- AUXR &= 0xFB; //定时器2时钟FOSC/12,即12T
- T2L = 0xE8; //设定定时器初值
- T2H = 0xFF; //设定定时器初值
- AUXR |= 0x10; //启动定时器2
- ES=1; //打开接收中断
- EA=1; //打开总中断
- }
- void init()
- {
- OLED_Init();
- OLED_CLS();
- OLED_hzStr(16,0,2); //数
- OLED_hzStr(32,0,3); //字
- OLED_hzStr(48,0,0); //电
- OLED_hzStr(64,0,1); //压
- OLED_hzStr(80,0,4); //源
- SDA=0;SCL=0;
- MCP4725_WriteData_Digital(0);
- Display();
- OLED_hzStr(96,6,7); //实
- OLED_hzStr(112,6,8); //际
- UartInit();
- }
- void communication(void)
- {
- if(flag==1) //当接收完报文,开始处理
- {
- flag=0;
- set_digit4=buffer[1]-0x30;
- set_digit3=buffer[2]-0x30;
- set_digit2=buffer[3]-0x30;
- set_digit1=buffer[4]-0x30;
- set_voltage=set_digit1+set_digit2*10+set_digit3*100+set_digit4*1000;
- set_voltage1=set_voltage*0.8192; //转化为数字量
- if(set_voltage1>=4096) //如输入值超上限,则输出最大值
- set_voltage1=4095;
- if(set_voltage>=5000) //如输入值超上限,则输出显示值显示最大值5000mV
- set_voltage=5000;
- set_digit1=0;set_digit2=0;set_digit3=0;set_digit4=0;
- MCP4725_WriteData_Digital(set_voltage1); //写入DA模块
- Display(); //更新显示
- }
- }

芯片解密