[技术求助] 430汇编问题请教

[复制链接]
928|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了
 楼主| 筱七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

粉丝
快速回复 在线客服 返回列表 返回顶部