论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
图2所示为MCS51系列单片机与存储器X25F008(E2PROM)的硬件连接图,图2中,P1.0模拟MCU的数据输出端(MOSI),P1.1模拟SPI的SCK输出端,P1.2模拟SPI的从机选择端,P1.3模拟SPI的数据输入端(MISO)。下面介绍用MCS51单片机的汇编语言模拟SPI串行输入、串行输出和串行输入/输出的3个子程序,实际上,这些子程序也适用于在串行时钟的上升沿输入和下降沿输出的其它各种串行外围接口芯片(如A/D转换芯片、网络控制器芯片、LED显示驱动芯片等)。对于下降沿输入、上升沿输出的各种串行外围接口芯片,只要改变P1.1的输出电平顺序,即先置P1.1为低电平,之后再次置P1.1为高电平,再置P1.1为低电平……,则这些子程序也同样适用。
3.1 MCU串行输入子程序SPIIN
从X25F008的SPISO线上接收8位数据并放入寄存器R0中的应用子程序如下:
SPIIN:SETB P1.1 ;使P1.1(时钟)输出为1
CLR P1.2 ;选择从机
MOV R1,#08H ;置循环次数
SPIIN1:CLR P1.1 ;使P1.1(时钟)输出为0
NOP ;延时
NOP
MOV C,P1.3 ;从机输出SPISO送进位C
RLC A ;左移至累加器ACC
SETB P1.1 ;使P1.0(时钟)输出为1
DJNZ R1,SPIIN1 ;判断是否循环8次(8位数据)
MOV R0,A ;8位数据送R0