求教ICCAVR编译中出现的问题

2019-03-24 21:15发布

各位大哥,小弟刚学单片机遇到一个问题,希望大家不吝赐教,先行谢过了。 单片机用的是ATMEGA8L,编译用的是ICCAVR,可是一编译就显示出错 F:AVRICCAVRiccinimakew -f test1.mak iccavr -c -IF:AVRICCAVRiccinclude -e -l -g -Wa-W F:AVRICCAVR新建文件夹 est1.c iccavr -o test1 -LF:AVRICCAVRicclib -g -Wl-W -bfunc_lit:0.0x2000 -dram_end:0x25f -bdata:0x60.0x25f -dhwstk_size:16 -fihx_coff -S2 @test1.lk !E F:AVRICCAVRicclibcrtAVR.o(41): Code address 0 already contains a value !E F:AVRICCAVRicclibcrtAVR.o(41): Code address 0x1 already contains a value F:AVRICCAVRiccinimakew.exe: Error code 1 Done: there are error(s). Exit code: 1 其中出错位置在 !E F:AVRICCAVRicclibcrtAVR.o(41): Code address 0 already contains a value !E F:AVRICCAVRicclibcrtAVR.o(41): Code address 0x1 already contains a value 这里,它说LIB 里面的这个文件CRTAVR里面的第41行的问题,到底是什么意思呢,我应该怎么改我的程序呢,谢谢! 程序如下: //Target:atmega8 //Crystal:8Mhz #include <iom8v.h> #include <macros.h> /*——————————————————————————————————————————————*/ /*函数名:I/O 口初始化*/ void init_IO(void) {DDRB=0X08; //PB3输出PWM控制电机转速 DDRD=0XFF; DDRC=0X30; //PD0-PD3作为输出控制功率管,PC4,PC5作为输入 } /*——————————————————————————————————————————————*/ /*函数名: 初始化ADC转换*/ void init_adc(void) { ADCSRA=(1<<ADEN)|0X82; //使能ADC,用时钟4分频 } /*——————————————————————————————————————————————*/ /*函数名:初始化定时器T2 功能说明:把T2作为PWM输出,控制电动机下侧功率管的开关,从而控制电动机速度 */ void time2_init (void) { TCCR2=(0<<WGM21)|(1<<WGM20)|(1<<COM21)|(1<<COM20)|(0<<CS22)|(0<<CS21)|(1<<CS20); //相位修正模式,1分频 } /*——————————————————————————————————————————————*/ /*函数名:读取ADC单端通道 返回参数:转换结果ADC */ unsigned int read_adc() /*用查询方式读取ADC单端通道*/ { ADMUX=(0<<REFS1)|(1<<REFS0)|(1<<ADLAR)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0); //选择外部AVCC做参考电压,左对齐,第0个通道 ADCSRA|=(1<<ADSC); //启动AD转换 while ((ADCSRA&(1<<ADIF))==0); //检测AD转换结束 ADCSRA|=(1<<ADIF); //写1清除标志位 return ADCH; } /*——————————————————————————————————————————————*/ //函数名:控制功率管 void control ( ) { if ((PINC&=0B00100000)==0B00100000) { if ((PINC&=0B00010000)==0B00010000) PORTD|=0B00001001; else PORTD|=0B00000110; } } //—————————————————————————————————————————————— void main (void ) { init_IO(); init_adc(); read_adc(); OCR2=ADCH; time2_init(); while(1) { control(); } } 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。