Hello, I have a problem with my code, because, Atmel Studio show me some errors, and I can't solve that, I need some help.
The errors are:
Severity Code Description Project File Line Source
Error garbage at end of line GccApplication2 C:\Users\steven\AppData\Local\Temp\ccWEkVqj.s 63 Build
Severity Code Description Project File Line Source
Error garbage at end of line GccApplication2 C:\Users\steven\AppData\Local\Temp\ccWEkVqj.s 67 Build
Severity Code Description Project File Line Source
Error garbage at end of line GccApplication2 C:\Users\steven\AppData\Local\Temp\ccWEkVqj.s 453 Build
Severity Code Description Project File Line Source
Error garbage at end of line GccApplication2 C:\Users\steven\AppData\Local\Temp\ccWEkVqj.s 457 Build
Severity Code Description Project File Line Source
Error recipe for target 'main.o' failed GccApplication2 D:\Universidad\Microprocesadores\Microprocesadores\ESTUDIO DE PROMACIÓN\GccApplication2\GccApplication2\Debug\Makefile 79 Build
My code is:
#define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> // PARA USAR DELAYS // PERMITE LA UTILIZACIÓN DE LCD #include <stdlib.h> // CONVIERTE NUMEROS EN CADENAS DE CARACTERES #include <avr/interrupt.h> // PERMITE EL USO DE INTERRUPCIONES EXTERNAS #include <string.h> // PERMITE EL USO DE CADENAS #define APORT_LCD PORTA // DEFININCIÓN Y ACTIVACIÓN DEL PUERTO A #define ADDR_LCD DDRA // DEFININCIÓN Y ACTIVACIÓN DEL PUERTO A #define CPORT_LCD PORTC // DEFININCIÓN Y ACTIVACIÓN DEL PUERTO C #define CDDR_LCD DDRC // DEFININCIÓN Y ACTIVACIÓN DEL PUERTO C #define RS_LCD 0 // RS, RW y E junto a sus respectivos valores, #define RW_LCD 1 // indican a que pines del puerto C se deben cambiar los bits para el control de la LCD #define E_LCD 2 int16_t ValorTemperatura; // VARIABLE TIPO ENTERA DE 16 BITS, DEBIDO A QUE ALLI REPOSARAN LOS VALORES OBTENIDOS POR // EL ADC, EL CUAL ES DE 10 BITS, POR ELLO SE REQUIERE UNA VARIABLE DE 16 BITS, QUE PUEDA // ALMACENAR DICHA CANTIDAD DE BITS float Temperatura; // VARIABLE FLOTANTE, LA CUAL ENVIARÁ VALORES AL PUETO A, CADA CIERTO TIEMPO char array[] = {"Temperatura"}; // CONTIENE EL MENSAJE TEMPERATURA, LA ELECCIÓN DEL TIPO CHAR SE HACE DE ACUERDO // A LA IMPLEMENTACIÓN DE LA SUBRUTINA DE IMPRESIÓN EN LA LCD void EscribirComando_LCD (unsigned char cmd); void EscribirDato_LCD(unsigned char dat); void print_LCD(char *string); void Print_N(unsigned int a); int main(void) { DDRA=0xFF; //DEFINE EL PUERTO A COMO SALIDA DDRC=0xFF; //DEFINE EL PUERTO C COMO SALIDA DDRF=0x00; //DEFINE EL PUERTO F COMO ENTRADA (ADC) DDRB=0xFF; //DEFINE EL PUERTO B COMO SALIDA ADMUX=0B01000000; //MISMO ADMUX DEL LAB2 ADCSRA=0B11101111; //MISMO ADCSRA DEL LAB2 ADCSRB=0B00000110; //MISMO ADCSRB DEL LAB2 DIDR0 |=(1<<ADC0D); //DEFINE EL PIN ADC0 COMO ENTRADA PARA LM35 asm("LDI R25, 0B00000101"); asm("STS TCCR1B, R25"); asm("LDI R24, 0B00000001"); asm("STS TIMSK1, R24"); asm("SEI"); // HABILITA LAS INTERRUPCIONES GLOBALES asm("LDI R23, HIGH(0XC2F7)"); asm("LDI R22, LOW(0XC2F7)"); asm("STS 0x85, R23"); asm("STS 0x84, R22"); EscribirComando_LCD(0x01); //LIMPIAR EL LCD _delay_ms(2); EscribirComando_LCD(0X30); _delay_us(40); while (1) { EscribirComando_LCD(0x80 + 0); _delay_us(40); print_LCD(array); _delay_us(40); EscribirComando_LCD(0x80 + 0x0B); _delay_us(40); Print_N(ValorTemperatura); EscribirComando_LCD(0x01); _delay_us(82); } } ISR(TIMER1_OVF_vect){ asm("LDI R23, HIGH(0XC2F7)"); asm("LDI R22, LOW(0XC2F7)"); asm("STS 0x85, R23"); asm("STS 0x84, R22"); ADCSRA|=(1<<ADSC); while(ADCSRA&(1<<ADSC)) { ValorTemperatura=ADC; } asm("COM R26"); asm("OUT PORTB, R26"); } void EscribirComando_LCD(unsigned char cmd) // LO PRIMERO QUE SE REALIZA ES EL ENVIÓ DEL COMANDO A TRAVÉS DEL PUERTO A. // DESPUÉS SE GENERA UN RETRASO DE 40US, PARA QUE EL COMANDO ENVIADO NO LLEGUE TAN RÁPIDO A LA LCD { APORT_LCD=cmd; _delay_us(40); CPORT_LCD &= ~(1<<RS_LCD); CPORT_LCD|=(0<<RW_LCD); CPORT_LCD|=(1<<E_LCD); _delay_ms(2); CPORT_LCD &=~(1<<E_LCD); _delay_ms(1); } void EscribirDato_LCD(unsigned char dat) { APORT_LCD=dat; _delay_us(40); CPORT_LCD |= (1<<RS_LCD); CPORT_LCD |= (0<<RW_LCD); CPORT_LCD |= (1<<E_LCD); _delay_ms(2); CPORT_LCD &=~(1<<E_LCD); _delay_ms(1); } void print_LCD(char *string) { while(*string) { EscribirDato_LCD(*string++); } } void Print_N(unsigned int a) { EscribirDato_LCD((a/10)+0x30); _delay_us(40); EscribirDato_LCD((a%10)+0x30); }