在论坛上看到一个姐姐写的程序,有些地方不懂 程序如下: #include "alt_types.h" #include <stdio.h> #include <unistd.h> #include "system.h" #include "altera_avalon_pio_regs.h" /* adc0809 ad_a select*/ void ad_a_select(int ad8switch) //选择8路模拟信号中的一路 { switch(ad8switch) { case 0x80: //IN7 IOWR_ALTERA_AVALON_PIO_DATA(AD_A_PIO_BASE,0x7); break; case 0x40: //IN6 IOWR_ALTERA_AVALON_PIO_DATA(AD_A_PIO_BASE,0x6); break; case 0x20: //IN5 IOWR_ALTERA_AVALON_PIO_DATA(AD_A_PIO_BASE,0x5); break; case 0x10: //IN4 IOWR_ALTERA_AVALON_PIO_DATA(AD_A_PIO_BASE,0x4); break; case 0x08: //IN3 IOWR_ALTERA_AVALON_PIO_DATA(AD_A_PIO_BASE,0x3); break; case 0x04: //IN2 IOWR_ALTERA_AVALON_PIO_DATA(AD_A_PIO_BASE,0x2); break; case 0x02: //IN1 IOWR_ALTERA_AVALON_PIO_DATA(AD_A_PIO_BASE,0x1); break; case 0x01: //IN0 IOWR_ALTERA_AVALON_PIO_DATA(AD_A_PIO_BASE,0x0); break; default: //warning printf("======warning======\n"); break; } } /* start adc0809*/
void ad_start(void) //adc0809转换程序 { int ad8s; //test the value of EOC: the value must be "1" printf("eoc_un ?=1: %d\n",IORD_ALTERA_AVALON_PIO_DATA(AD_EOC_PIO_BASE)); //set ad_start=0 IOWR_ALTERA_AVALON_PIO_DATA(AD_START_PIO_BASE,0); //set ad_ale=0 IOWR_ALTERA_AVALON_PIO_DATA(AD_ALE_PIO_BASE,0); //set ad_oe=0 IOWR_ALTERA_AVALON_PIO_DATA(AD_OE_PIO_BASE,0); //test the value of EOC: the value must be "1" printf("eoc_in ?=1: %d\n",IORD_ALTERA_AVALON_PIO_DATA(AD_EOC_PIO_BASE)); //get the value of AD_8SWITCH_PIO ad8s = IORD_ALTERA_AVALON_PIO_DATA(AD_8SWITCH_PIO_BASE); //set IN0~IN7 ad_a_select(ad8s,flag2); //set ad_ale=1 IOWR_ALTERA_AVALON_PIO_DATA(AD_ALE_PIO_BASE,1); //save the address into the flip-latch of address //set ad_ale=0 IOWR_ALTERA_AVALON_PIO_DATA(AD_ALE_PIO_BASE,0); //set ad_start=1 IOWR_ALTERA_AVALON_PIO_DATA(AD_START_PIO_BASE,1); //reset the register //set ad_start=0 IOWR_ALTERA_AVALON_PIO_DATA(AD_START_PIO_BASE,0); //start AtoD //test the value of EOC: the value must be "0" printf("eoc_t ?=0: %d\n",IORD_ALTERA_AVALON_PIO_DATA(AD_EOC_PIO_BASE)); while((IORD_ALTERA_AVALON_PIO_DATA(AD_EOC_PIO_BASE))!= 1) // whether the conversion of ADC is over:1 is over and the data have been saved into the flip-latch { printf("test eoc_f ?=1: %d\n",IORD_ALTERA_AVALON_PIO_DATA(AD_EOC_PIO_BASE)); } //set ad_oe=1 IOWR_ALTERA_AVALON_PIO_DATA(AD_OE_PIO_BASE,1); //put the data to the dataBus printf("ad_data is : %d\n",IORD_ALTERA_AVALON_PIO_DATA(AD_DATA_PIO_BASE)); printf("\n=============AtoD is successful!=================\n"); } int main(void) { while(1) { ad_start(); } } 程序中 printf("eoc_in ?=1: %d\n",IORD_ALTERA_AVALON_PIO_DATA(AD_EOC_PIO_BASE);请问这句有什么意义?做什么用的啊?试否是做测试? //set IN0~IN7 ad_a_select(ad8s,flag2); 这不是定义了一个吗?怎么还有一个啊? //get the value of AD_8SWITCH_PIO ad8s = IORD_ALTERA_AVALON_PIO_DATA(AD_8SWITCH_PIO_BASE);中的AD_8SWITCH_PIO_BASE 是什么意思啊? 是怎么来的?接到哪的啊??
希望斑竹和各位高人解释下,还有问这个问题的姐姐能告诉我一下,不胜感激~!!!!
[此贴子已经被作者于2007-5-14 12:58:47编辑过] |