此帖出自微控制器 MCU论坛
最新回复
我最近在调2407的AD,但AD就是不工作,进不了中断,不知为什么,这个问题一直困扰我,如果你知道,请指导一下,我QQ:305259825
我程序如下:
#include "lf2407reg.h"
int Data[20]; /* 定义一个数组,用于存放AD转换的结果*/
int i=0,k=0x00,j=0;
void initalcpu() /*系统初始化子程序*/
{
asm(" setc SXM "); /*符号位扩展有效*/
asm(" clrc OVM "); /*累加器中结果正常溢出*/
asm(" clrc CNF "); /*B0被配置为数据存储空间*/
*SCSR1=0X00FD; /*CLKIN=10M,CLKOUT=4*CLKIN=40M*/
*WDCR=0XE8; /*禁止看门狗*/
*IMR=0X0005; /*允许INT3 、INT1中断*/
*IFR=0X003F;
/*清除全部中断标志,"写1清0"*/
}
void timer4inital()
{
*T4CNT=0X0000; /*T4计数器清0*/
*T4CON=0X110C; /*T4为连续曾计数模式,4分频,且选用内部时钟源*/
*T4PR=5; /*500ns*/
*GPTCONB=0X4400;
*EVBIMRB=0X0001; /*T4寄存器周期使能*/
*EVBIFRB=0X003F; /*清除EVB中断标志,写"1"清"0"*/
}
void ADCinital()
{
*ADCTRL1=0X4910; /*启动停止、级联模式、ADC高级优先,采样频率设定为2M*/
*ADCTRL2=0X8400;
*MAXCONV=0X0000; /*选择0通道*/
*CHSELSEQ1=0X0000;
*CHSELSEQ2=0X0000;
*CHSELSEQ3=0X0000;
*CHSELSEQ4=0X0000;
}
void timer4SOC()
{
*T4CON=(*T4CON)|0X0040; /*启动定时器4*/
}
void interrupt adint()
{
asm(" setc INTM"); /* 关总中断*/
asm(" CLRC SXM");
Data=(*RESULT0)>>6; /*取AD转换结果*/
i++;
*T4CNT=0X0000; /*T4定时器清0*/
*EVBIFRB|=0X0001; /*定时器中断标志清0(写1清0)*/
*ADCTRL2|=0X4200; /*复位SEQ1,且清除ADC中断标志INTFLAGSEQ1,写1清0*/
asm(" clrc INTM"); /*开总中断*/
}
void interrupt nothing()
{
asm(" clrc INTM"); /*开总中断,因为一进中断,总中断就关掉了*/
return;
}
void cleardata() /*清存转换结果的数组*/
{
for(k=0;k<20;k++)
Data[k]=0;
}
main()
{
asm(" setc INTM");
initalcpu();
ADCinital();
timer4inital();
cleardata();
asm(" clrc INTM");
timer4SOC();
while(1)
{
if(i==20) /*输入的是100K的正弦波,采集完20个点就跳出*/
break;
}
}
详情
回复
发表于 2010-2-14 13:21
| ||
|
||
| |
|
|
此帖出自微控制器 MCU论坛
| ||
|
||
此帖出自微控制器 MCU论坛
| ||
|
||
| |
|
|
此帖出自微控制器 MCU论坛
| ||
|
||
此帖出自微控制器 MCU论坛
| ||
|
||
此帖出自微控制器 MCU论坛
| ||
|
||
| |
|
|
请教问题
此帖出自微控制器 MCU论坛
| ||
|
||
EEWorld Datasheet 技术支持