标题: 非常经典的C语言内嵌汇编实现SPI写函数(执行效率很高) [打印本页]

作者: yuhuidx    时间: 2020-11-12 15:38
标题: 非常经典的C语言内嵌汇编实现SPI写函数(执行效率很高)
单片机源程序如下:
//SPI I/O定义
#define PCSN  PA //MCU 端口选择,用户需要初始化输入/输出属性
#define PSCK  PA
#define PMOSI PA
#define PMISO PA
#define CSN   0x03 //PA3
#define SCK   0x04 //PA4
#define MOSI  0x05 //PA5
#define MISO  0x06 //PA6

void SPI_WriteByte(char Data);

//*****************************************************************************
//                                 SPI写函数
//*****************************************************************************
void SPI_WriteByte(char Data)
{
        char i;
        __asm
        {
        BCC PCSN,CSN                         //CS低
            CLR (&i&) % 0x80         //循环8次
            JBC (&Data&) % 0x80, 7   //高位先发
            BSS PMOSI,MOSI                         //数据1则输出高电平
            JBS (&Data&) % 0x80, 7
            BCC PMOSI,MOSI                         //数据0则输出低电平
            RLB (&Data&) % 0x80      //Data左移1位
        BSS PSCK, SCK            //SCK高电平
        NOP
        NOP               
        INC (&i&) % 0x80, 1
            BCC PSCK,SCK                         //SCK低电平                              
            MOVI  0x08
            XOR  (&i&) % 0x80, 0     //判定循环次数
            JBS PSW, Z               
            GOTO  $-0x0D             //若循环次数未到则向上跳转13行
            BSS PCSN,CSN                         //CS置高
        }
}





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1