Help with C program on ATmel AT90S2313 (beginner)
2005-08-25 by John Preller
All,
This is my first attempt at using C and using the AVR platform. I
used the Codevision AVR C compiler to automatically produce the code
below (as I have got a long road ahead of me before I can produce my
own code from scratch). The code is supposed to light an LED when the
corresponding push button in pushed. Problem is that the high order
LED (bit 7) is always on. All other LED's come on when you press the
corresponding push button, but LED 7 is always on. I can't see what
is causing it in the code. Can anyone shed some light on it for me
please?
Much appreciated.
Cheers
John
Code Below:
~~~~~~~~~~~~~~~~~~~~~
/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.6 Evaluation
Automatic Program Generator
© Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
e-mail:office@hpinfotech.com
Project :
Version :
Date : 25/08/2005
Author : Freeware, for evaluation and non-commercial use only
Company :
Comments:
Chip type : AT90S2313
Clock frequency : 3.680000 MHz
Memory model : Tiny
External SRAM size : 0
Data Stack size : 32
*****************************************************/
#include <90s2313.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
int data;
// Input/Output Ports initialization
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out
Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0
State0=0
PORTB=0x00;
DDRB=0xFF;
// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1 output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1H=0x00;
OCR1L=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
while (1)
{
data=PIND;
PORTB=data;
};
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~