找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1850|回复: 0
打印 上一主题 下一主题
收起左侧

非常经典的C语言内嵌汇编实现SPI写函数(执行效率很高)

[复制链接]
跳转到指定楼层
楼主
ID:149876 发表于 2020-11-12 15:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机源程序如下:
//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置高
        }
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表