单片机解密STM8S USB电压电流表制作
单片机解密单片机源程序如下:
- <font style="font-size: 14px">#include <iostm8s103f2.h>
- #include "ST7565_12864.h"
- #include "ziku.h"
- #define uchar unsigned char
- #define uint unsigned int
- #define KEY PA_IDR_IDR3 //PA 的第3位做KEY
- void EEP_Init(void) //EEPROM初始化
- {
- FLASH_CR1 = 0x00;
- FLASH_CR2 = 0x00;
- FLASH_NCR2 = 0xFF;
- FLASH_DUKR = 0xae; //写入第一个秘钥
- FLASH_DUKR = 0x56; //写入第二个秘钥
- while(!(FLASH_IAPSR&0x08)); //等待就绪
- }
- void EEP_W(uchar addr,float data) //写EEPROM
- {
- float *p;
- p=(float *)(0x4000+addr);
- *p=data;
- while(!(FLASH_IAPSR&0x04)); //等待完成
- }
- float EEP_R(uchar addr) //读EEPROM
- {
- float *p;
- p=(float *)(0x4000+addr);
- return *p;
- }
- void Hellow(void) //初始屏幕
- {
- ClearScreen(); //清除屏幕
- DisplayFont(2, 8+4, FONT_8X16,19); //U
- DisplayFont(2, 16+4, FONT_8X16,17); //S
- DisplayFont(2, 24+4, FONT_8X16,14); //B
- DisplayFont(2, 32+4, FONT_16X16,0);//电
- DisplayFont(2, 48+4, FONT_16X16,1);//压
- DisplayFont(2, 64+4, FONT_16X16,0);//电
- DisplayFont(2, 80+4, FONT_16X16,2);//流
- DisplayFont(2, 96+4, FONT_16X16,3);//表
- DisplayFont(5, 40+4, FONT_16X16,9);//丑
- DisplayFont(5, 56+4, FONT_16X16,10);//孩
- }
- void ADC_Init(void)
- {
- ADC_CR1 = 0x20; //分频系数为4 单次转换模式 先不启动ADC转换
- ADC_CR2 = 0x00; //非外部触发 数据左对齐 禁止扫描模式
- ADC_CSR = 0x03; //禁止转换结束中断 设置转换通道为AIN3
- ADC_TDRL|= 0x60; //禁止AIN5AIN6施密特触发器功能
- }
- uint Get_Adc(uchar ac) //获取adc值
- {
- uint Value;
- ADC_CSR = ac; //选择通道
- ADC_CR1 |= 0x01; //第一次写1是从低功耗模式唤醒
- ADC_CSR &= ~0x80; //清除转换标志
- ADC_CR1 |= 0x01; //开始转换
- while(!(0x80&ADC_CSR)); //等待转换完成
- Value = (uint) ADC_DRH; //取高8位
- Value = Value<<2; //左移两位
- Value += ADC_DRL; //取低两位
- return(Value); //返回adc值
- }

芯片解密