芯片破解STC15W408单片机T0 T2+LCD1602频率计源程序
芯片破解STC15W408的T0、T2 中断+ 1602显示的频率计程序,测量振动频率用。
芯片破解单片机源程序如下:
- //STC15W408,P34 T0为频率输入口
- #define CPU_Fosc 6000000uL //定义时钟
- #include<STC15F2K60S2.H>
- //#include<stdio.h>
- #include <intrins.h>
- #include"1602.h"
- #include"delay.h"
- bit OVERFLOWFLAG;
- bit TIMERFLAG;
- /*------------------------------------------------
- 定时器0初始化子程序
- 本程序用于计数
- ------------------------------------------------*/
- void Init_Timer0(void)
- {
- TMOD |= 0x01 | 0x04; //使用模式1,16位计数器,使用"|"符号可以在使用多个定时器时不受影响
- TH0=0x00; //给定初值
- TL0=0x00;
- EA=1; //总中断打开
- ET0=1; //定时器中断打开
- TR0=1;
- } //定时器开关打开
- /*------------------------------------------------
- 定时器2初始化子程序
- 本程序用于定时
- ------------------------------------------------*/
- void Timer2Init(void) //100微秒@6.000MHz
- {
- AUXR |= 0x04; //定时器时钟1T模式
- T2L = 0xA8; //设置定时初始值
- T2H = 0xFD; //设置定时初始值
- AUXR |= 0x10; //定时器2开始计时
- }
- /*
- void Init_Timer1(void)
- {
- TMOD |= 0x10; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
- TH1=0x3c; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
- TL1=0xb0;
- EA=1; //总中断打开
- ET1=1; //定时器中断打开
- TR1=1; //定时器开关打开
- }
- */
- /*------------------------------------------------
- 主程序
- ------------------------------------------------*/
- main()
- {
- unsigned long int a;
- char temp[16]; //定义字符显示缓冲数组
- Init_Timer0(); //初始化定时器0
- Timer2Init(); //初始化定时器2
- LCD_Init(); //初始化液晶屏
- LCD_Str(0,0," PIN LV JI ");//写入第一行信息,主循环中不再更改此信息,所以在while之前写入
- while(1)
- {
- if(OVERFLOWFLAG)//检测溢出标志,如果溢出表明频率过高,显示溢出信息
- {
- OVERFLOWFLAG=0;//标志清零
- LCD_Str(0,1,"overflow >655KHz");
- }
- if(TIMERFLAG) //定时1s到,做数据处理
- {
- a=TL0+TH0*256;//读取计数值
- a=a*16; //扩大到实际值
- // sprintf(temp,"FREQ:%08.0f Hz",(float)a);
- LCD_Str(0,1,temp);//显示到液晶第二行
- TR0=1; //2个定时器打开
- // TR1=1;
- IE2 = 0x04; //T2中断允许
- TH0=0; //保证计数器初值为0
- TL0=0;
- TIMERFLAG=0; //打开计时计数标志
-
- }
- }
- }

芯片解密