wm_create 发表于 2005-7-14 16:43:12

请教马老师,我用codevision编的程序 函数体都不能正常返回。不知道是什么原因。

用向导生成的代码,只把初始化端口的语句包含在一个函数里面 就不能正常返回了

machao 发表于 2005-7-14 22:58:29

把代码贴上来看。

wm_create 发表于 2005-7-15 09:00:49

/*



麻烦高手们帮忙指点一下 ,代码很简单,初次使用AVR。



*/

#include <mega64.h>   

#include <stdio.h>

#include <delay.h>





void Init_port(void)

{





// Input/Output Ports initialization

// Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

   PORTA=0x00;

   DDRA=0x00;



// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

   PORTB=0x00;

   DDRB=0x00;



// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

   PORTC=0x00;

   DDRC=0x00;



// Port D initialization

// Func7=Out Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=1 State6=T State5=T State4=T State3=T State2=T State1=T State0=T

   PORTD=0x80;

   DDRD=0x80;



// Port E initialization

// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=1 State2=1 State1=T State0=T

   PORTE=0x0C;

   DDRE=0x0C;



// Port F initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

   PORTF=0x00;

   DDRF=0x00;



// Port G initialization

// Func4=In Func3=In Func2=In Func1=In Func0=In

// State4=T State3=T State2=T State1=T State0=T

   PORTG=0x00;

   DDRG=0x00;



// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

   ASSR=0x00;

   TCCR0=0x00;

   TCNT0=0x00;

   OCR0=0x00;



// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// OC1C output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

   TCCR1A=0x00;

   TCCR1B=0x00;

   TCNT1H=0x00;

   TCNT1L=0x00;

   ICR1H=0x00;

   ICR1L=0x00;

   OCR1AH=0x00;

   OCR1AL=0x00;

   OCR1BH=0x00;

   OCR1BL=0x00;

   OCR1CH=0x00;

   OCR1CL=0x00;



// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

   TCCR2=0x00;

   TCNT2=0x00;

   OCR2=0x00;



// Timer/Counter 3 initialization

// Clock source: System Clock

// Clock value: Timer 3 Stopped

// Mode: Normal top=FFFFh

// OC3A output: Discon.

// OC3B output: Discon.

// OC3C output: Discon.

   TCCR3A=0x00;

   TCCR3B=0x00;

   TCNT3H=0x00;

   TCNT3L=0x00;

   ICR3H=0x00;

   ICR3L=0x00;

   OCR3AH=0x00;

   OCR3AL=0x00;

   OCR3BH=0x00;

   OCR3BL=0x00;

   OCR3CH=0x00;

   OCR3CL=0x00;



// External Interrupt(s) initialization

// INT0: Off

// INT1: On

// INT1 Mode: Falling Edge

// INT2: Off

// INT3: Off

// INT4: Off

// INT5: Off

// INT6: Off

// INT7: Off

   EICRA=0x08;

   EICRB=0x00;

   EIMSK=0x02;

   EIFR=0x02;

// External SRAM page configuration:

//            -            / 0000h - FFFFh

// Lower page wait state(s): None

// Upper page wait state(s): None

//   MCUCR=0x80;

//   XMCRA=0x00;



// Timer(s)/Counter(s) Interrupt(s) initialization

   TIMSK=0x00;

   ETIMSK=0x00;



// USART0 initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART0 Receiver: On

// USART0 Transmitter: On

// USART0 Mode: Asynchronous

// USART0 Baud rate: 9600

   UCSR0A=0x00;

   UCSR0B=0xD8;

   UCSR0C=0x06;

   UBRR0H=0x00;

   UBRR0L=0x33;



// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

// Analog Comparator Output: Off

   ACSR=0x80;

   SFIOR=0x00;   

}      



   

void main(void)

{   

   

   // Declare your local variables here   



    Init_port();   

   #asm("sei")      

   



   // Global enable interrupts



   while (1)

   {         

      PORTE &=0xFB;



      putchar('w');



   };   

   

}

machao 发表于 2005-7-17 18:08:56

从程序上看一般不会出问题的。加以你先用一个简单的程序试一下,如控制一个LED1秒亮,1秒暗(使用delay函数)。第一步使用生成的代码,成功后再将初始化语句写成一个函数调用试试。
页: [1]
查看完整版本: 请教马老师,我用codevision编的程序 函数体都不能正常返回。不知道是什么原因。