hulp met een project avr AT90S8535

C

cesar35

Guest
hoi
kan iemand mij helpen in project avr.Ik kan niet compileren ta90s8535

thanks cesar

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Crying or Very sad" border="0" />Sorry, maar je moet inloggen om deze gehechtheid

 
fout avr codevisionavr verklaring syntax error

help
Sorry, maar je moet inloggen om deze gehechtheid

 
Het lijkt op meer dan een plaats.Controleer de hele code zorgvuldig syntaxis (in jpg).

 
help

fout lijn 467
fout lijn 474

Code:

# include <90s8535.h>

# include <delay.h>/ / LED display

# define LED_RESET PORTB.0

# define LED_CLOCK PORTB.1

# define LED_DATA PORTB.4

# define SCROLL_DELAY 140 / / veelvoud van 7 (gebruik kleinere aantallen voor sneller scrollen)/ / Keyboard

# define KBD_CLOCK PORTD.2 / / te worden gebruikt voor host -> toetsenbord communicatie

# define KBD_DATA PIND.4

# define BUFF_SIZE 64/ / Lcd

# define LCD_RS PORTD.5

# define LCD_RW PORTD.6

# define LCD_E PORTD.7

# define COMMAND_MODE 0

# define DATA_MODE 1

# define WRITE_MODE 0

# define READ_MODE 1

# define LCD_DATA_PORT PORTC/ / Functies

void lcd_init (void);

void lcd_clear (void);

void lcd_putc (unsigned char);

void lcd_putsf (unsigned char flash *);

void lcd_puts (unsigned char * str);

onderbreken [EXT_INT0] keyboard_isr (void);

void put_char_kbbuff (unsigned char);

void put_scancode_kbbuff (unsigned char);

int getchar (void);

int kbhit (void);

void decoderen (unsigned char);/ / Globale variabelen ***************************

unsigned char kb_buffer [BUFF_SIZE];

unsigned char bitcount;

unsigned char * INPT, * outpt;

unsigned char buffcnt = 0;/ / Pas teken definities

/ / 5 gegevens kolommen 1 ruimte

/ / Voor elk karakter

