📄 ad.c
字号:
#define TIM_CTL *(int *)0x808020 /* Timer 0 Global Control */
#define TIM_CNT *(int *)0x808024 /* Timer 0 Counter */
#define TIM_PRD *(int *)0x808028 /* Timer 0 Period Register */
#define TIM_CTL_VALUE 0x601 /* TCLK as a timer pin; use internal clock source */
#define TIM_PRD_VALUE 1000 /* 60Mhz/sample frequency */
#define TIM_START 0xc0
#define AD_CS_ADDR *(int *)0xf00000 /* A/D base address */
#define AD_RS_ADDR *(int *)0xf00001 /* AD reset */
#define FIFO_RS_ADDR *(int *)0xf00002 /* FIFO reset */
/* FIFO mode; 1: Channel A; 2: Channel B; 4: Channel C */
#define Latch_Data *(int *)0xb00007
#define VC33RAM3 *(int *)0X803FFF /* 0x804000~0x8097ff 16k words internal */
#define VECS_EXINT0 *(int *)0x809fc1 /* external INT0 address */
extern cregister unsigned int IE,IF,ST,IOF;
interrupt void c_int99(void);
int buffer[1024]; /* 1024 : IDT7202 FIFO depth */
int buf1[1024];
int buf2[1024];
int buf3[1024];
int buf4[1024];
int buf5[1024];
int buf6[1024];
int i,j,temp,x,k,y,z,l,h;
main()
{
ST = 0x00; /* GIE = 0 */
IE = 0x01; /* Int0 enable */
IF = 0x00;
TIM_CTL = TIM_CTL_VALUE;
TIM_CNT = 0;
TIM_PRD = TIM_PRD_VALUE;
TIM_CTL = TIM_CTL_VALUE | TIM_START; /* Tmier 0 resets and starts */
IOF = 0x22; /* XFx:output pin and XFx=0 */
for(i=0; i<10; i++); /* delay */
Latch_Data = 1;
IOF=0x66; /* XFx:output pin and XFx=0 */
for(i=0; i<10; i++); /* delay */
FIFO_RS_ADDR = 0;
AD_RS_ADDR = 0;
for(i=0; i<1024; i++)
{
buffer[i] = 0;
buf1[i] = 0;
}
VECS_EXINT0 = 0x60000000|(unsigned)c_int99;
j = 0;
i = 0;
x = k = y = z = l = h = 0;
ST = 0x2000; /* GIE = 1 */
for(;;)
{
/*
buffer[j] = AD_CS_ADDR;
buffer[j] = buffer[j]<<16;
buffer[j] = buffer[j]>>16;
j++;
j = j%1024;
AD_CS_ADDR = 0xaa;
for(i=0; i<100; i++);
Sram_ADDR = 0x1111;
for(i=0; i<100; i++);
temp = AD_CS_ADDR;
for(i=0; i<100; i++);
*/
}
}
interrupt void c_int99(void)
{
temp = 511; /* why temp = 511 ? */
do
{
/* temp = IOF&0x80; */
buffer[j] = AD_CS_ADDR;
buffer[j] = buffer[j]<<16;
buffer[j] = buffer[j]>>16;
if((i = buffer[j]&0xf000) == 0x8000) /* D15 =1, data valid; A0 selected */
{
buf1[x] = buffer[j]&0x0fff;
x++;
x = x%1024 ;
}
if((i = buffer[j]&0xf000) == 0x9000) /* D15 =1, data valid; A1 selected */
{
buf2[y] = buffer[j]&0x0fff;
y++;
y = y%1024;
}
if((i = buffer[j]&0xf000) == 0xa000) /* D15 =1, data valid; B0 selected */
{
buf3[k] = buffer[j]&0x0fff;
k++;
k = k%1024;
}
if((i = buffer[j]&0xf000) == 0xb000) /* D15 =1, data valid; B1 selected */
{
buf4[l] = buffer[j]&0x0fff;
l++;
l = l%1024;
}
if((i = buffer[j]&0xf000) == 0xc000) /* D15 =1, data valid; C0 selected */
{
buf5[h] = buffer[j]&0x0fff;
h++;
h = h%1024;
}
if((i = buffer[j]&0xf000) == 0xd000) /* D15 =1, data valid; C1 selected */
{
buf6[z] = buffer[j]&0x0fff;
z++;
z = z%1024;
}
j++;
j = j%1024;
}while(temp--);
temp = 0; /* is it necessary? */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -