芯片破解stc8g1k08a单片机的简易示波器
芯片破解单片机源程序如下:
- 芯片破解#include "reg51.h"
- 芯片破解#include "intrins.h"
- 芯片破解#include"main.h"
- 芯片破解#include<math.h>
- unsigned char xdata se[128];//把AD转换后的临时数据存于该数组
- unsigned char code sm[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//用于显示一列中的一点
- unsigned int code time[9]={1,40,100,500,1000,2600,5250,10000,25000};
- unsigned int code time1[9]={1,3,5,20,40,100,200,400,1000};
- unsigned char xdata timd[5];
- unsigned char xdata ju_li[5];
- unsigned char p,z=0;
- unsigned int i=0,q=0;
- unsigned int m=5;
- //unsigned double q;
- sbit k1=P3^1;
- sbit trig=P3^3;
- sbit echo=P3^2;
- void delay_us(unsigned int i)
- {
- while(i)
- {
- unsigned char a;
- for(a=5;a>0;a--);
- i--;
- }
-
- }
- void delay100ms(unsigned int i) //误差 -0.000000000025us
- {
- while(i)
- {
- unsigned char a,b,c;
- for(c=106;c>0;c--)
- for(b=197;b>0;b--)
- for(a=38;a>0;a--);
- _nop_(); //if Keil,require use intrins.h
- i--;
- }
- }
- void main()
- {
- P0M1 = 0; P0M0 = 0; //设置为准双向口
- P1M1 = 0; P1M0 = 0; //设置为准双向口
- P2M1 = 0; P2M0 = 0; //设置为准双向口
- P3M1 = 0; P3M0 = 0; //设置为准双向口
- P4M1 = 0; P4M0 = 0; //设置为准双向口
- P5M1 = 0; P5M0 = 0; //设置为准双向口
- /* P_SW2 = 0x80; //特殊寄存器允许位(0x80)
- CKSEL = 0x00; //选择内部 IRC ( 默认 )
- CLKDIV = 0x03; //时钟 3分频
- P_SW2 = 0x00;
- */
- ad_init(); //ad转换初始化
- OLED_Init(); //OLED初始化
-
- for(z=0;z<128;z++) // 起 显示启动示波器文字
- {
- for(i=0;i<8;i++) //清屏
- {
- OLED_WrCmd(0xb0+i);
- OLED_WrCmd(0x00+(z%16));
- OLED_WrCmd(0x10+z/16);
- OLED_WrDat(0x00);
- }
- }
- for (i=0;i<8;i++)
- {
- OLED_P16x16Ch(i*16,i/8*2+2,i);
- }
- delay100ms(30);
- for(z=0;z<128;z++)
- {
- for(i=0;i<8;i++) //清屏
- {
- OLED_WrCmd(0xb0+i);
- OLED_WrCmd(0x00+(z%16));
- OLED_WrCmd(0x10+z/16);
- OLED_WrDat(0x00);
- }
- } //止
- while(1)
- {
- if(k1==0)
- {
- i=0;
- m++;
- while(!k1)
- {
-
- delay100ms(1);
- i++;
-
- if(i>50)
- goto bosh;
-
- }
-
- if(m>8)
- {
- m=0;
- }
- //i++;
- }
- //*******************AD转换将临时数据存于数组se[] ****************************************
- for(i=0;i<128;i++)
- {
- se[i]=56-ad_dat()/18;
- delay(time[m]);
- }

芯片解密