打印
[技术求助]

430汇编问题请教

[复制链接]
673|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
筱七121|  楼主 | 2015-1-17 15:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
430代码:定时器B定时每隔6.25微秒中断一次,在定时器B的中断处理函数中只有三句话:
ADC10CTL0 |= ADC10SC;
while(!(ADC10IFG & BIT0));
A[jj++] = ADC10MEM0;
这三句话,老板要让用汇编实现,可是小弟没怎么接触过汇编,所以来论坛请教下各位大神。
1、C语言代码中能够直接嵌入汇编语句吗?有什么格式要求吗?
2、小弟将自己写的汇编发上来,大家帮我看看。我现在只能实现每次中断采样只能放在数组的第一个元素内。

#include "msp430f5259.h"

NAME   asmfile
extern  jj
extern  A
PUBLIC  volatge_do
RSEG    CODE

volatge_do:
     push.w  R15
     bis.w  #0x1,&ADC10CTL0

lab1:
     bit.w  #0x1,&ADC10IFG
     jnc    lab1
     mov.w  &jj,R15
     rla.w  R15
     mov.w  &ADC10MEM0,A(R15)
    inc.w   R15
    pop.w   R15
   
    ret
END




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
数组A是定义在C语言中的存储AD采集数据的数组,jj是数组A的下标。
请各位大神们帮我找找里面的错误。

相关帖子

沙发
airwill| | 2015-1-17 16:20 | 只看该作者
一般的 C 编译器都支持嵌入汇编.
本人不用这个芯片, 不清楚如何写法. 建议查一下编译器手册吧

使用特权

评论回复
板凳
筱七121|  楼主 | 2015-1-19 09:42 | 只看该作者
airwill 发表于 2015-1-17 16:20
一般的 C 编译器都支持嵌入汇编.
本人不用这个芯片, 不清楚如何写法. 建议查一下编译器手册吧 ...

恩恩,还是谢谢斑竹啦

使用特权

评论回复
地板
xyz549040622| | 2015-1-26 15:20 | 只看该作者
简单呀,你先用c写好,编译为汇编语句,然后再简化下,就OK了

使用特权

评论回复
5
筱七121|  楼主 | 2015-1-26 16:12 | 只看该作者
xyz549040622 发表于 2015-1-26 15:20
简单呀,你先用c写好,编译为汇编语句,然后再简化下,就OK了

我也是这样做的,但是在这句A[jj++] = ADC10MEM0;这句编译器转换成汇编的时候,是这样写的
mov.w  &ADC10MEM0, 0x2404(R15).编译器用的是A数组在下载编译运行时的地址,我简化修改的时候不知道如何将这个地址改回数组?斑竹能帮我看看吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

61

帖子

0

粉丝