#include <avr/io.h>
#include <util/delay.h>
#include <stdbool.h>
#define SETBIT(ADDRESS,BIT) (ADDRESS |= (1<<BIT))
#define CLEARBIT(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))
#define CHECKBIT(ADDRESS,BIT) (ADDRESS & (1<<BIT))
#define delay(a) _delay_ms(a)
void setsend(void)
{
DDRD=0xFF;
PORTD=0xC0;
SETBIT(PORTD,4);
SETBIT(PORTD,5);
PORTD&=0xF9;
delay(60);
PORTD&=0xF0;
}
bool ready()
{
DDRD=0xF0;
SETBIT(PORTD,4);
CLEARBIT(PORTD,5);
while (!CHECKBIT(PIND,1))//check the b1 on the status register if ready to transmit
{
//asm "nop";
}
return true;
}
void dail()
{
DDRD=0xFF;
SETBIT(PORTD,5);
CLEARBIT(PORTD,4);
PORTD&=0xEA;
PORTD&=0xE9;
PORTD&=0xE5;
PORTD&=0xE6;
PORTD&=0xE5;
PORTD&=0xE9;
PORTD&=0xE2;
PORTD&=0xE6;
PORTD&=0xE8;
PORTD&=0xE2;
}
int main(void)
{
setsend();
while(1)
{
if (ready())
{
dail();
break;
}
}
}