//"首先定义好IO口
sbit sck=P1^0;
sbit si=P1^1;
sbit so=P1^2;
//"通用SPI串口模拟程序 byte=unsigned char
byte spi(byte x)
{ byte i,j;
j=sck=0;so=1;
for(i=0;i<8;i++) //"发数据
{ if(x&0x80)si=1;
else si=0;
x=x<<1;
_nop_(); //"根据芯片速度与单片机时钟调整延时
_nop_(); //"适当增加或减少NOP指令
sck=1;
j=j<<1;
if(so)j=j|0x01; //"读数据
_nop_();
_nop_();
sck=0;
}
return j;
}
* SPI 串 行 总 线 是 68 系 列 单 片 机 的 接 口, 具 有 节 约 IO 口, 减 少 连 接 线 等 一 些 特 点。 现 在 使 用 SPI 总 线 接 口 的 芯 片 越 来 越 多, 但 是 51 单 片 机 没 有 SPI 总 线, 所 以 需 要 用 IO 口 来 模 拟。 上 面 的 程 序 模 拟 了 一 个 通 用 的 SPI 总 线, 只 需 要 定 义 好 sck/si/so, 就 可 以 使 用 了。
其 中 sck 是 串 行 时 钟
si 输 出
so 输 入
- 1
- 2
- 3
- 4
- 5
前往页