芯片破解STC32G12K12主程序
芯片破解主程序:
- //<<AICUBE_USER_HEADER_REMARK_BEGIN>>
- ////////////////////////////////////////
- // 在此添加用户文件头说明信息
- // 文件名称: main.c
- // 文件描述:
- // 文件版本: V1.0
- // 修改记录:
- // 1. (2025-11-06) 创建文件
- ////////////////////////////////////////
- //<<AICUBE_USER_HEADER_REMARK_END>>
- #include "config.h" //默认已包含stdio.h、intrins.h等头文件
- //<<AICUBE_USER_INCLUDE_BEGIN>>
- // 在此添加用户头文件包含
- #include "i2c.h"
- #include "MAX7219.h"
- // 8位Max7219数码管模块显示, CLK = P6^4;CS = P6^5; DIN = P6^6;
- //选择I2C数据口: SCL(P2.5), SDA(P2.4),IIC分频系数n=60
- //<<AICUBE_USER_INCLUDE_END>>
- //<<AICUBE_USER_GLOBAL_DEFINE_BEGIN>>
- // 在此添加用户全局变量定义、用户宏定义以及函数声明
- void PlaySMG(u8 tmp_1[8]);
- char code LEDcode[]=
- {0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,0x00 /*0,1,2,3,4,5,6,7,8,9,全灭*/
- ,0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x67,0x3e,0xff}; /*A,B,C,D,E,F,P,U,全亮*/
- char code table[]={
- 0x7e, //0
- 0x18, //1
- 0x37, //2
- 0x3d, //3
- 0x59, //4
- 0x6d, //5
- 0x6f, //6
- 0x38, //7
- 0x7f, //8
- 0x7d, //9
- 0x7b, //A
- 0x4F, //b
- 0x66, //C
- 0x1F, //d
- 0x67, //E
- 0x63, //F
- }; //共阴
- //<<AICUBE_USER_GLOBAL_DEFINE_END>>
- ////////////////////////////////////////
- // 项目主函数
- // 入口参数: 无
- // 函数返回: 无
- ////////////////////////////////////////
- void main(void)
- {
- //<<AICUBE_USER_MAIN_INITIAL_BEGIN>>
- // 在此添加用户主函数初始化代码
- u8 i=0;
- u8 tmp[8];
- //<<AICUBE_USER_MAIN_INITIAL_END>>
- SYS_Init();
- //<<AICUBE_USER_MAIN_CODE_BEGIN>>
- // 在此添加主函数中运行一次的用户代码
- Initial(); //MAX7219初始化
- P40 = 0; //三极管引脚输出低电平
- P60 = 0; //输出低电平 //这2颗灯亮了
- P61 = 0; //输出低电平 //说明这段程序是执行了
- delay_ms(2000);//经STC论坛版主erci***指导“print_usb并非阻
- //塞函数,所以在打开串口前可能已经打印完成了。 所以延时应放在打印前,或者在循环里
- //每隔1s反复打印这样每次打开串口都能看到。”
- // printf_usb( " A 首先从24C02读取8个数\xfd: \r\n");
- // printf_usb( " B 把从24C02读取8个数\xfd加1后写入24C02:\r\n");
- // printf_usb( " C 把从24C02读取8个数\xfd减1后写入24C02:\r\n");
- // printf_usb( " D 把24C02地址0x0000的8个数\xfd清零: \r\n");
- //printf_usb( " 发字符给printf_usb,引发bUsbInBusy检测 \r\n");
- //可以先printf再while(bUsbInBusy == 1);,但是这样依然看不到第一条printf的
- //while(bUsbInBusy==1) //cdc串口发数据之前可以判断一下当前的usb状态,等他空闲了再发,
- //实测这样一点问题没有,但是我们这里不行啊
- //{
- printf_usb( " A 首先从24C256读取8个数: \r\n");
- printf_usb( " B 把从24C256读取8个数加1后写入24C256:\r\n");
- printf_usb( " C 把从24C256读取8个数减1后写入24C256:\r\n");
- printf_usb( " D 把24C256地址0x0000k开始的8个数清零: \r\n");
- //};
- IIC_Read_NGByte(0x00,0x08,tmp,8); // 从地址 0x0008 开始,读取8个字节,存入tmp[8]中
-
- for( i=0;i<8;i++ )
- {
- printf_usb( "%u\t ",tmp[i] );
- } 芯片破解

芯片解密