📄 ipic.c
字号:
#include "iPIC.h"
#include "consts.h"
#use fast_io(A)
void testCmd()
{
/* choix(CMD_PROPORTIONNEL,);
choix(CMD_INTEGRAL,);
choix(CMD_DERIVEE,);
choix(CMD_INTLIMIT,);*/
envoicar("TEST");
envoicar(CAR_PAUSE);
choix(CMD_AVANCE,20);
envoicar("RDIP");
envoicar(CAR_PAUSE);
Afficher_Registres_LM1(RDIP);
Afficher_Registres_LM2(RDIP);
envoicar("RDDP");
envoicar(CAR_PAUSE);
Afficher_Registres_LM1(RDDP);
Afficher_Registres_LM2(RDDP);
//choix(CMD_STOP,1);
envoicar(CAR_PAUSE);
envoicar(CAR_PAUSE);
envoicar(CAR_PAUSE);
envoicar(CAR_PAUSE);
envoicar(CAR_PAUSE);
envoicar("RDIP");
envoicar(CAR_PAUSE);
Afficher_Registres_LM1(RDIP);
Afficher_Registres_LM2(RDIP);
envoicar("RDDP");
envoicar(CAR_PAUSE);
Afficher_Registres_LM1(RDDP);
Afficher_Registres_LM2(RDDP);
}
void waitForCmd()
{
unsigned int8 car=0; //pour v閞if bonne com.
unsigned int8 data=0; //pour donn閑 dela commande
unsigned int8 cmd=0; //code de la commande
unsigned int8 verif=0; //octet de v閞ification
char s_Action[5]="ACT.";
set_tris_a(0xFF);
envoiCar("ATT.");
//while(1)
//{
// Attente et r閏up閞ation du 1er octet de v閞ification
verif=readOctet();
If (verif == BEGIN_TRANS)
{
//Si 1er octe OK, on renvoie la valeur au PICBASIC (v閞ification que la transmission se fait correctement dans les 2 sens)
envoiCar("ACK");
sendOctet(BEGIN_TRANS);
envoiCar("CMOK");
// R閏up de l'octet de commande
cmd=readOctet();
envoiCar("TYPE");
sendOctet(BEGIN_TRANS);
//R閏up de l'octet de donn閑
data=readOctet();
envoiCar("P.OK");
// ajouter_trace(cmd);
// ajouter_trace(data);
//Recherche de la commande
choix(cmd,data);
}
else
{
envoiCar("ERR!");
sendOctet(verif);
}
//}
}
#separate
void choix(int8 cmd,int8 data)
{
char s_Action[5]="****";
#ifdef SANS_PIC_BASIC
set_tris_a(0xDF);
output_low(PIC_DATA);
#endif //SANS_PIC_BASIC
switch(cmd)
{
case CMD_SET_VITESSE : //= 5
envoiCar("VIT.");
setVitesse(data);
FinEnvoi(data);
Write_EEPROM(EEPROM_MEM_VIT,data);
break;
case CMD_SET_ACCEL : //= 6
envoiCar("ACC.");
setAccel(data);
FinEnvoi(data);
Write_EEPROM(EEPROM_MEM_ACC,data);
break;
case CMD_AVANCE : //= 1
envoiCar("AVT");
envoicar(CAR_PAUSE);
avance(data,AVANCE_AV);
FinEnvoi(data);
break;
case CMD_RECULE : //= 2
envoiCar("REC.");
avance(data,AVANCE_RE);
FinEnvoi(data);
break;
case CMD_TRN_GAUCHE : //= 3
envoiCar("GAU.");
tourne(data,TOURNE_G);
FinEnvoi(data);
break;
case CMD_TRN_DROITE : //= 4
envoiCar("DROI");
tourne(data,TOURNE_D);
FinEnvoi(data);
break;
case CMD_STOP : //= 7
envoiCar("STOP");
stop();
FinEnvoi(data);
break;
case CMD_STOP_TEMP : //= 8
envoiCar("STMP");
envoicar(CAR_PAUSE);
FinEnvoi(stop_temp());
break;
case CMD_RESUME : //= 9
envoiCar("RES.");
resume();
FinEnvoi(data);
break;
case CMD_PROPORTIONNEL : //= 10
envoiCar("PROP");
regler_Proportionnel(data);
FinEnvoi(data);
Write_EEPROM(EEPROM_PROP,data);
break;
case CMD_INTEGRAL : //= 11
envoiCar("INTE");
regler_integral(data);
FinEnvoi(data);
Write_EEPROM(EEPROM_INT,data);
break;
case CMD_DERIVEE : //= 12
envoiCar("DERV");
regler_derivee(data);
FinEnvoi(data);
Write_EEPROM(EEPROM_DER,data);
break;
case CMD_INTLIMIT : //= 13
envoiCar("INTL");
regler_intlimit(data);
FinEnvoi(data);
Write_EEPROM(EEPROM_INTLIMIT,data);
break;
case CMD_PURGE_TRACE : //= 14
envoiCar("PURG");
purge_trace();
FinEnvoi(data);
break;
case CMD_LIRE_TRACE : //= 15
envoiCar("TRAC");
lire_trace();
FinEnvoi(data);
break;
case CMD_LIRE_PID : //= 16
envoiCar("PID?");
lire_PID();
FinEnvoi(data);
break;
default :
sendOctet(CMD_INCONNUE);
//return;
break;
}
}
void FinEnvoi(int8 data)
{
sendOctet(data);
EnvoiCar("F OK");
EnvoiCar(CAR_PAUSE);
}
// Lit un octet issu du PICBASIC
unsigned int8 readOctet()
{
unsigned int8 res;
unsigned int8 i;
res = 0x00;
set_tris_a(0xFF);
// Attente du cr閚eau de d閜art, lanc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -