智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6993|回复: 19
打印 上一主题 下一主题

[编程类] MC9S12单片机ATD模块

  [复制链接]

2

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
QQ
威望
265
贡献
20
兑换币
0
注册时间
2010-3-7
在线时间
9 小时
跳转到指定楼层
#
发表于 2010-3-7 19:01:54 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
1贡献
问题:在调试单片机ATD模块时,输入模拟电压为2V,单片机测出的数据为192,或者是0,或者是64,总是得不到正确的结果,参考电压VRH,VRL用万用表测试分别是4.096V,0V,每个通道测试出的结果基本上都是一样的。源程序如下,大家看看有什么问题没?

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
volatile unsigned char ad_word=0;
void main()
  {
      unsigned int i = 0;
      EnableInterrupts;
      ATD0CTL2  = 0xc2;             //使能A/D,快速清除标志,在队列转换完成后产生中断
      ATD0CTL3  = 0x08;         //转换队列长度为1,转换完成后暂停
      ATD0CTL4  = 0x80;         //8位精度, 2个时钟, ATDClock=[BusClock*0.5]/[PRS+1]
      ATD0CTL5  = 0xa6;           //结果右对齐,单通道采样,通道选择为通道4
      ATD0DIEN  = 0x00;            // 禁止数字输入
      DDRB      = 0xff;
      PORTB     = 0x00;
      for(;;)
        {
            
        }
  }
  
#pragma CODE_SEG NON_BANKED
void  interrupt 22 AD_Comper(void)
  {
        ad_word =  ATD0DR0L;
         PORTB     =   ad_word;   
  }

65

主题

514

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2110

论坛骨干奖章活跃会员奖章优秀会员奖章

威望
945
贡献
561
兑换币
564
注册时间
2012-10-15
在线时间
302 小时
19#
发表于 2013-1-25 19:41:56 | 只看该作者
xiaowei19890228 发表于 2010-3-7 20:16
已解决!
原因是这样的,原来我所参考的书籍中的有关寄存器的定义和数据手册上的定义不一样,向数据手册中 ...

古德

回复

使用道具 举报

1

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
威望
341
贡献
83
兑换币
4
注册时间
2010-2-23
在线时间
37 小时
18#
发表于 2011-3-6 07:40:09 | 只看该作者
谢谢楼主
回复

使用道具 举报

12

主题

110

帖子

0

精华

高级会员

Rank: 4

积分
661
威望
354
贡献
95
兑换币
4
注册时间
2010-9-29
在线时间
106 小时
17#
发表于 2011-2-26 19:26:21 | 只看该作者
终于知道为什么了,去官网上下个S12XS128的资料吧,寄存器的定义和那些参考书上的真的不一样。
谢谢楼主~~
回复

使用道具 举报

12

主题

110

帖子

0

精华

高级会员

Rank: 4

积分
661
威望
354
贡献
95
兑换币
4
注册时间
2010-9-29
在线时间
106 小时
16#
发表于 2011-2-26 17:49:14 | 只看该作者
刚试了一下这个程序,太给力了~~谁能解释下,谢谢
回复

使用道具 举报

4

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
366
威望
289
贡献
51
兑换币
0
注册时间
2009-10-15
在线时间
13 小时
15#
发表于 2010-5-5 16:23:49 | 只看该作者
很解决问题
回复

使用道具 举报

1

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
408
威望
314
贡献
74
兑换币
20
注册时间
2010-3-24
在线时间
10 小时
14#
发表于 2010-5-3 16:52:38 | 只看该作者
高手啊!!!
回复

使用道具 举报

4

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
440
威望
282
贡献
152
兑换币
0
注册时间
2010-1-16
在线时间
3 小时
13#
发表于 2010-4-17 14:21:04 | 只看该作者
太谢谢啦,搞定
回复

使用道具 举报

4

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
440
威望
282
贡献
152
兑换币
0
注册时间
2010-1-16
在线时间
3 小时
12#
发表于 2010-4-17 14:05:40 | 只看该作者
请问楼主是MC9S12XS128的吗?谢谢
回复

使用道具 举报

26

主题

76

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1557

优秀会员奖章

威望
424
贡献
913
兑换币
60
注册时间
2008-10-21
在线时间
110 小时
11#
发表于 2010-4-13 09:37:12 | 只看该作者
回复 2# xiaowei19890228


    这是检测四路信号的吧,在B口呢显示这么多的数据吗?还有
PORTB = (byte) (AD_wData >> 2);
这句做什么?(移位?)
回复

使用道具 举报

11

主题

212

帖子

0

精华

常驻嘉宾

侠客

Rank: 8Rank: 8

积分
5969

论坛元老奖章

威望
2649
贡献
3234
兑换币
0
注册时间
2010-1-13
在线时间
43 小时
10#
发表于 2010-4-13 08:33:16 | 只看该作者
直到今天我才发现这个被忽视的问题,太感谢楼主了!
回复

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-28 13:02 , Processed in 0.049053 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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