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

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

单片机解密MC9S12XEP100 can总线接收程序源码

  1. /*---------------------------------------------------------*/
  2. 单片机解密#include <hidef.h>      /* common defines and macros */
  3. 单片机解密#include "derivative.h"      /* derivative-specific definitions */
  4. 单片机解密#include "CAN.h"      
  5. #include "LCD.h"      

  6. #define LEDCPU PORTK_PK4
  7. #define LEDCPU_dir DDRK_DDRK4
  8. #define  BUS_CLOCK                   32000000           //总线频率
  9. #define  OSC_CLOCK                   16000000           //晶振频率

  10. char *xianshi[3] = {
  11. "飞翔科技开发板",
  12. "接收到的数据为:",
  13. };

  14. #define ID                  0x0001       //发送标识符
  15. #define data_len_TX          7           //发送数据长度

  16. unsigned char k;

  17. unsigned char senddata[8] = {'F','R','E','E','F','L','Y',0};     //发送的数据

  18. struct can_msg msg_send, msg_get;
  19. unsigned char datain=0;

  20. /*************************************************************/
  21. /*                      初始化锁相环                         */
  22. /*************************************************************/
  23. void INIT_PLL(void)
  24. {
  25.     CLKSEL &= 0x7f;       //set OSCCLK as sysclk
  26.     PLLCTL &= 0x8F;       //Disable PLL circuit
  27.     CRGINT &= 0xDF;
  28.    
  29.     #if(BUS_CLOCK == 40000000)
  30.       SYNR = 0x44;
  31.     #elif(BUS_CLOCK == 32000000)
  32.       SYNR = 0x43;     
  33.     #elif(BUS_CLOCK == 24000000)
  34.       SYNR = 0x42;
  35.     #endif

  36.     REFDV = 0x81;         //PLLCLK=2×OSCCLK×(SYNDIV+1)/(REFDIV+1)=64MHz ,fbus=32M
  37.     PLLCTL =PLLCTL|0x70;  //Enable PLL circuit
  38.     asm NOP;
  39.     asm NOP;
  40.     while(!(CRGFLG&0x08)); //PLLCLK is Locked already
  41.     CLKSEL |= 0x80;        //set PLLCLK as sysclk
  42. }

  43. /************************************************************/
  44. /*                    初始化ECT模块                         */
  45. /************************************************************/
  46. void initialize_ect(void){
  47.   ECT_TSCR1_TFFCA = 1;  // 定时器标志位快速清除
  48.   ECT_TSCR1_TEN = 1;    // 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器)
  49.   ECT_TIOS  = 0xff;      //指定所有通道为输出比较方式
  50.   ECT_TCTL1 = 0x00;            // 后四个通道设置为定时器与输出引脚断开
  51.   ECT_TCTL2 = 0x00;     // 前四个通道设置为定时器与输出引脚断开
  52.   ECT_DLYCT = 0x00;            // 延迟控制功能禁止
  53.   ECT_ICOVW = 0x00;            // 对应的寄存器允许被覆盖;  NOVWx = 1, 对应的寄存器不允许覆盖
  54.   ECT_ICSYS = 0x00;            // 禁止IC及PAC的保持寄存器
  55.   ECT_TIE   = 0x00;     // 禁止所有通道定时中断
  56.   ECT_TSCR2 = 0x07;            // 预分频系数pr2-pr0:111,,时钟周期为4us,
  57.   ECT_TFLG1 = 0xff;            // 清除各IC/OC中断标志位
  58.   ECT_TFLG2 = 0xff;     // 清除自由定时器中断标志位
  59. }

  60. /************************************************************/
  61. /*                在液晶上显示接收到的数据                  */
  62. /************************************************************/
  63. void play_data(void)
  64. {
  65.     unsigned char l;
  66.     write_command(0x8A);
  67.     for(l=0;l<msg_get.len;l++)
  68.        write_Data(msg_get.data[l]);
  69. }

  70. /*************************************************************/
  71. /*                      中断接收函数                         */
  72. /*************************************************************/
  73. #pragma CODE_SEG __NEAR_SEG NON_BANKED
  74. void interrupt CAN_receive(void)
  75. {
  76.       if(MSCAN0GetMsg(&msg_get))
  77.       {
  78.         // 接收新信息
  79.          if(msg_get.id == ID && (!msg_get.RTR))
  80.          {
  81.                  LEDCPU = ~LEDCPU;
  82.                  datain=1;      
  83.          }
  84.       }
  85.       else
  86.       {
  87.        for(;;);
  88.       }
  89. }



联系方式

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

在线客服
热线电话

企业微信