智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 7003|回复: 14
打印 上一主题 下一主题

9S12XS四路AD转换

  [复制链接]

1

主题

2

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
308
威望
217
贡献
69
兑换币
28
注册时间
2009-3-28
在线时间
11 小时
跳转到指定楼层
1#
发表于 2011-3-22 10:28:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
/*
**********************************************************************************
*
* 工程名称:9S12XS AD TO RS232
* 功能描述:结合飞思卡尔16位单片机MC9S12XS128完成4路AD采集,并通过RS232发送到上位机。
* IDE环境: Metrowerks CodeWarrior 5.90
* 组成文件:
* main.c
*  
* 说明: 本版本为AD及RS232通讯程序早期版本,还有待更进一步完善                                             
* 日期:2011-3-6
*                             (c) Copyright 2011,Yoncos
*                                        All Rights Reserved
*
*  
* By   : Yoncos
**********************************************************************************/

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

byte  ad_value0;          //保存AD转换结果高位
byte ad_value1;
byte ad_value2;
byte ad_value3;
byte  ad_value0_1;          //保存AD转换结果地位
byte ad_value1_1;
byte ad_value2_1;
byte ad_value3_1;

/***---------------延时程序---------------***/
void Delay(int i)

{        

int j;

for(;i>0;i--)

for(j=500;j>0;j--);



}

/***---------------时钟初始化程序---------------***/
//这也是前辈写的,未改动
void InitBusClk(void)

{

CLKSEL=0X80;                  //PLLSEL  1 : Bus Clock=PLLCLK/2

//          0 : Bus Clock=OSCCLK/2

PLLCTL_PLLON=1;             //开启PLL

SYNR=0;

REFDV=0X03;                 //OSCCLK=16MHz

//PLLCLK=2*OSCCLK*[(1+SYNR)/(1+REFDV]=32/4=8MHz

while(!(CRGFLG_LOCK==1));    //直到LOCK=1,when PLL is ready,退出循环

CLKSEL_PLLSEL=1;           

//PLLSEL  1 : Bus Clock=PLLCLK/2=8MHz/2=4MHz

//         0 : Bus Clock=OSCCLK/2=16M/2=8MHz

}

/***---------------AD初始化程序---------------***/
//部分是参考前辈的,CTL345根据自己的需求设置。此处已设置打开0123四个通道,保存结果到对应ATD0DRx(x表示结果寄存器编号)
void InitAD(void)

{   

ATD0CTL2 = 0XC0;          // 1100 0000    启动A/D,

ATD0CTL3=0X24;
//00100100 打开0/1/2/3通道,FIFO打开结果保存到相应的结果寄存器

ATD0CTL4 = 0XE1;         // 11100001   8位精度, 16AD采样时间

ATD0CTL5=0X30;   //3月22日修改,多通道,左对齐,无符号,连续转换,起始通道ATD0

ATD0DIEN = 0X00;          // 数字输入 disabled

}


/***---------------主程序---------------***/

void main(void)

{

_DISABLE_COP();        // 关看门狗  

InitBusClk();

InitAD();

DDRB=0XFF;            // 设PORTB为输出口

PORTB=0x00;

EnableInterrupts;          // 开放总中断


for(;;)

{

while(!ATD0STAT2);     //等待转换结束,退出循环

{


ad_value0=(byte)ATD0DR0H;     //0通道高位数据,下同123通道

ad_value1=(byte)ATD0DR1H;

ad_value2=(byte)ATD0DR2H;

ad_value3=(byte)ATD0DR3H;

ad_value0_1=(byte)ATD0DR0L;     //0通道低位数据,下同123通道

ad_value1_1=(byte)ATD0DR1L;

ad_value2_1=(byte)ATD0DR2L;

ad_value3_1=(byte)ATD0DR3L;

}

Delay(200);          //延时

PORTB=ad_value0;          //B口有LED,就让它来显示结果吧。调试的时候把value的后缀改一下就能分别检测个个通道


}   

}

//到此结束

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

0

主题

8

帖子

0

精华

注册会员

Rank: 2

积分
117
威望
66
贡献
39
兑换币
29
注册时间
2013-3-15
在线时间
6 小时
15#
发表于 2013-3-19 14:33:08 | 只看该作者
回复 支持 反对

使用道具 举报

2

主题

63

帖子

0

精华

高级会员

Rank: 4

积分
922
威望
639
贡献
201
兑换币
0
注册时间
2011-6-17
在线时间
41 小时
14#
发表于 2012-3-30 16:46:40 | 只看该作者
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

注册会员

Rank: 2

积分
138
威望
112
贡献
22
兑换币
0
注册时间
2012-3-28
在线时间
2 小时
13#
发表于 2012-3-28 23:15:18 | 只看该作者
既然是8位转换精度,又是左对齐,低8位有读的必要吗?
回复 支持 反对

使用道具 举报

3

主题

35

帖子

0

精华

高级会员

Rank: 4

积分
683
QQ
威望
487
贡献
106
兑换币
0
注册时间
2011-3-10
在线时间
45 小时
12#
发表于 2012-3-13 11:20:08 | 只看该作者
寄存器是16位的,定义的变量是8位的,
回复 支持 反对

使用道具 举报

2

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
QQ
威望
146
贡献
41
兑换币
0
注册时间
2011-11-18
在线时间
8 小时
11#
发表于 2012-1-22 13:58:41 | 只看该作者
不是高低位读取会出错吗?????
回复 支持 反对

使用道具 举报

1

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
威望
241
贡献
53
兑换币
0
注册时间
2011-10-9
在线时间
17 小时
10#
发表于 2011-12-4 17:34:46 | 只看该作者
求楼主解释为什么分高低位~
回复 支持 反对

使用道具 举报

17

主题

109

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1270
QQ
威望
740
贡献
192
兑换币
10
注册时间
2011-4-15
在线时间
169 小时
9#
发表于 2011-10-18 21:42:43 | 只看该作者
同样疑问!!
回复 支持 反对

使用道具 举报

19

主题

298

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3383

优秀会员奖章活跃会员奖章

威望
1657
贡献
1078
兑换币
281
注册时间
2011-6-8
在线时间
324 小时
8#
发表于 2011-10-18 20:59:50 | 只看该作者
8错  呵呵
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
威望
213
贡献
52
兑换币
0
注册时间
2011-9-13
在线时间
29 小时
7#
发表于 2011-10-14 20:21:19 | 只看该作者
我都有同样的疑问。。能解答一下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-3 12:07 , Processed in 0.057660 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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