Затрахался я уже с этим sprintf
не хочет число в массив запихивать(
а если меняешь формат то компилируется только через раз!
может кто нибудь подскажет в чем проблема?
(он в самом конце находится)
[spoiler]
CODE:
[/spoler]
/*
* AVRGCC1.c
*
* Created: 01.06.2014 15:39:16
* Author: Антошка
*/
# define F_CPU 8000000UL
#include <avr/io.h>
#include <stdio.h>
#include <util/delay.h>
void Clear_ports(void)
{
PORTA=0b00000000;
PORTD=0b0000000;
}
void Init_ports(void)
{
DDRA=0b11111111;
DDRD=0b11010000;
Clear_ports();
}
void Impuls(void)
{
PORTD |= _BV(PD4);
_delay_ms(1);
PORTD &= ~_BV(PD4);
}
void Init_LCD(void)
{
_delay_ms(20);
PORTA=0b00110000;
PORTD=0b0000000;
Impuls();
_delay_ms(5);
PORTA=0b00110000;
PORTD=0b0000000;
Impuls();
_delay_us(100);
PORTA=0b00110000;
PORTD=0b0000000;
Impuls();
PORTA=0b00111100; // 8 bit, 2 line, 5*11
PORTD=0b0000000;
Impuls();
PORTA=0b00001100; //display ON OFF
PORTD=0b0000000;
Impuls();
PORTA=0b00000001;//Clear all
PORTD=0b0000000;
Impuls();
PORTA=0b00000110; //Entry mode set
PORTD=0b0000000;
Impuls();
}
void Char_To_LCD ( char TXT )
{
PORTA=TXT; //*
PORTD |= _BV(PD7);
Impuls();
}
void clear ()
{
PORTA=0b00000001;
PORTD=0b0000000;
Impuls();
}
// ------- Основная программа ---------
void main(void)
{
Init_ports(); // настраиваем МК
Init_LCD(); // инициализация модуля
Char_To_LCD(0b10101000); // П
Char_To_LCD(0b01110000); // р
Char_To_LCD(0b10111000); // и
Char_To_LCD(0b10110011); // в
Char_To_LCD(0b01100101); // е
Char_To_LCD(0b10111111); // т
Char_To_LCD(0b00100001); // !
clear ();
int i=8;
int A[i];
A[0]=0;
A[1]=0;
A[2]=0;
A[3]=0;
A[4]=0;
A[5]=0;
A[6]=0;
A[7]=0;
A[8]=0;
i=0;
int n=8 ;
while(n){
DDRC=0x00;
PORTC=0XFF;
if(PINC==0b11111110)
{ Char_To_LCD(0b00110001); // 1
i++;
A[i]=1;
_delay_ms(50);
n=n-1;
}
if(PINC==0b11111101)
{ Char_To_LCD(0b00110000); // 1
i++;
A[i]=0;
_delay_ms(50);
n=n-1;
}
}
DDRB=0xff;
PORTB=0x00;
if (A[1]==1) {
PORTB|=_BV(PB7);
}
else{
PORTB&=~_BV(PB7);
}
if (A[2]==1) {
PORTB|=_BV(PB6);
}
else{
PORTB&=~_BV(PB6);
}
if (A[3]==1) {
PORTB|=_BV(PB5);
}
else{
PORTB&=~_BV(PB5);
}
if (A[4]==1) {
PORTB|=_BV(PB4);
}
else{
PORTB&=~_BV(PB4);
}
if (A[5]==1) {
PORTB|=_BV(PB3);
}
else{
PORTB&=~_BV(PB3);
}
if (A[6]==1) {
PORTB|=_BV(PB2);
}
else{
PORTB&=~_BV(PB2);
}
if (A[7]==1) {
PORTB|=_BV(PB1);
}
else{
PORTB&=~_BV(PB1);
}
if (A[8]==1) {
PORTB|=_BV(PB0);
}
else{
PORTB&=~_BV(PB0);
}
int p=PINB;
clear();
int j=8;
int B[j];
B[0]=0;
B[1]=0;
B[2]=0;
B[3]=0;
B[4]=0;
B[5]=0;
B[6]=0;
B[7]=0;
B[8]=0;
j=0;
int m=8 ;
while(m){
DDRC=0x00;
PORTC=0XFF;
if(PINC==0b11111110)
{ Char_To_LCD(0b00110001); // 1
j++;
B[j]=1;
_delay_ms(50);
m=m-1;
}
if(PINC==0b11111101)
{ Char_To_LCD(0b00110000); // 1
j++;
B[j]=0;
_delay_ms(50);
m=m-1;
}
}
DDRB=0xff;
PORTB=0x00;
if (B[1]==1) {
PORTB|=_BV(PB7);
}
else{
PORTB&=~_BV(PB7);
}
if (B[2]==1) {
PORTB|=_BV(PB6);
}
else{
PORTB&=~_BV(PB6);
}
if (B[3]==1) {
PORTB|=_BV(PB5);
}
else{
PORTB&=~_BV(PB5);
}
if (B[4]==1) {
PORTB|=_BV(PB4);
}
else{
PORTB&=~_BV(PB4);
}
if (B[5]==1) {
PORTB|=_BV(PB3);
}
else{
PORTB&=~_BV(PB3);
}
if (B[6]==1) {
PORTB|=_BV(PB2);
}
else{
PORTB&=~_BV(PB2);
}
if (B[7]==1) {
PORTB|=_BV(PB1);
}
else{
PORTB&=~_BV(PB1);
}
if (B[8]==1) {
PORTB|=_BV(PB0);
}
else{
PORTB&=~_BV(PB0);
}
int o=PINB;
clear();
int e=16;
int array[e];
int y=p+o;
// const char w=1010101;
// sprintf(array, w );
//printf(g,array);
//array[e]=IntToStr(g);
//int sprintf(array, y \d);
sprintf(array,"%d",y);
//sprintf(c[e], "%s",g);
clear ();
for (e=0; e<=16; e++){
if(array[e]==1)
{ Char_To_LCD(0b00110001); // 1
}
else {
Char_To_LCD(0b00110000);
}
}
}
* AVRGCC1.c
*
* Created: 01.06.2014 15:39:16
* Author: Антошка
*/
# define F_CPU 8000000UL
#include <avr/io.h>
#include <stdio.h>
#include <util/delay.h>
void Clear_ports(void)
{
PORTA=0b00000000;
PORTD=0b0000000;
}
void Init_ports(void)
{
DDRA=0b11111111;
DDRD=0b11010000;
Clear_ports();
}
void Impuls(void)
{
PORTD |= _BV(PD4);
_delay_ms(1);
PORTD &= ~_BV(PD4);
}
void Init_LCD(void)
{
_delay_ms(20);
PORTA=0b00110000;
PORTD=0b0000000;
Impuls();
_delay_ms(5);
PORTA=0b00110000;
PORTD=0b0000000;
Impuls();
_delay_us(100);
PORTA=0b00110000;
PORTD=0b0000000;
Impuls();
PORTA=0b00111100; // 8 bit, 2 line, 5*11
PORTD=0b0000000;
Impuls();
PORTA=0b00001100; //display ON OFF
PORTD=0b0000000;
Impuls();
PORTA=0b00000001;//Clear all
PORTD=0b0000000;
Impuls();
PORTA=0b00000110; //Entry mode set
PORTD=0b0000000;
Impuls();
}
void Char_To_LCD ( char TXT )
{
PORTA=TXT; //*
PORTD |= _BV(PD7);
Impuls();
}
void clear ()
{
PORTA=0b00000001;
PORTD=0b0000000;
Impuls();
}
// ------- Основная программа ---------
void main(void)
{
Init_ports(); // настраиваем МК
Init_LCD(); // инициализация модуля
Char_To_LCD(0b10101000); // П
Char_To_LCD(0b01110000); // р
Char_To_LCD(0b10111000); // и
Char_To_LCD(0b10110011); // в
Char_To_LCD(0b01100101); // е
Char_To_LCD(0b10111111); // т
Char_To_LCD(0b00100001); // !
clear ();
int i=8;
int A[i];
A[0]=0;
A[1]=0;
A[2]=0;
A[3]=0;
A[4]=0;
A[5]=0;
A[6]=0;
A[7]=0;
A[8]=0;
i=0;
int n=8 ;
while(n){
DDRC=0x00;
PORTC=0XFF;
if(PINC==0b11111110)
{ Char_To_LCD(0b00110001); // 1
i++;
A[i]=1;
_delay_ms(50);
n=n-1;
}
if(PINC==0b11111101)
{ Char_To_LCD(0b00110000); // 1
i++;
A[i]=0;
_delay_ms(50);
n=n-1;
}
}
DDRB=0xff;
PORTB=0x00;
if (A[1]==1) {
PORTB|=_BV(PB7);
}
else{
PORTB&=~_BV(PB7);
}
if (A[2]==1) {
PORTB|=_BV(PB6);
}
else{
PORTB&=~_BV(PB6);
}
if (A[3]==1) {
PORTB|=_BV(PB5);
}
else{
PORTB&=~_BV(PB5);
}
if (A[4]==1) {
PORTB|=_BV(PB4);
}
else{
PORTB&=~_BV(PB4);
}
if (A[5]==1) {
PORTB|=_BV(PB3);
}
else{
PORTB&=~_BV(PB3);
}
if (A[6]==1) {
PORTB|=_BV(PB2);
}
else{
PORTB&=~_BV(PB2);
}
if (A[7]==1) {
PORTB|=_BV(PB1);
}
else{
PORTB&=~_BV(PB1);
}
if (A[8]==1) {
PORTB|=_BV(PB0);
}
else{
PORTB&=~_BV(PB0);
}
int p=PINB;
clear();
int j=8;
int B[j];
B[0]=0;
B[1]=0;
B[2]=0;
B[3]=0;
B[4]=0;
B[5]=0;
B[6]=0;
B[7]=0;
B[8]=0;
j=0;
int m=8 ;
while(m){
DDRC=0x00;
PORTC=0XFF;
if(PINC==0b11111110)
{ Char_To_LCD(0b00110001); // 1
j++;
B[j]=1;
_delay_ms(50);
m=m-1;
}
if(PINC==0b11111101)
{ Char_To_LCD(0b00110000); // 1
j++;
B[j]=0;
_delay_ms(50);
m=m-1;
}
}
DDRB=0xff;
PORTB=0x00;
if (B[1]==1) {
PORTB|=_BV(PB7);
}
else{
PORTB&=~_BV(PB7);
}
if (B[2]==1) {
PORTB|=_BV(PB6);
}
else{
PORTB&=~_BV(PB6);
}
if (B[3]==1) {
PORTB|=_BV(PB5);
}
else{
PORTB&=~_BV(PB5);
}
if (B[4]==1) {
PORTB|=_BV(PB4);
}
else{
PORTB&=~_BV(PB4);
}
if (B[5]==1) {
PORTB|=_BV(PB3);
}
else{
PORTB&=~_BV(PB3);
}
if (B[6]==1) {
PORTB|=_BV(PB2);
}
else{
PORTB&=~_BV(PB2);
}
if (B[7]==1) {
PORTB|=_BV(PB1);
}
else{
PORTB&=~_BV(PB1);
}
if (B[8]==1) {
PORTB|=_BV(PB0);
}
else{
PORTB&=~_BV(PB0);
}
int o=PINB;
clear();
int e=16;
int array[e];
int y=p+o;
// const char w=1010101;
// sprintf(array, w );
//printf(g,array);
//array[e]=IntToStr(g);
//int sprintf(array, y \d);
sprintf(array,"%d",y);
//sprintf(c[e], "%s",g);
clear ();
for (e=0; e<=16; e++){
if(array[e]==1)
{ Char_To_LCD(0b00110001); // 1
}
else {
Char_To_LCD(0b00110000);
}
}
}