Étape 3: programmation
Il s’agit d’un programme simple pour AVR ATmega16...
#define F_CPU 1000000UL
#include
#include
#define USART_BAUDRATE 1200 / / valeur de débit en bauds
#define BAUD_PRESCALE ((F_CPU / (USART_BAUDRATE * 16UL)) - 1)
voidusart_init()
{
UCSRB | = (1 << RXEN) | (1 <
UCSRC | = (1 << URSEL) | (1 <
UBRRL = BAUD_PRESCALE ;
UBRRH = (BAUD_PRESCALE >> 8) ;
}
unsignedintusart_getch()
{
tandis que ((UCSRA & (1 << RXC)) == 0) ;
{
}
retourner l’UDR ;
}
voidusart_putch (unsigned char envoi)
{Si (! () UCSRA & (1 <
{
}
UDR = envoyer ;
}
voidputstr (unsigned char * str)
{
int i = 0 ;
while(STR[i]!='\0')
{
usart_putch(STR[i]) ;
_delay_ms(100) ;
i ++ ;
}
}
Sub main()
{
usart_init() ;
DDRC = 0XFF ;
PORTC = 0XFF ;
while(1)
{
int a = usart_getch() ;
if(a=='F')
{
PORTC = 0b00000101 ;
}
if(a=='B')
{
PORTC = 0b00001010 ;
}
if(a=='R')
{
PORTC = 0b00000110 ;
}
if(a=='L')
{
PORTC = 0b00001001 ;
}
}
}