📄 envcar.c
字号:
#include "pic.h"
#include "consts.h"
#include "envcar.h"
#include "string.h"
#use fixed_io(a_outputs=B_DATA, B_CLOCK)//,PIC_OUT)
//#use fixed_io(a_outputs=PIN_A2, PIN_A3)
#use fixed_io(b_outputs=)
#use fixed_io(c_outputs=)
void initEnvoi()
{
output_low(B_CLOCK);
}
void envoiCar(int8 car)
{
int8 i;
if(car==CAR_PAUSE)
{
delay_ms(PAUSE_LENGTH);
car=CAR_CLR;
}
//Signal d'envoi
emmetSignal(0);
//Envoi
for(i=0;i<8;i++)
{
if( (car & (0x01<<i)) == 0)
emmetSignal(0);
else
emmetSignal(1);
}
}
void envoiStr(char * str,int8 nb_car)
{
int8 i;
for(i=0;i<nb_car;i++)
{
if((i%4)==0)
{
if(i==0)
envoiCar(CAR_CLR);
else
{
envoiCar(CAR_PAUSE);
envoiCar(CAR_CLR);
}
}
envoiCar(str[i]);
}
delay_ms(500);
}
void emmetSignal(int1 b)
{
int16 lj;
output_low(B_CLOCK);
for(lj=CPT_ENV;lj>0;lj--){continue;};
//Ne fonctionne pas en fast IO
//il faut ajouter un DELAY_CYCLES(1)
//pour faire un NOP entre les deux instructions
//ici en fixed IO
output_bit(B_DATA,b);
output_high(B_CLOCK);
for(lj=CPT_ENV;lj>0;lj--){continue;};
}
#separate
void affiche_int8(int8 valeur)
{
char *c1;
char *c2;
int8 octet1;
int8 octet2;
octet2 = valeur<<4;
octet2 = octet2>>4;
octet1 = valeur>>4; //bits de pooids forts dans les LSB
c1 = convertir_char(octet1);
c2 = convertir_char(octet2);
envoicar(c1);
envoicar(c2);
delay_ms(500);
}
#separate
void affiche_int16(int16 valeur)
{
char *c1;
char *c2;
char *c3;
char *c4;
int8 i=0;
int8 octet1=0;
int8 octet2=0;
int8 octet3=0;
int8 octet4=0;
for (i=0;i<4;i++)
{
if(bit_test(valeur,i))
bit_set(octet1,i);
if(bit_test(valeur,i+4))
bit_set(octet2,i);
if(bit_test(valeur,i+8))
bit_set(octet3,i);
if(bit_test(valeur,i+12))
bit_set(octet4,i);
};
c1 = convertir_char(octet1);
c2 = convertir_char(octet2);
c3 = convertir_char(octet3);
c4 = convertir_char(octet4);
envoicar(c1);
envoicar(c2);
envoicar(c3);
envoicar(c4);
delay_ms(500);
}
#separate
char convertir_char(int8 octet_char)
{
char *c;
switch(octet_char)
{
case (0) :
strcpy(c,"0");
break;
case (1) :
strcpy(c,"1");
break;
case (2) :
strcpy(c,"2");
break;
case (3) :
strcpy(c,"3");
break;
case (4) :
strcpy(c,"4");
break;
case (5) :
strcpy(c,"5");
break;
case (6) :
strcpy(c,"6");
break;
case (7) :
strcpy(c,"7");
break;
case (8) :
strcpy(c,"8");
break;
case (9) :
strcpy(c,"9");
break;
case (0x0A) :
strcpy(c,"A");
break;
case (0x0B) :
strcpy(c,"B");
break;
case (0x0C) :
strcpy(c,"C");
break;
case (0x0D) :
strcpy(c,"D");
break;
case (0x0E) :
strcpy(c,"E");
break;
case (0x0F) :
strcpy(c,"F");
break;
default :
{
strcpy(c,"X");
}
}
return c;
}
#separate
void ajouter_trace(int8 donnee)
{
if (pos_eeprom_Trace < 0xFF)
{
write_eeprom(pos_eeprom_Trace,donnee);
pos_eeprom_Trace = pos_eeprom_Trace + 1;
}
}
#separate
void lire_trace()
{
int8 i;
if (pos_eeprom_Trace> EEPROM_DEB_TRACE)
{
for (i=EEPROM_DEB_TRACE;i<pos_eeprom_Trace;i++)
{
affiche_int8(read_eeprom(i));
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -