STC8H1K16电子元件测试仪制作芯片解密
单片机源程序如下:
- 芯片解密
- 芯片解密#include <STC8G.h>
- 芯片解密#include <stdlib.h>
- 芯片解密#include <string.h>
- 芯片解密#include "oled.h"
- 芯片解密#include <math.h>
- #define uint8_t unsigned char
- #define uint16_t unsigned int
- #define uint32_t unsigned long int
- #define int16_t signed int
- //三组测试电阻的阻值:R_L为680欧,R_H为470K
- //如要修改,请输入以欧姆为单位的电阻值定义(特别注意:此三组电阻须配对为阻值相近,否则误差较大)
- //#define R_L_VAL 680 //R_L; 标准值 680欧
- //#define R_H_VAL 470000UL //R_H; 标准值 470K
- #define R_L_VAL 510 //510欧
- #define R_H_VAL 510000UL //510K
- //在程序中计算必要的电阻值
- #define RH_RL_RATIO (R_H_VAL/R_L_VAL)//高低电阻比
- #define R_H_PER (R_H_VAL/100) //高电阻/100的值
- //注意:N和P沟道增强型E-MOSFET栅极电容计算系数:取决于AVR的制造公差,在必要时进行调整
- //(注:其他改进型有插入基准元件进行自动校准功能)
- //#define N_GATE_CAPACITY_FACTOR 387 //N沟道系数
- //#define P_GATE_CAPACITY_FACTOR 142 //P沟道系数
- #define N_GATE_CAPACITY_FACTOR 18 //N沟道系数
- #define P_GATE_CAPACITY_FACTOR 18
- //电容器的电容计算系数:取决于 AVR 的制造公差,在必要时进行调整
- //总测量范围约为 0.2nF 至 1000uF。
- //#define Hr_LowCAPACITY_FACTOR 94 //使用 470k 高电阻测量(小电容)系数
- #define Hr_LowCAPACITY_FACTOR 21
- //#define Lr_HighCAPACITY_FACTOR 283 //使用 680 低电阻测量(高电容)系数
- #define Lr_HighCAPACITY_FACTOR 18
- void ADC_Init();
- void CheckPins(uint8_t HighPin, uint8_t LowPin, uint8_t TriPin);
- void ReadCapacity(uint8_t HighPin, uint8_t LowPin);
- void DischargePin(uint8_t PinToDischarge, uint8_t DischargeDirection);
- uint16_t ReadADC(u8 addr); //ADC读取
- void GetGateThresholdVoltage(void); //取栅极开启阈值电压
- void _delay_ms(unsigned int ms);
- //端口C: PC0-PC2为测试脚TP1-TP3为,同时PB0-PB5分别连接680、470K三组测试电阻
- //请不要更改 TP1、TP2和TP3 的定义!
- //端口B: PB0-PB5分别连接680、470K连续三组测试电阻
- //#define R_DDR DDRB //数据方向寄存器, 1:输出/0:输入
- //#define R_PORT PORTB //6个测试电阻接PORTB,1:上拉电阻使能
- //
- ////以下注释为方便理解本程序:
- ////DDRxn控制引脚方向:当DDRxn为1时,Pxn为输出;当DDRxn为0时,Pxn为输入。
- ////PORTxn在PCn为输入时,1为上拉电阻至VCC;否则引脚悬空。PCn为输出时,1为输出高电平;否则输出低电平。
- ////PINxn的值为Pxn引脚的电平。不论如何配置DDxn,都可以通过读取PINxn来获得引脚电平。如果给PINxn写入1,PORTxn的值会翻转。
- //
- //#define ADC_DDR DDRC //数据方向寄存器: 1:输出/0:输入
- //#define ADC_PORT PORTC //数据寄存器 : 1: 输入:上拉电阻使能 或 输出:高电平
- //#define ADC_PIN PINC //引脚寄存器 : 输出时引脚的实际值
- //#define TP1 PC0 //0
- //#define TP2 PC1 //1
- //#define TP3 PC2 //2
- #define R_DDR P2M0 // 这个还要加 P2M1= ~P2M0;
- #define R_PORT P2
- #define ADC_DDR P1M0 //这个 入=0 出=1 还要加P1M1 = ~P1M0; //设置 P1.0~P1.7 为双向口模式
- #define ADC_PORT P1 //设置
- #define ADC_PIN P1
- u8 TP1=0;
- u8 TP2=1;
- u8 TP3=2;
-
- sbit RST_PIN=P0^1; //测试按钮,按下为低电平
- //元件属性码(与返回码PartFound匹配)
- #define PART_NONE 0 //无或故障
- #define PART_DIODE 1 //二极管
- #define PART_TRANSISTOR 2 //三极管
- #define PART_FET 3 //FET
- #define PART_TRIAC 4 //单向可控硅
- #define PART_THYRISTOR 5 //双向可控硅
- #define PART_RESISTOR 6 //电阻
- #define PART_CAPACITOR 7 //电容
- //三极管子类型码
- #define PART_MODE_NPN 1 //NPN三极管
- #define PART_MODE_PNP 2 //PNP三极管
- //场效应管子类型码(与PartMode返回码匹配。大属性码PartFound为PART_FET: 3)
- #define PART_MODE_N_E_MOS 1 //N沟道增强型E-MOSFET
- #define PART_MODE_P_E_MOS 2 //P沟道增强型E-MOSFET
- #define PART_MODE_N_D_MOS 3 //N沟道耗尽型D-MOSFET
- #define PART_MODE_P_D_MOS 4 //P沟道耗尽型D-MOSFET
- #define PART_MODE_N_JFET 5 //N沟道JFET
- #define PART_MODE_P_JFET 6 //P沟道JFET
- //二极管结构体
- struct Diode //声明有3个成员的结构体,标签被命名为Diode(结构体将不同的数据类型整合为一个有机整体,方便数据管理,增加代码的可读性)
- {
- uint8_t Anode; //阳极引脚序号
- uint8_t Cathode; //阴极
- int16_t Voltage; //二极管导通电压降
- };

芯片解密