knipperen unsigned char led_chars [94] [6] = (

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, / / space

0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, / /!

0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, / / "

0x28, 0xFE, 0x28, 0xFE, 0x28, 0x00, / / #

0x24, 0x54, 0xFE, 0x54, 0x48, 0x00, / / $

0xc4, 0xc8, 0x10, 0x26, 0x46, 0x00, / /%

0x6c, 0x92, 0xAA, 0x44, 0x0A, 0x00, / / &

0x00, 0xa0, 0xC0, 0x00, 0x00, 0x00, / / '

0x00, 0x38, 0x44, 0x82, 0x00, 0x00, / / (

0x00, 0x82, 0x44, 0x38, 0x00, 0x00, / /)

0x28, 0x10, 0x7c, 0x10, 0x28, 0x00, / / *

0x10, 0x10, 0x7c, 0x10, 0x10, 0x00, / /

0x00, 0x0A, 0x0c, 0x00, 0x00, 0x00, / /,

0x10, 0x10, 0x10, 0x10, 0x10, 0x00, / / --

0x00, 0x06, 0x06, 0x00, 0x00, 0x00, / /.

0x04, 0x08, 0x10, 0x20, 0x40, 0x00, / / /

0x7c, 0x8a, 0x92, 0xA2, 0x7c, 0x00, / / 0

0x00, 0x42, 0xFE, 0x02, 0x00, 0x00, / / 1

0x42, 0x86, 0x8a, 0x92, 0x62, 0x00, / / 2

0x84, 0x82, 0xA2, 0xD2, 0x8c, 0x00, / / 3

0x18, 0x28, 0x48, 0xFE, 0x08, 0x00, / / 4

0xE5, 0xA2, 0xA2, 0xA2, 0x9c, 0x00, / / 5

0x3C, 0x52, 0x92, 0x92, 0x0c, 0x00, / / 6

0x80, 0x8e, 0x90, 0xa0, 0xC0, 0x00, / / 7

0x6c, 0x92, 0x92, 0x92, 0x6c, 0x00, / / 8

0x60, 0x92, 0x92, 0x94, 0x78, 0x00, / / 9

0x00, 0x6c, 0x6c, 0x00, 0x00, 0x00, / /:

0x00, 0x6a, 0x6c, 0x00, 0x00, 0x00, / /;

0x10, 0x28, 0x44, 0x82, 0x00, 0x00, / / <

0x28, 0x28, 0x28, 0x28, 0x28, 0x00, / / =

0x00, 0x82, 0x44, 0x28, 0x10, 0x00, / />

0x40, 0x80, 0x8a, 0x90, 0x60, 0x00, / /?

0x4c, 0x92, 0x9e, 0x82, 0x7c, 0x00, / / @

0x7E, 0x88, 0x88, 0x88, 0x7E, 0x00, / / A

0xFE, 0x92, 0x92, 0x92, 0x6c, 0x00, / / B

0x7c, 0x82, 0x82, 0x82, 0x44, 0x00, / / C

0xFE, 0x82, 0x82, 0x44, 0x38, 0x00, / / D

0xFE, 0x92, 0x92, 0x92, 0x82, 0x00, / / E

0xFE, 0x90, 0x90, 0x90, 0x80, 0x00, / / F

0x7c, 0x82, 0x92, 0x92, 0x5e, 0x00, / / G

0xFE, 0x10, 0x10, 0x10, 0xFE, 0x00, / / H

0x00, 0x82, 0xFE, 0x82, 0x00, 0x00, / / I

0x04, 0x02, 0x82, 0xfc, 0x80, 0x00, / / J

0xFE, 0x10, 0x28, 0x44, 0x82, 0x00, / / K

0xFE, 0x02, 0x02, 0x02, 0x02, 0x00, / / L

0xFE, 0x40, 0x30, 0x40, 0xFE, 0x00, / / M

0xFE, 0x20, 0x10, 0x08, 0xFE, 0x00, / / N

0x7c, 0x82, 0x82, 0x82, 0x7c, 0x00, / / O

0xFE, 0x90, 0x90, 0x90, 0x60, 0x00, / / P

0x7c, 0x82, 0x8a, 0x84, 0x7a, 0x00, / / Q

0xFE, 0x90, 0x98, 0x94, 0x62, 0x00, / / R

0x62, 0x92, 0x92, 0x92, 0x8c, 0x00, / / S

0x80, 0x80, 0xFE, 0x80, 0x80, 0x00, / / T

0xfc, 0x02, 0x02, 0x02, 0xfc, 0x00, / / U

0xf8, 0x04, 0x02, 0x04, 0xf8, 0x00, / / V

0xfc, 0x02, 0x1c, 0x02, 0xfc, 0x00, / / W

0xc6, 0x28, 0x10, 0x28, 0xc6, 0x00, / / X

0xe0, 0x10, 0x0e, 0x10, 0xe0, 0x00, / / Y

0x86, 0x8b, 0x92, 0xA2, 0xC2, 0x00, / / Z

0x00, 0xFE, 0x82, 0x82, 0x00, 0x00, / / [

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, / / *** niet verwijdert dit lege char ***

0x00, 0x82, 0x82, 0xFE, 0x00, 0x00, / /]

0x20, 0x40, 0x80, 0x40, 0x20, 0x00, / / ^

0x02, 0x02, 0x02, 0x02, 0x02, 0x00, / / _

0x00, 0x80, 0x40, 0x20, 0x00, 0x00, / / `

0x04, 0x2A, 0x2A, 0x2A, 0x1E, 0x00, / / a

0xFE, 0x12, 0x22, 0x22, 0x1c, 0x00, / / b

0x1c, 0x22, 0x22, 0x22, 0x04, 0x00, / / c

0x1c, 0x22, 0x22, 0x12, 0xFE, 0x00, / / d

0x1c, 0x2A, 0x2A, 0x2A, 0x18, 0x00, / / e

0x10, 0x7E, 0x90, 0x80, 0x40, 0x00, / / f

0x30, 0x4a, 0x4a, 0x4a, 0x7c, 0x00, / / g

0xFE, 0x10, 0x20, 0x20, 0x1E, 0x00, / / h

0x00, 0x22, 0xbe, 0x02, 0x00, 0x00, / / i

0x04, 0x02, 0x22, 0xbc, 0x00, 0x00, / / j

0xFE, 0x08, 0x14, 0x22, 0x00, 0x00, / / k

0x00, 0x82, 0xFE, 0x02, 0x00, 0x00, / / l

0x3e, 0x20, 0x18, 0x20, 0x1E, 0x00, / / m

0x3e, 0x10, 0x20, 0x20, 0x1E, 0x00, / / n

0x1c, 0x22, 0x22, 0x22, 0x1c, 0x00, / / o

0x3e, 0x28, 0x28, 0x28, 0x10, 0x00, / / p

0x10, 0x28, 0x28, 0x18, 0x3e, 0x00, / / q

0x3e, 0x10, 0x20, 0x20, 0x10, 0x00, / / r

0x12, 0x2A, 0x2A, 0x2A, 0x04, 0x00, / / s

0x20, 0xfc, 0x22, 0x02, 0x04, 0x00, / / t

0x3C, 0x02, 0x02, 0x04, 0x3e, 0x00, / / u

0x38, 0x04, 0x02, 0x04, 0x38, 0x00, / / v

0x3C, 0x02, 0x0c, 0x02, 0x3C, 0x00, / / w

0x22, 0x14, 0x08, 0x14, 0x22, 0x00, / / x

0x30, 0x0A, 0x0A, 0x0A, 0x3C, 0x00, / / y

0x22, 0x26, 0x2A, 0x32, 0x22, 0x00, / / z

0x00, 0x10, 0x6c, 0x82, 0x00, 0x00, / / (

0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, / / |

0x00, 0x82, 0x6c, 0x10, 0x00, 0x00); / /)/ / Keyboard codes scannen (zonder en met ingedrukte shift-toets)

knipperen unsigned char unshifted [67] [2] = (

/ / 0x0D, 9,

0x0e ,'`', 0x15, 'q', 0x16, '1 ', 0x1a,' z ', 0x1b,' s ', 0x1c,' a ', 0x1d,' w ', 0x1E, '2', 0x21, 'c', 0x22, 'x', 0x23, 'd', 0x24, 'e',

0x25, '4 ', 0x26, '3', 0x29 ',', 0x2A, 'v', 0x2b, 'f', 0x2c, 't', 0x2d, 'r', 0x2e, '5 ', 0x31,' n ', 0x32,' b ', 0x33,' h ', 0x34,' g ',

0x35, 'Y', 0x36, '6 ', 0x39 ,',', 0x3a,' m ', 0x3b,' j ', 0x3C,' u ', 0x3D, '7', 0x3e, '8 ', 0x41, ',', 0x42, 'k', 0x43, 'i', 0x44, 'o',

0x45, '0 ', 0x46, '9', 0x49 ,'.', 0x4a ,'/', 0x4b, 'l', 0x4c ,';', 0x4d, 'p', 0x4E ,'-', 0x52, ' `', 0x54 ,'[', 0x55 ,'=', 0x5a, 13,

0x5b ,']', 0x5d ,'/', 0x61 ,'<', 0x66, 8, 0x69, '1 ', 0x6b, '4', 0x6c, '7 ', 0x70, '0', 0x71, ', ', 0x72, '2', 0x73, '5 ', 0x74, '6',

0x75, '8 ', 0x79 ,' ', 0x7a, '3', 0x7B ,'-', 0x7c ,'*', 0x7d, '9 ', 0,0);knipperen unsigned char verschoven [67] [2] = (

/ / 0x0D, 9,

0x0e ,'`', 0x15, 'Q', 0x16 ,'!', 0x1a, 'Z', 0x1b, 'S', 0x1c, 'A', 0x1d, 'W', 0x1E ,'@', 0x21, 'C', 0x22, 'X', 0x23, 'D', 0x24, 'E',

0x25 ,'$', 0x26 ,'#', 0x29, '', 0x2A, 'V', 0x2b, 'F', 0x2c, 'T', 0x2d, 'R', 0x2e ,'%', 0x31, ' N ', 0x32,' B ', 0x33,' H ', 0x34,' G ',

0x35, 'Y', 0x36 ,'^', 0x39, 'L', 0x3a, 'M', 0x3b, 'J', 0x3C, 'U', 0x3D ,'&', 0x3e ,'*', 0x41, '<', 0x42, 'K', 0x43, 'ik', 0x44, 'O',

0x45 ,')', 0x46 ,'(', 0x49 ,'>', 0x4a ,'?', 0x4b, 'L', 0x4c ,':', 0x4d, 'P', 0x4E ,'_', 0x52, ' "', 0x54 ,'{', 0x55 ,' ', 0x5a, 13,

0x5b ,'}', 0x5d ,'|', 0x61 ,'>', 0x66, 8, 0x69, '1 ', 0x6b, '4', 0x6c, '7 ', 0x70, '0', 0x71, ', ', 0x72, '2', 0x73, '5 ', 0x74, '6',

0x75, '8 ', 0x79 ,' ', 0x7a, '3', 0x7B ,'-', 0x7c ,'*', 0x7d, '9 ', 0,0);

