极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12880|回复: 0

急急急!求指导DSP使用汇编语言控制GPIO的操作

[复制链接]
发表于 2017-1-6 11:45:15 | 显示全部楼层 |阅读模式
我想用F2812的gpio口模拟一个通信信号,对频率一致性要求很严格,目前直接用C语言写的方式是:
        GpioDataRegs.GPDDAT.all = period;
        period &= 0x62;
        asm("RPT    #31 || NOP");
        GpioDataRegs.GPDDAT.all = period;
        period |= 0x1;
        asm("RPT    #31 || NOP");
其中period 是一个unsigned int 的变量,用CCS查看了反汇编出来的汇编代码,发现编译器会随机在上下两条GPIO中插入数量不等汇编指令,造成最终输出的信号频率一致性比较差,有的长有的短,但是我又不懂DSP的汇编言语,求大神告诉我这四条指令:
“        GpioDataRegs.GPDDAT.all = period;
        period &= 0x62;
        GpioDataRegs.GPDDAT.all = period;
        period |= 0x1;“
用汇编怎么内嵌编写。

这里贴上ccs反汇编的代码:
"AND    AL, *+XAR4[1], #0xff"
                "MOV    @0x2c, AH"
                "RPT    #31 || NOP"
                "ANDB         AH, #0x62"
                "MOV          @0x2c, AH"
                "RPT    #31 || NOP"
                "MOVW         DP, #0xfe46"
                "AND          AL, @0x27, #0xff00"
                "MOVW         DP, #0x1c3"
                "OR           AL, @AH"
                "MOV          AH, @AL"
                "LSR          AH, 8"
                "MOV          @0x2c, AH"
                "RPT    #31 || NOP"
                "ANDB         AH, #0x62"
                "ORB          AL, #0x1"
                "MOVB         AL.MSB, @AH"
                "OR           @AL, #0x0100"
                "MOV          @0x2c, AH"
                "MOVW         DP, #0xfe46"
                "MOV          @0x27, AL"
                "RPT    #31 || NOP"
                "MOVW         DP, #0x1c3"
                "AND          AH, *+XAR4[2], #0xff"
                "MOV          @0x2c, AH"
                "RPT    #31 || NOP"
                "ANDB         AH, #0x62"
                "MOV          @0x2c, AH"
                "RPT    #31 || NOP"
                "MOVW         DP, #0xfe46"
                "AND          AL, @0x28, #0xff00"
                "MOVW         DP, #0x1c3"
                "OR           AL, @AH"
                "MOV          AH, @AL"
                "LSR          AH, 8"
                "MOV          @0x2c, AH"
                "RPT    #31 || NOP"
                "ANDB         AH, #0x62"
                "ORB          AL, #0x1"
                "MOVB         AL.MSB, @AH"
                "OR           @AL, #0x0100"
                "MOV          @0x2c, AH"
                "MOVW         DP, #0xfe46"
                "MOV          @0x28, AL"
                "RPT    #31 || NOP"
                "MOVW         DP, #0x1c3"
                "AND          AH, *+XAR4[3], #0xff"
                "MOV          @0x2c, AH"
                "RPT    #31 || NOP"
                "ANDB         AH, #0x62"
                "MOV          @0x2c, AH"
                "RPT    #31 || NOP"
                "MOVW         DP, #0xfe46"
                "AND          AL, @0x29, #0xff00"
                "MOVW         DP, #0x1c3"
                "OR           AL, @AH"
                "MOV          AH, @AL"
                "LSR          AH, 8"
                "MOV          @0x2c, AH"
                "RPT    #31 || NOP"
                "ANDB         AH, #0x62"
                "ORB          AL, #0x1"
                "MOVB         AL.MSB, @AH"
                "OR           @AL, #0x0100"
                "MOV          @0x2c, AH"
                "RPT    #31 || NOP"
回复

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 22:20 , Processed in 0.038771 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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