Program: wyświetlające zaprogramowany przez użytkownika tekst oraz liczby.
W przypadku liczb – całkowite jak i zmiennoprzecinkowe.
Kompilator: Code::Blocks
Kod programu:
#define F_CPU 16000000UL
#include <avr/io.h>
#include <avr/delay.h>
#include <stdlib.h>
#include <stdio.h>
void displayChar(char c)
{
PORTD = c>>4;
_delay_ms(10);
PORTA = 0x03;
_delay_ms(10);
PORTA = 0x02;
_delay_ms(10);
PORTD = c;
_delay_ms(10);
PORTA = 0x03;
_delay_ms(10);
PORTA = 0x02;
_delay_ms(10);
}
void wysString(const char * text)
{
if(strlen(text) > 32)
{
wysString("Za dlugi text max 32 znaki");
return;
}
for(int i = 0; i < strlen(text); i = i + 1)
{
if(i == 16)
{
PORTD = 0x0C;
_delay_ms(10);
PORTA = 0x01;
_delay_ms(10);
PORTA = 0x00;
_delay_ms(10);
PORTD = 0x00;
_delay_ms(10);
PORTA = 0x01;
_delay_ms(10);
PORTA = 0x00;
_delay_ms(10);
}
displayChar(text[i]);
}
}
void wysInt(int x){
char buffer [32];
itoa (x,buffer,10);
wysString(buffer);
}
void wysDouble(double x){
char buffer [32];
dtostrf (x,1,3,buffer);
wysString(buffer);
}
void main() {
_delay_ms(100);
DDRD = 0xff;
DDRA = 0xff;
PORTD = 0x03;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x03;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x03;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x02;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x02;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x08;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x00;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x01;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x00;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x06;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x00;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
PORTD = 0x0f;
_delay_ms(100);
PORTA = 0x01;
_delay_ms(100);
PORTA = 0x00;
_delay_ms(100);
wysString("ukw ");
wysInt(6789);
wysString(" ");
wysDouble(67.89);
while (1);
}