在线时间0 小时
UID364632
注册时间2012-6-13
NXP金币0
该用户从未签到
新手上路

- 积分
- 14
- 最后登录
- 1970-1-1
|
#include /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
#include "LCD.h"
byte ad_h;//ADC转换结果的高2位
byte ad_l;//ADC转换结果的低8位
byte ch_s;//通道选择
void MCG_Init(void){/*从FEI 转换到PEE 模式:外部晶体 = 8 MHz、总线频率 = 16 MHz*/
SOPT1 = 0x00; /* COP禁止, 停止模式禁止 */ /*FEI模式转换成FBE模式*/
MCGC2_BDIV = 0; /* 总线时钟为参考时钟 */
MCGC2_RANGE = 1; /* 选择为高频震荡源 */
MCGC2_HGO = 1; /* 外部震荡器高增益运行 */
MCGC2_EREFS = 1; /* 外部参考源为震荡器 */
MCGC2_ERCLKEN = 1; /* 外部参考时钟使能 */
while(!MCGSC_OSCINIT); /* 等待OSC初始化完成 */
MCGC1_CLKS = 0x02; /* 选择外部时钟参考源 */
MCGC1_RDIV = 0x07; /* 参考时钟除以128 */
MCGC1_IREFS = 0; /* 选择外部参考时钟 */
while(MCGSC_IREFST); /* 等待直到参考时钟源变成外部时钟源 */
while((MCGSC_CLKST)^(0x02)); /* 等待,直到选择为外部参考时钟 */ /*FBE模式转换成BLPE模式*/
MCGC2_LP = 1; /* 旁路模式中禁止FLL或PLL */
MCGC1_RDIV = 2; /* 参考时钟除以4 */
MCGC3_PLLS = 1; /* 选择PLL模式 */
MCGC3_VDIV = 4; /* PLL的值乘以16 */
while(!MCGSC_PLLST); /* 等待,直到PLLS时钟源是PLL时钟 */ /*BLPE模式转换成PBE模式*/
MCGC2_LP = 0; /* 旁路模式中激活FLL或PLL */
while(!MCGSC_LOCK); /* 等待,直到PLL锁定 */
MCGC1_CLKS = 0x00; /* PLL时钟选系统时钟 */ /*PBE模式转换成PEE模式*/
while((MCGSC_CLKST)^(0x03)); /* 等待,直到确定为PLL输出 */
/*MCGOUT=[(晶振时钟/RDIV)*VDIV]/BDIV*/
}
void Init_ADC(void)
{
ADCCFG=0x98;//低功耗模式,10位精度,ADCK=总线频率
ADCSC2=0x00;//0x00:软件触发,比较功能禁止
APCTL3=0x03;//通道引脚使能:ADPC16,ADPC17作为模拟信号输入
ch_s=0;//选择0通道
ADCSC1=0x50;//0x42:中断使能,单次转换,选择AD16,并启动了转换.
}
void main(void) {
char b[5];
char i=0,j;
DisableInterrupts;
MCG_Init();
//SPI();
//LCD_Init();
EnableInterrupts;
for(;;) {
//j=SPI_R();
/* LCD_P6x8Str_zimu(0,0,"ch_s:");
LCD_P6x8Str(48,0,ch_s/1000);
LCD_P6x8Str(56,0,(ch_s%1000)/100);
LCD_P6x8Str(64,0,(ch_s%100)/10);
LCD_P6x8Str(72,0,ch_s%10);*/
__RESET_WATCHDOG(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
interrupt VectorNumber_Vadc void ADC_ISR(void)
{
switch(ch_s)
{
case 0:
ad_h=ADCRH;
ad_l=ADCRL;
ADCSC1=0x60;//软件启动下一次转换,下一次转换将转换AD17通道的电压值
break;
case 1:
ad_h=ADCRH;
ad_l=ADCRL;
ADCSC1=0x50;//软件启动下一次转换,下一次转换将转换AD16通道的电压值
break;
default:
break;
}
asm(nop);//在此设置一个断点,观测ad_h和ad_l的变化
if(ch_s==0)
{
ch_s=1;
}
else
{
ch_s=0;
}
}
这个就是调试不出来
|
|