//***********************************************

void main () (

int i, j;

unsigned char ch, rij;

knipperen unsigned char * dataPtr, * tmpDataPtr;

unsigned char messageLength, currentChar, charOffset, tmpCurrentChar, tmpCharOffset, ledArray [23];

unsigned char bericht [308]; / / 300 tekens 4 spaties aan het begin en einde van het bericht# asm ( "cli"); / / disable all interrupts

/ / Initialiseren poorten

DDRA = 0xff; / / poort A output

DDRB = 0xff; / / output poort B

DDRC = 0xff; / / C uitgang poort

DDRD = 0xeb; / / pinnen 2 & 4 ingangen/ / Variabelen initialiseren toetsenbord

INPT = kb_buffer;

outpt = kb_buffer;

buffcnt = 0;

bitcount = 11;/ / Initialiseren lcd

lcd_init ();/ / Initialiseren LED-display (shift registers)

LED_RESET = 0;

LED_CLOCK = 0;

LED_RESET = 1;/ / Initialiseren registers onderbreken

GIMSK = 0x40; / / enable INT0 onderbreken

MCUCR = 0x02; / / INT0 interrupt op dalende flank# asm ( "sei"); / / enable all interruptswhile (1) (

ch = 0x00;

i = 0;

/ / Vul de array met 4 lege ruimtes aan het begin en het einde van het bericht

/ / Als het scherm heeft 4 tekens

/ / (Het ziet er beter uit als we beginnen scrollen met lege scherm en einde

/ / Met lege scherm, in plaats van met vier tekens immediatelly en

/ / Start scrollen)

bericht [i ] = '';

bericht [i ] = '';

bericht [i ] = '';

bericht [i ] = '';/ / Enter Message tot 300 tekens ingevoerd of <enter> toets ingedrukt

while ((ch! = 13) | | (i <308)) (

ch = getchar ();

if ((ch! = 13) & & (ch! = 'q')) (

lcd_putc (ch);

bericht [i ] = ch;

)

/ / Als q wordt ingedrukt, schakelt u het LCD-scherm

/ / (Code schrijft dit alleen op de eerste LCD-lijn

/ / Wanneer de lijn is langer dan 16 tekens i cant zie de rest van de chars

/ /, Zal er een menu-systeem in de toekomst software-versie

/ / En de lijn op het LCD wordt gebladerd

/ / Naar links automatisch als de cursor wordt aan het einde van de lijn

/ /, Want nu gebruik van deze vuile oplossing:))

if (ch == 'q')

lcd_clear ();

)

bericht [i ] = '';

bericht [i ] = '';

bericht [i ] = '';

bericht [i ] = '';messageLength = i - 4;

charOffset = 0;

currentChar = 0;

dataPtr = & led_chars [bericht [0] - 0x20] [0];/ / Deze lus is het hart van de scroll

/ / Bericht wordt gebladerd totdat een toets wordt geraakt op het toetsenbordwhile (! kbhit ()) (

/ / Load geleid array

tmpDataPtr = dataPtr;

tmpCharOffset = charOffset;

tmpCurrentChar = currentChar;

for (i = 0; i <= 22; i ) (

ledArray = * tmpDataPtr ;

if ( tmpCharOffset == 0x06) (

tmpCharOffset = 0;

if ( tmpCurrentChar == messageLength)

tmpCurrentChar = 0;

tmpDataPtr = & led_chars [bericht [tmpCurrentChar] - 0x20] [0];

)

)

if ( charOffset == 0x06) (

charOffset = 0;

if ( currentChar == messageLength)

currentChar = 0;

)

dataPtr = & led_chars [bericht [currentChar] - 0x20] [charOffset];/ / Display LED array

row = 0x02;

for (j = 0; j <= SCROLL_DELAY; j ) (

for (i = 0; i <= 22; i ) (

LED_DATA = (ledArray & rij)?
1: 0;

LED_CLOCK = 1;

LED_CLOCK = 0;

)

PORTA = row;

row <<= 1; / / volgende regel te worden ingeschakeld

if (rij) / / als laatste regel ga terug naar de eerste lijn

row = 0x02;

Delay_us (800);

PORTA = 0x00;

)

)

