Program: wyświetlający znaki po wciśnięciu guzika.
Kolejne litery są tak długo podawane aż użytkownik zdecyduje się na daną, po czym następuje przejście do kolejnej komórki i proces jest powtarzany.
Kompilator: Code::Blocks
Kod programu:
#define F_CPU 16000000UL
#include <avr/io.h>
#include <avr/delay.h>
#include <stdlib.h>
#include <stdio.h>
void wysChar(char c)
{
PORTD = c>>4;
_delay_ms(1);
PORTA = 0x03;
_delay_ms(1);
PORTA = 0x02;
_delay_ms(1);
PORTD = c;
_delay_ms(1);
PORTA = 0x03;
_delay_ms(1);
PORTA = 0x02;
_delay_ms(1);
}
void wysString(const char * text)
{
for(int i = 0; i < strlen(text); i = i + 1)
{
if(i == 16)
{
PORTD = 0x0C;
_delay_ms(1);
PORTA = 0x01;
_delay_ms(1);
PORTA = 0x00;
_delay_ms(1);
PORTD = 0x00;
_delay_ms(1);
PORTA = 0x01;
_delay_ms(1);
PORTA = 0x00;
_delay_ms(1);
}
wysChar(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);
DDRB = 0x00;
PORTB=0xFF;
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);
int h=0;
char x[32];
for (int i= 0;i<32;i=i+1)
x[i]=' ';
x[0]='a'-1;
while(1){
while(1){
if (!(PINB & 0x01)&&h==0)
{
h=1;
if(x=='z')
x[0]='a'-1;
else
x[0]=x[0]+1;
}
else
{
break;
}}
if((PINB & 0x01)&&h==1){
PORTD = 0x00;
_delay_ms(1);
PORTA = 0x01;
_delay_ms(1);
PORTA = 0x00;
_delay_ms(1);
PORTD = 0x01;
_delay_ms(1);
PORTA = 0x01;
_delay_ms(1);
PORTA = 0x00;
_delay_ms(1);
wysString(x);
h=0;
}
}
}