Hace poco estuve en atmega world después de escuchar que es mucho mejor que pic y es mi segundo tutorial sobre cómo escribir en LCD. Escribí este programa en atmel studio pero no funciona. Revisé el hardware y todo estuvo bien ¿Cuál es el problema?
#include <avr/io.h>
#include <util/delay.h>
void initLCD(void);
void writeChar(int);
void sendCommand(int);
void checkIfBusy(void);
int main()
{
DDRC = 0xFF;
DDRD = 0b11100000;
initLCD();
writeChar(70);
while(1);
}
void checkIfBusy(){
DDRC = 0;
PORTD |= (1<<5);
PORTD |= (0<<6);
while(bit_is_set(PIND, 5)){
PORTD |= (1 << 6);
PORTD &= (0 << 6);
}
DDRC = 0xFF;
}
void sendCommand(int command){
checkIfBusy();
PORTD = 0;
PORTC = command;
PORTD = 0b10000000;
PORTD = 0;
}
void initLCD(){
//Clear Display
sendCommand(1);
//Function Set
sendCommand(0b00111000);
//Display Control
sendCommand(0b00001100);
}
void writeChar(int character){
checkIfBusy();
PORTD = 0b01000000;
//Write the character
PORTC = character;
PORTD = 0b11000000;
PORTD = 0b01000000;
}
EDIT
Cambié el código pero aún no funciona, ¿cuál es el problema entonces?