por cristian » 16 Set 2009 22:44
nao dar certo vou voltar pro CCS ALGUEM PELO AMOR DE DEUS DESCOBRE O Q TEM ESTE CODIGO DE ERRADO QUALQUER COISA Q FOR ACRESCENTADO
UART1_WRITE_TEXT("NADA");
DA O ERRO 56 1511 IRP bit must be set manually for indirect access to 'txt' variable LedBlinking.c
//---------------------------------------------- INCLUDES
#include "24c256.c"
#include "ds1307.c"
#include "built_in.h"
// #include "memoria.c"
//--------------------------------------------- DEFINES
#define liga_led2 portc.f1=0;
#define desliga_led2 portc.f1=1;
#define liga_ponto portc.f1=0;
#define desliga_ponto portc.f1=1;
#define unilo(param,param2) ((short *)¶m)[0] = ((short *)¶m2)[0]
#define unihi(param,param2) ((short *)¶m)[1] = ((short *)¶m2)[0]
#define unihigh(param, param2) ((short *)¶m)[2] = ((short *)¶m2)[0]
#define unihiguest(param, param2) ((short *)¶m)[3] = ((short *)¶m2)[0]
//--------------------------------------------- PROTOTIPOS DAS ROTINAS
void grava_rtc(unsigned short m,unsigned short h,unsigned short d,unsigned short m,unsigned short y ) ;
unsigned short read_ds1307(unsigned short address);
void ler_memoria();
void salvar_memoria();
void salva_Total_credito();
void ler_total_credito();
//---------------------------------------------- VARIAVEIS
unsigned short sec;
unsigned short minute;
unsigned short hour;
unsigned short day;
unsigned short date;
unsigned short month;
unsigned short year;
char txt[12];
//char ddate[11];
//char time[10];
sbit botao_B at Rc1_bit;
sbit botao_g at RC0_BIT;
unsigned int pulsos,dados,receive,ind_rx,x;
unsigned short int var,var1byte, var2,credito;
char buf_rs232[15];
unsigned long int Total_credito;
//******************* memoria **************
unsigned int Tik_num,ind_memo,end_aux,total_tik;
unsigned short int dip,valor_tik,num_relat,valor_display,relat_num;
struct flag1{
print;
timer_pulso;
piscaled1;
piscaled2;
trat_pulso;
att_display ;
DISPLAY_pronto;
incr_contador;
timer_1seg;
imrime;
}a;
//--------------------------------------------- ROTINAS
unsigned char BCD2UpperCh(unsigned char bcd)
{
return ((bcd >> 4) + 0x30);
}
unsigned char BCD2LowerCh(unsigned char bcd)
{
return ((bcd & 0x0F) + 0x30);
}
//****************************** salva ticket **************
void salva_ticket()
{
ind_memo=SI2C_read(0)<<8;
ind_memo=ind_memo+SI2C_read(1);
SI2C_write(ind_memo,hi(Tik_num));ind_memo++;
SI2C_write(ind_memo,lo(Tik_num));ind_memo++;
SI2C_write(ind_memo,dip);ind_memo++;
SI2C_write(ind_memo,hour);ind_memo++;
SI2C_write(ind_memo,minute);ind_memo++;
SI2C_write(ind_memo,month);ind_memo++;
SI2C_write(ind_memo,date);ind_memo++;
SI2C_write(ind_memo,credito);ind_memo++;
SI2C_write(0,hi(ind_memo));
SI2C_write(1,lo(ind_memo));
}//salva ticket
void ler_dados_memo()
{
Tik_num=SI2C_read(end_aux)<<8;end_aux++;
Tik_num=tik_num+SI2C_read(end_aux);end_aux++;
dip=SI2C_read(end_aux);end_aux++;
hour=SI2C_read(end_aux);end_aux++;
minute=SI2C_read(end_aux);end_aux++;
month=SI2C_read(end_aux);end_aux++;
date=SI2C_read(end_aux);end_aux++;
credito=SI2C_read(end_aux);end_aux++;
}
void converte_dados()
{
wordtostr(Tik_num,txt);
uart1_write_text("Ticket ");
uart1_write_text(txt);
txt[0]=BCD2UpperCh(dip);
txt[1]=BCD2LowerCh(dip);
txt[2]='\0';
uart1_write_text("/");
uart1_write_text(txt);
uart1_write_text(" ");
txt[0]=BCD2UpperCh(date);
txt[1]=BCD2LowerCh(date);
txt[2]='/';
txt[3]=BCD2UpperCh(month);
txt[4]=BCD2LowerCh(month);
txt[5]=' ';
txt[6]=BCD2UpperCh(hour);
txt[7]=BCD2LowerCh(hour);
txt[8]=':';
txt[9]=BCD2UpperCh(minute);
txt[10]=BCD2LowerCh(minute);
uart1_write_text(txt);
uart1_write_text(" ");
wordtostr(credito,txt);
uart1_write_text(txt);
uart1_write_text(",00");
uart1_write(13);
}
void ler_rtc()
{
sec=read_ds1307(0); // read second
minute=read_ds1307(1); // read minute
hour=read_ds1307(2); // read hour
day=read_ds1307(3); // read day
date=read_ds1307(4); // read date
month=read_ds1307(5); // read month
year=read_ds1307(6); // read year
}
void converte_hora()
{
txt[0] = BCD2UpperCh(hour);
txt[1] = BCD2LowerCh(hour);
txt[2] = ':';
txt[3] = BCD2UpperCh(minute);
txt[4] = BCD2LowerCh(minute);
txt[5] = ':';
txt[6] = BCD2UpperCh(sec);
txt[7] = BCD2LowerCh(sec);
txt[8] = ' ';
txt[9] = '\0';
}
void converte_data()
{
txt[0] = BCD2UpperCh(date);
txt[1] = BCD2LowerCh(date);
txt[2] ='/';
txt[3] = BCD2UpperCh(month);
txt[4] = BCD2LowerCh(month);
txt[5] ='/';
txt[6] = '2';
txt[7] = '0';
txt[8] = BCD2UpperCh(year);
txt[9] = BCD2LowerCh(year);
txt[10] = '\0';
}
void Apaga_buf()
{
for(x=0;x<=14;x++)
{
buf_rs232[x]=0;
ind_rx=0;
}
}
//********************************** apaga memoria
void Apaga_memoria()
{
for(x=25;x<=ind_memo;x++)
{
SI2C_write(x,0);
}
SI2C_write(0,0);SI2C_write(1,25);//restaura indice
}
void ler_memoria()
{
// ler Num ticket impressos
var1byte=SI2C_read(3);unilo(Tik_num,var1byte);
var1byte=SI2C_read(2);unihi(Tik_num,var1byte);
var1byte=SI2C_read(7);unilo(Total_credito,var1byte);
var1byte=SI2C_read(6);unihi(Total_credito,var1byte);
var1byte=SI2C_read(5);unihigh(Total_credito,var1byte);
var1byte=SI2C_read(4);unihiguest(Total_credito,var1byte);
Relat_num=SI2C_read(0x08);
}
void salvar_memoria()
{
//--------------------------------salvar ticket
SI2C_write(2,hi(Tik_num));
SI2C_write(3,lo(Tik_num));
//--------------------------------salvar valor total creditos
SI2C_write(7,lo(Total_credito));
SI2C_write(6,hi(Total_credito));
SI2C_write(5,higher(Total_credito));
SI2C_write(4,highest(Total_credito));
SI2C_write(0x08,Relat_num);
SI2C_write(0x12,hour);
SI2C_write(0x13,minute);
SI2C_write(0x11,month);
SI2C_write(0x10,date);
}
void imprime()
{
Tik_num++;
wordtostr(Tik_num,txt);
uart1_write_text("Ticket ");
uart1_write_text(txt);
uart1_write(13);
wordtostr(credito,txt);
uart1_write_text("credito=");
txt[0]='R';txt[1]='$';
uart1_write_text(txt);
uart1_write_text(",00");
uart1_write(13);
ler_rtc();//pega data e hora
converte_hora();
uart1_write_text(txt);
converte_data();
uart1_write_text(txt);
uart1_write(13);
salva_ticket();
Total_credito=Total_credito+credito;//soma valor do ticket ao total
salvar_memoria();
}
//************************************ RELATORIO
void relatorio()
{
end_aux=25;//inicia end
ind_memo=SI2C_read(0)<<8;ind_memo=ind_memo+SI2C_read(1);
do
{
ler_dados_memo();
converte_dados();
}while(end_aux<ind_memo);//imrpime ticket ate ind memoria
//...-------------------------- continua relatorio
//total de tickets
wordtostr(Tik_num,txt);
uart1_write_text("Quant. Total de Ticket=");
uart1_write_text(txt);
uart1_write(13);
wordtostr(Total_credito,txt);
uart1_write_text("Valor Total de Ticket=");
uart1_write_text(txt);
uart1_write_text(",00");
uart1_write(13);
Relat_num++;
shorttostr(Relat_num,txt);
uart1_write_text("Quant. de Relatorios=");
uart1_write_text(txt);
uart1_write(13);
//ultimo relat
//quant zeramentos
//ultimo zeramento
//salva o ultimo relatorio
}
//-------------------------------------------- INTERRUPÇOES
//----------------------------------------------MAIN
void main(void) {
I2C1_Init(100000);
UART1_Init(9600);
TRISA=0B00000000;
trisc=0b10011000;
portc=0;
TRISB=0;
TRISD=0B11111111;
TRISE=0B00000000;
TRISB = 0;
PORTB = 0;
Delay_ms(100);
pulsos=0;
dip=0x10;
credito=100;
ler_memoria();
while(1)
{
//*********************************** relatorio *******************
if (UART1_Data_Ready() == 1) {
//****************************************** relatorio *******************
if(UART1_Read()=='1')
{
relatorio();
}
// imprime ticket
if(UART1_Read()=='2')
{
imprime();
}
//****************************************** apaga memoria *******************
if(UART1_Read()=='3')
{
ind_memo=SI2C_read(0)<<8;ind_memo=ind_memo+SI2C_read(1); //ler end atual
apaga_memoria();
uart1_write_text("memoria apagada");
}
//****************************************** inicializa sistema ****************
if(UART1_Read()=='4')
{
//**************** init indice
SI2C_write(0,0);SI2C_write(1,25);
//**************** init memoria
for(x=2;x<=0x18;x++){SI2C_write(x,0);}
uart1_write(13);
}//******************************************** fim receptor
/*uart1_write_text(time);
uart1_write(13);
uart1_write_text(ddate);*/
/*SI2C_Write(pulsos,sec);
sec=SI2C_Read(pulsos) ;
pulsos++;
SI2C_Write(pulsos,minute);
minute=SI2C_Read(pulsos) ;
pulsos++;
SI2C_Write(pulsos,hour);
hour=SI2C_Read(pulsos) ;
// Transform_Time(); // Format date and time
uart1_write_text(time);*/
// uart1_write(SI2C_Read(pulsos));
// uart1_write(13);
//pulsos++ ;
/*if (UART1_Data_Ready() == 1) {
buf_rs232[ind_rx]=UART1_Read();;
if((ind_rx++)>14)
{
Apaga_buf();
uart1_write_text("ERRO1");
uart1_write(13);
}
if(UART1_Read()==13)
{
LER_RTC();
salva_ticket();
Tik_num++ ;
if((buf_rs232[0]=='H')&& (buf_rs232[6]=='F'))
{
minute=buf_rs232[2]; // read minute
hour=buf_rs232[1]; // read hour
date=buf_rs232[4]; // read date
month=buf_rs232[3]; // read month
year=buf_rs232[5]; // read year
grava_rtc();
uart1_write_text("OK");
uart1_write(13);
}
if((buf_rs232[0]=='C')&& (buf_rs232[1]=='X'))
{
LER_RTC();
uart1_write_text(TIME);
uart1_write(13);
uart1_write_text(DATE);
}
Apaga_buf();
}
}*/
}//while
}
}