[讨论] MSP430F5529A如何操作内部寄存器?

SYW   2015-7-9 20:16 楼主
请问程序如何读取内部寄存器的数据?

现在想做一个电子秤,将ADC转换的结果显示到1602上,但是读不到寄存器ADC12MEM0的数据,求大神指教!

程序是这么写的:


void main( void )

{



  WDTCTL = WDTPW + WDTHOLD;

  LCD_Init();

  char *ptr ;

ptr=(*(volatile unsigned char *))0x7020u; //第一个ADC存储器MEM0的地址

    Dogs102x6_stringDrawXY(2,10,"Press the key to initialize!",0);

  Dogs102x6_stringDrawXY(8,33,"The Weight Is:",0);

  Dogs102x6_stringDrawXY(20,49,ptr,0);

  Dogs102x6_stringDrawXY(85,50,"g",0);

  while (1);

}


这句话报了错,错误如下:

QQ图片20150709201232.png



求问该如何解决?要怎么才能读取内部寄存器的内容呢?

我刚刚接触单片机,因为要做项目有很多愚蠢的问题,希望大家多多鞭策我,谢谢!

另外还希望这个显示程序能够通过ADC的转换完毕的信号实现中断的功能,请问是把这个显示程序写在中断向量中吗?

谢谢!
  • QQ图片20150709201042.jpg

回复评论 (10)

我也不是很懂,不过,从楼主贴出来的代码中没有看到ADC采集的程序,又怎么会有数据呢,而且寄存器的地址和别名的映射不是已经在器件的头文件中定义过了吗,直接使用别名进行操作就行了
刻苦学习,共同进步
点赞  2015-7-9 20:55
引用: 迈尔风随 发表于 2015-7-9 20:55
我也不是很懂,不过,从楼主贴出来的代码中没有看到ADC采集的程序,又怎么会有数据呢,而且寄存器的地址和 ...

这个是两部分,就是我只负责后续的处理,前面ADC是另一个人在做。所以没有写哈~
如果知道了寄存器的别名是ADC12MEM0,该怎么操作才能取数据出来呢?
谢谢啦
点赞  2015-7-9 21:20
引用: SYW 发表于 2015-7-9 13:20
这个是两部分,就是我只负责后续的处理,前面ADC是另一个人在做。所以没有写哈~
如果知道了寄存器的别名 ...

dat = ADC12MEM0;就可以了
刻苦学习,共同进步
点赞  2015-7-9 21:51
为什么不是这样:
ptr=(volatile unsigned char *)0x7020u
点赞  2015-7-10 00:01
实现什么中断?你要做电子秤的话应该会用到两个中断,一个是按键中断,按下按钮,电子秤显示数值。第二个是时间中断,显示3s内无任何操作则430进入低功耗模式。不知道我理解的对不对?
点赞  2015-7-10 03:26

7楼 SYW 

引用: msp430_now 发表于 2015-7-10 03:26
实现什么中断?你要做电子秤的话应该会用到两个中断,一个是按键中断,按下按钮,电子秤显示数值。第二个是 ...

谢谢,其实差不多啦,我的想法是直接在ADC转换的中断响应里把显示数值的部分加上去,同时语音芯片报出读数。做完这些之后再进行时间中断,那么这个时间中断就是嵌套咯?
问题是:
第一,语音芯片需要一个使能信号,本来想用ADC转换完成的信号做它的使能,但是MSP430的这个完成信号是怎么取出来的?能否从某个端口输出到外部的语音芯片呢?
第二,嵌套的中断除了需要重新打开总中断(_EINT(); )外,还需要什么命令呢?又该如何返回到最开始的状态呢?
谢谢了!这是第一次接触单片机,学习的时间又很短,让你见笑啦
点赞  2015-7-10 09:39

8楼 SYW 

引用: 迈尔风随 发表于 2015-7-9 21:51
dat = ADC12MEM0;就可以了

==是的呢,例程里看到了。谢谢啦
点赞  2015-7-10 09:52
引用: SYW 发表于 2015-7-10 09:39
谢谢,其实差不多啦,我的想法是直接在ADC转换的中断响应里把显示数值的部分加上去,同时语音芯片报出读 ...

可以的,你可以使用callback,一旦你的adc得到了正确的值,就呼叫语音芯片报值,同时产生一个enable。
你不用使用循环嵌套,timer的中断可以作为计时器使用,在某个时间节点后,发生变化,这个应该会很容易实现。
点赞  2015-7-11 03:41
引用: msp430_now 发表于 2015-7-11 03:41
可以的,你可以使用callback,一旦你的adc得到了正确的值,就呼叫语音芯片报值,同时产生一个enable。
...

好的,谢谢。我去查查callback功能。还有想问一下,关闭显示屏需要的是哪一种模式呢?LMP3吗?但是进入后貌似显示屏并没有关闭,还是有文字显示的。
谢谢啦
点赞  2015-7-11 14:42
引用: SYW 发表于 2015-7-11 14:42
好的,谢谢。我去查查callback功能。还有想问一下,关闭显示屏需要的是哪一种模式呢?LMP3吗?但是进入后 ...

LMP3是说MCU进入低功耗模式,这个时候所有的管脚保持进入前的状态。
但是你的设计中明显LCD是耗电大户,那么你需要在进入LPM3之前先改变IO状态,将LCD关掉,再进入LPM3模式,进一步降低系统功耗。
点赞  2015-7-12 01:03
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复