这个程序提示ADC_ADDR没有定义,但是我在ADC_INIT()里面已经定义过了,让后我在中断程序中重新定义一边,就出现了很多的错误,<br /> 如果您有做过TLV1578,希望您能发一份给我参考一下 非常感谢<br />邮箱:lou0908@126.com<br /><br />#pragma CODE_SECTION(vect,"vect")<br />//#define ADC_ADDR (int *)0x0fffe<br />unsigned int *pmem=0;<br />#define IMR *(pmem+0x0000)<br />#define IFR *(pmem+0x0001)<br />#define PMST *(pmem+0x001d)<br />#define SWCR *(pmem+0x002b)<br />#define SWWSR *(pmem+0x0028)<br />#define CLKMD *(pmem+0x0058)<br />#define ST1 *(pmem+0x007)<br />#define PRD0 *(pmem+0x0025) /* timer0 period register */<br />#define TCR0 *(pmem+0x0026) /* timer0 control register */<br /><br />int output[256];<br />int length;<br /><br />/*--------------------------------------------------------------**<br />**函数原型:void cpu_init() **<br />**函数功能:CPU初始化 **<br />**入口参数:无 **<br />**--------------------------------------------------------------*/<br />void cpu_init() /*初始化DSP*/<br />{ <br /> asm(" ssbx intm");<br /> asm(" ssbx xf "); //总清零<br /> PMST=0x1c00; //<br /> SWWSR=0x0000; //不插入等待时间<br /> //SWCR=0x0001; //<br /> IFR=0xffff; //消除所有尚未处理完成的中断<br /> IMR=0x01; //开中断0<br /> CLKMD=0x1007; //PLL=PLL x 2<br /> //asm(" rsbx xf "); //打开数据口<br /> asm(" rsbx intm"); //开放中断 <br />}<br />/*-----------------------------------------------------------**<br />**函数原型:void ad_init() **<br />**函数功能:实现tlv1578的初始子的写入 **<br />**-----------------------------------------------------------*/<br />void ad_init()<br />{ <br /> ioport unsigned int *ADC_ADDR;<br /> ADC_ADDR=(unsigned int *)0xfffe;<br /> <br /> *ADC_ADDR=0x0080;<br /> asm("nop");<br /> asm("nop");<br /> asm("nop");<br /> asm("nop");<br /> asm("nop");<br /> *ADC_ADDR=0x0140;<br /> asm("nop");<br /> asm("nop");<br /> asm("nop");<br /> asm("nop");<br />}<br />/*------------------------------------------------------------**<br />**函数原型:interrupt void INT0(void) **<br />**函数功能:采样中断程序 **<br />**------------------------------------------------------------*/<br />interrupt void INT0(void)<br />{ <br /> asm(" rsbx xf "); //发出读信号,A/D受到数据后开始下一个数据采样<br /> asm("nop");<br /> asm("nop");<br /> asm("nop");<br /> asm("nop");<br /> asm("nop");<br /> output[length]=*ADC_ADDR;<br /> length++;<br /> length%=256;<br /> if(length==0)<br /> {<br /> asm(" nop"); //此处设软件断点<br /> }<br /> asm("nop");<br /> asm("ssbx xf");<br />} <br /><br />/*------------------------------------------------------------**<br />**函数原型:void main **<br />**函数功能:主函数 **<br />**------------------------------------------------------------*/<br />void main()<br />{ <br /> cpu_init(); <br /> ad_init();<br /> for(;;)<br /> { };<br />}<br />/*------------------------------------------------------------**<br />**函数原型:void vect() **<br />**函数功能:中断矢量入口参数 **<br />**------------------------------------------------------------*/<br /><br />void vect()<br />{<br /> asm(" .ref _c_int00");<br /> asm(" .ref _INT0");<br /><br /> asm(" b _c_int00"); /* reset */<br /> asm(" nop");<br /> asm(" nop");<br /> <br /> asm(" rete"); /* nmi */<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /> <br /> asm(" rete"); //<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /> <br /> asm(" rete");<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /> <br /> asm(" rete");<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /> <br /> asm(" rete");<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /> <br /> asm(" rete");<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /> <br /> asm(" rete");<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /> <br /> asm(" rete");<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" rete");<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" rete");<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" rete");<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" rete");<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" rete");<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" rete");<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" rete");<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /> <br /> asm(" b _INT0"); /* int0 */<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /> <br /> asm(" rete"); /* int1 */<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" rete"); /* int2 */<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" nop");<br /> asm(" nop"); /* tint0 */<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" rete"); /* brint0 */<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" rete"); /* bxint0 */<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" rete"); /* dmac0 */<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" rete"); /* tint1 */<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" nop");<br /> asm(" nop"); /* int3 */<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" rete"); /* hpint */<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /><br /> asm(" rete "); /* brint1 */<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /> <br /> asm(" rete"); /* bxint1 */<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /> <br /> asm(" rete"); /* dmac4 */<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /> <br /> asm(" rete"); /* dmac5 */<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /> <br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br /> asm(" nop");<br />}<br /><br /><br /> |
|