中颖单片机SH88F516读写SPI总线IC解密
实现本功能的中颖单片机源码如下:
- IC解密/*************************************************************************************************
- 说明;SPI使用EEPROM存储芯片93C56A,256X8bit=2K的存储空间.在使用SPI通讯时通常使用端口进行仿真,为了符合
- 使用需要,本程序同样使用了端口进行仿真,当然也可以直接使用88F516自带的SPI总线进行通讯.
- 串口1用于观测93C56A的读写数据正确与否?写入成功接收到数据R,写入失败接收到数据E,读取成功接收到数据r,
- 读取失败接收到数据e.
- 要求:打开拨码开关J6的5,6,7,8,打开拨码开关J4
- *************************************************************************************************/
- IC解密#include <sh88f516.h>
- IC解密#include <INTRINS.H> //for use 51 instruction
- sbit cs_93=P1^4;
- sbit di_93=P1^5;
- sbit do_93=P1^6;
- sbit sk_93=P1^7;
- void UART1SendChar(unsigned char value)
- {
- IEN1 &= 0xFB; //ES1=0;
- SBUF1=value; //写SBUF1,激活发送
- while(TI1==0); //等待转换结束
- TI1=0; //清除发送标志位
- IEN1 = 0x04; //ES1=1;
- }
- /*-----------------------------------------------------
- SPI93cXX系列函数调用
- void high56(void)--------发送1
- void low56(void) --------发送0
- void wd56(unsigned char dd) --------写8位数据,输入参数address or data
- unsigned char rd56(void) --------读8位数据,返回值data
- -----------------------------------------------------*/
- void high56(void)
- {
- di_93=1;
- sk_93=1; _nop_();
- sk_93=0; _nop_();
- }
- void low56(void)
- {
- di_93=0;
- sk_93=1;_nop_();
- sk_93=0;_nop_();
- }
- void wd56(unsigned char dd)
- {
- unsigned char i;
- for (i=0;i<8;i++)
- {
- if (dd>=0x80) high56();
- else low56();
- dd=dd<<1;
- }
- }
- unsigned char rd56(void)
- {
- unsigned char i,dd=0;
- do_93=1;
- for (i=0;i<8;i++)
- {
- dd<<=1;
- sk_93=1;_nop_();
- sk_93=0;_nop_();
- if (do_93) dd|=1;
- }
- return(dd);
- }

芯片解密