芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密

飞芯科技提供芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密逆向服务

51单片机STC15W408AS电调程序芯片解密

  1. 芯片解密STC15W408AS来驱动航模用的无感无刷三相直流马达.

  2. 芯片解密
  3. *********************************************************************************/

  4. 芯片解密#define MAIN_Fosc                24000000L        //定义主时钟

  5. #include "STC15Fxxxx.H"

  6. //CMPCR1(比较器控制寄存器 1)
  7. #define        CMPEN        0x80        //1: 允许比较器, 0: 禁止,关闭比较器电源
  8. #define        CMPIF        0x40        //比较器中断标志, 包括上升沿或下降沿中断, 软件清0
  9. #define        PIE                0x20        //1: 比较结果由0变1, 产生上升沿中断
  10. #define        NIE                0x10        //1: 比较结果由1变0, 产生下降沿中断
  11. #define        PIS                0x08        //输入正极性选择, 0: 选择外部P5.5做正输入,           1: 由ADCIS[2:0]所选择的ADC输入端做正输入.
  12. #define        NIS                0x04        //输入负极性选择, 0: 选择内部BandGap电压BGv做负输入, 1: 选择外部P5.4做输入.
  13. #define        CMPOE        0x02        //1: 允许比较结果输出到P1.2, 0: 禁止.
  14. #define        CMPRES        0x01        //比较结果, 1: CMP+电平高于CMP-,  0: CMP+电平低于CMP-,  只读

  15. //CMPCR2(比较器控制寄存器 2)
  16. #define        INVCMPO        0x80        //1: 比较器输出取反,  0: 不取反
  17. #define        DISFLT        0x40        //1: 关闭0.1us滤波,   0: 允许
  18. #define        LCDTY        0x00        //关闭数字滤波功能. 数字滤波功能即为数字信号去抖动功能.

  19. sbit PWM0_L = P3^4;
  20. sbit PWM1_L = P3^5;
  21. sbit PWM2_L = P3^6;

  22. u8        Step;
  23. u8        PWM_Value; // 决定PWM占空比的值
  24. u16        RxPulseWide;
  25. bit        B_RxOk;    //定义一个bool量.
  26. bit        B_RUN;
  27. u8        PWW_Set;
  28. u8        cnt10ms;
  29. u8        Rx_cnt;
  30. u8        TimeOut;        //堵转超时

  31. #define DISABLE_CMP_INT CMPCR1 &= ~0X40                // 比较器中断标志位清0.
  32. #define ENABLE_CMP_INT  CMPCR1 |= 0X40                // 比较器中断标志位置1.

  33. /*********************************************************************/

  34. void Delay_n_ms(u8 dly)
  35. {
  36.         u16        j;
  37.         do
  38.         {
  39.                 j = MAIN_Fosc / 13000;        //延时1ms, 主程序在此节拍下运行
  40.                 while(--j)        ;
  41.         }
  42.         while(--dly);
  43. }


  44. void delay_us(u8 us)
  45. {
  46.         do
  47.         {
  48.                 NOP(20);        //@24MHz
  49.         }
  50.         while(--us);
  51. }

  52. void StepXL(void) // 换相序列函数
  53. {
  54. switch(Step)
  55.           {
  56.            case 0:  // AB
  57.                                 PWM0_L=0;  PWM1_L = 1;  PWM2_L=0;           // Q4常开.
  58.                                 CCAP0H = PWM_Value;        CCAP1H=0;        CCAP2H=0;        // A相由占空比控制.
  59.                                 ADC_CONTR = 0XCD;        // ADC电源开,ADC转换开,选择P1.5作为ADC输入口
  60.                                 CMPCR1 = 0x9C;                // 比较器使能, 下降沿中断允许,通过ADC的P1.5口作为比较器的正极输入端,
  61.                                                                                                                                  //选择外部端口P5.4作为比较器负极输入端.
  62.                  break;
  63.            case 1:  // AC
  64.                                 PWM0_L=0;        PWM1_L=0;  PWM2_L = 1;                        // Q4常开
  65.                                 CCAP0H = PWM_Value;        CCAP1H=0;        CCAP2H=0;        // A相由占空比控制.
  66.                                 ADC_CONTR = 0XCC;        // ADC电源开,ADC转换开,选择P1.4作为ADC输入端
  67.                                 CMPCR1 = 0xAC;                // 比较器使能, 上升沿中断允许,通过ADC的P1.4口作为比较器的正极输入端
  68.                                                                                                                                  //选择外部端口P5.4作为比较器负极输入端.   
  69.                   break;
  70.            case 2:  // BC
  71.                                 PWM0_L=0;        PWM1_L=0;  PWM2_L = 1;                        // Q2常开
  72.                                 CCAP0H=0;        CCAP2H=0;        CCAP1H = PWM_Value; //  B相由占空比控制.                       
  73.                                 ADC_CONTR = 0XCB;   // ADC电源开,ADC转换开,选择P1.3作为ADC输入口测量A点电压   
  74.                                 CMPCR1 = 0x9C;                // 比较器使能, 下降沿中断允许,通过ADC的P1.3口作为比较器的正极输入端
  75.                                                                                                                                  //选择外部端口P5.4作为比较器负极输入端.
  76.                   break;
  77.            case 3:  // BA
  78.                                 PWM0_L = 1;  PWM1_L=0;        PWM2_L=0;                        // Q6常开
  79.                                 CCAP0H=0;        CCAP2H=0;        CCAP1H = PWM_Value; // B相由占空比控制.
  80.                                 ADC_CONTR = 0XCD;        // ADC电源开,ADC转换开,选择P1.5作为ADC输入口测量C点电压  
  81.                                 CMPCR1 = 0xAC;                // 比较器使能, 上升沿中断允许,通过ADC的P1.5口作为比较器的正极输入端



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.taihedz.cn
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信