lcd_clear ();

))//***********************************************

/ / Return 1 als een toets wordt ingedrukt (non blocking)

/ / Else return 0

int kbhit (void) (

if (buffcnt) (

/ / Reset buffer variabelen (spoelen van de buffer)

INPT = kb_buffer;

outpt = kb_buffer;

buffcnt = 0;

bitcount = 11;

return 1;

)

return 0;

)/ / Zet scan code (in hex-formaat) in het keyboard buffer

/ / (Gebruikt voor debugging doeleinden)

//***********************************************

void put_scancode_kbbuff (unsigned char sc) (

unsigned char h, l;/ / Converteren hi en lage hapjes van de scancode

/ / In ASCII en ze opslaan in keyboard buffer

h = ((sc & 0xf0)>> 0x04) & 0x0F;

if (h> 9)

h = h 7;

h = h 0x30;

put_char_kbbuff (h);l = sc & 0x0F;

if (l> 9)

l = l 7;

l = l 0x30;

put_char_kbbuff (l);

)

//***********************************************

/ / Keyboard ISR

onderbreken [EXT_INT0] keyboard_isr (void) (

static unsigned char data; / / bezit is van de ontvangen scan code/ / Functie getreden op dalende flank van het kloksignaal kbd

/ / If data bit is de volgende bit te lezen

/ / (Bit 3 tot 10 bestaat uit gegevens, start, stop & pariteit bis worden genegeerd

if ((bitcount <11) & & (bitcount> 2)) (

data = (data>> 1);

if (KBD_DATA) / / if volgende bit is 1

data = data | 0x80; / / store een '1 '

anders

data = data & 0x7F / / store anders een '0 '

)

if (- bitcount == 0) (/ / alle bits ontvangen?

decoderen (data); / / decode ontvangen byte

bitcount = 11; / / reset bit teller

)

)

//***********************************************

/ / Decode scan code

void decoderen (unsigned char sc) (

static unsigned char is_up = 0, shift = 0, mode = 0;

unsigned char i;if (! is_up) (

switch (sc) (

geval 0xF0: / / up De-key identifier

is_up = 1;

break;

case 0x12: / / Links SHIFT

shift = 1;

break;

case 0x59: / / Right SHIFT

shift = 1;

break;

case 0x05: / / F1

if (mode == 0)

mode = 1; / / Enter code scan mode

if (mode == 2)

mode = 3; / / Laat scan code mode

break;

default:

if (mode == 0 | | mode == 3) (/ / Als ASCII mode

if (! shift) (/ / Als shift niet ingedrukt, doe een tafel look-up

for (i = 0; unshifted [0]! = sc & & unshifted [0]; i );

if (unshifted [0] == sc) (

put_char_kbbuff (unshifted [1]);

)

)

else (/ / Als shift ingedrukt

for (i = 0; verschoven [0]! = sc & & verschoven [0]; i );

if (verschoven [0] == sc) (

put_char_kbbuff (verschoven [1]);

)

)

)

anders put_scancode_kbbuff (sc); / / scan code modus (debug mode)

break;

)

)

else (

is_up = 0; / / Twee 0xF0 op een rij niet toegestaan

switch (sc) (

case 0x12: / / Links SHIFT

shift = 0;

break;

case 0x59: / / Right SHIFT

shift = 0;

break;

case 0x05: / / F1 - F1 plaatst u in debugging mode

/ / Op F1 te drukken komt u weer uit de debugging modus

/ / In debugging mode hexadecimale code van de codes scan

/ / Zijn opgeslagen in de buffer in plaats van hun ascii-codes

if (mode == 1)

mode = 2;

if (mode == 3)

mode = 0;

break;

)

)

)

//***********************************************

/ / Store karakter in het toetsenbord ring buffer

void put_char_kbbuff (unsigned char c) (

if (buffcnt <BUFF_SIZE) (/ / als buffer niet vol

* (INPT ) = c;

buffcnt ;

if (INPT> = kb_buffer BUFF_SIZE) / / pointer onmiddellijke

INPT = kb_buffer;

)

)//***********************************************

/ / Get eerstvolgende beschikbare karakter van het toetsenbord ring buffer

/ / (Wacht totdat een karakter beschikbaar is in de buffer)

int getchar (void) (

int byte;while (buffcnt == 0); / / wachten op data

byte = * outpt / / krijgen byte

outpt ;

if (outpt> = kb_buffer BUFF_SIZE) / / pointer onmiddellijke

outpt = kb_buffer;

buffcnt -; / / decrement buffer tellen

return byte;

)

//***********************************************

void lcd_init (void) (

delay_ms (50);

LCD_E = 0;

LCD_RS = COMMAND_MODE;

LCD_RW = WRITE_MODE;

delay_ms (1);

LCD_DATA_PORT = 0x38; / / 8-bits, 2 lijnen, 5x8 lettertype

LCD_E = 1; delay_ms (1);

LCD_E = 0; delay_ms (1);

LCD_DATA_PORT = 0x0F; / / display & cursor ON, blink & onderstreepte

LCD_E = 1; delay_ms (1);

LCD_E = 0; delay_ms (2);

lcd_clear ();

)

//***********************************************

void lcd_clear (void) (

LCD_RS = COMMAND_MODE;

LCD_DATA_PORT = 0x01; / / helder display

LCD_E = 1; delay_ms (1);

LCD_E = 0; delay_ms (2);

)

//***********************************************

/ / Char op LCD display

void lcd_putc (unsigned char ch) (

LCD_RS = DATA_MODE;

LCD_DATA_PORT = ch;

LCD_E = 1; Delay_us (40);

LCD_E = 0; Delay_us (40);

)

//***********************************************

/ / String op het LCD-display

/ / Input: pointer naar string opgeslagen in flash-ROM

void lcd_putsf (unsigned char flash * str) (

while (* str! = '\ 0') (

lcd_putc (* (str ));

)

)

//************************************************

/ / Hetzelfde als hierboven, behalve de string is in het RAM

void lcd_puts (unsigned char * str) (

while (* str! = '\ 0') (

lcd_putc (* (str ));

)

)

 
I dont geduld hebben om tot 467 tellen, post die sectie (niet dat regels alleen).

MicroCon

 
/Code:

/***********************************************

/ / String op het LCD-display

/ / Input: pointer naar string opgeslagen in flash-ROM

void lcd_putsf (unsigned char flash * str) (

while (* str! = '\ 0') (

lcd_putc (* (str ));

)

)

//************************************************

/ / Hetzelfde als hierboven, behalve de string is in het RAM

void lcd_puts (unsigned char * str) (

while (* str! = '\ 0') (

lcd_putc (* (str ));

)

)
Code:
 [/ code]
 

Welcome to EDABoard.com

Sponsor

Back
Top