单片机解密TM4C123 switch程序
单片机解密单片机主程序预览:
- 单片机解密#include "CC2500.h" // CC2500无线数传模块驱动头文件
- #define C25_Pin_CSn(x) PORTB_PB5 = x // 芯片选择 (MCU output)
- #define C25_Pin_SCLK(x) PORTB_PB1 = x // 时钟输入 (MCU output)
- #define C25_Pin_SI(x) PORTB_PB0 = x // 数据输入 (MCU output)
- #define C25_Pin_SO PORTB_PB2 // 数据输出 (MCU input)
- #define C25_Pin_GDO0 PORTB_PB4 // 通用输出 (MCU input)
- //#define C25_Pin_GDO2 PORTB_PJ6 // 通用输入 (MCU input)
- byte C25_Send_Buff[C25_Buff_Len]={1,2,3,4,5,6,7,8,9,10};// 发送数据缓冲区
- byte C25_Rece_Buff[C25_Buff_Len]={0}; // 接收数据缓冲区
- byte flag_send_ok = 0; //发送完成标志位 0完成 1正在发送
- // 函数: C25_Soft_Dly()
- // 描述: 软件延时 10us
- // 参数: 无
- void C25_Soft_Dly(int ms)
- {
- int ii,jj;
- if (ms<1) ms=1;
- for(ii=0;ii<ms;ii++)
- for(jj=0;jj<200;jj++); //K60默认频率for(jj=0;jj<160;jj++);
- }
- // 函数: C25_SPI_WR_Byte()
- // 描述: 通过SPI写一个byte到CC2500,同时从CC2500读取一个Byte
- // 参数: byte 待写入字节数据
- // return 读取到的字节数据
- byte C25_SPI_WR_Byte(byte temp)
- {
- byte j;
- for(j=0; j<8; j++) // 循环8次
- {
- C25_Pin_SI((temp & 0x80)>>7); // 将byte最高位输出到SI
- temp <<= 1; // 低一位移位到最高位
- C25_Pin_SCLK(1); // 拉高SLCK,CC2500从SI读入1位数据,同时CC2500从SO输出1位数据
- temp |= C25_Pin_SO; // 读SO到byte最低位
- C25_Pin_SCLK(0); // SCLK置低
- }
- return(temp); // 返回读取的1Byte数据
- }
- // 函数: C25_SPI_W_Cmd_Strobes()
- // 描述: 向芯片中写入指令控制字
- // 参数: cmd 待写入的指令控制字
- void C25_SPI_W_Cmd_Strobes(byte cmd)
- {
- C25_Pin_CSn(0); // CSn置低,开始数据传输过程
- (void)C25_SPI_WR_Byte(C25_RW_WRITE_SINGLE | cmd); // 写入指令控制字
- C25_Pin_CSn(1); // CSn置高,结束数据传输过程
- }
- // 函数: C25_SPI_W_Reg_Single()
- // 描述: 向1个寄存器中写入数据,同时读取状态字
- // 参数: addr 待写入的寄存器地址
- // value 待写入的字节数据
- // return 读取到状态字
- byte C25_SPI_W_Reg_Single(byte addr,byte value)

芯片解密