📄 ipic.c
字号:
#include "i_LM629.h"
#include "cmd_LM629.h"
#include "iPIC.h"
#include "ctype.h"
#include "envcar.h"
//Mettre les bonnes broches !
//#use fixed_io(a_outputs=B_DATA, B_CLOCK,PIC_OUT)
#use fast_io(A)
void transfAff()
{
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.";
// Attente et r閏up閞ation du 1er octet de v閞ification
verif=readOctet(); //(1)
If (verif == BEGIN_TRANS)
{
//Si 1er octet OK, on renvoie la valeur au PICBASIC (v閞ification que la transmission se fait correctement dans les 2 sens)
strcpy(s_Action,"ACK");
envoiStr(s_Action,4);
sendOctet(BEGIN_TRANS); //(2)
strcpy(s_Action,"CMOK");
envoiStr(s_Action,4);
// R閏up de l'octet de commande
cmd=readOctet(); //(3)
strcpy(s_Action,"TYPE");
envoiStr(s_Action,4);
sendOctet(BEGIN_TRANS);
//R閏up de l'octet de donn閑
data=readOctet(); //(4)
strcpy(s_Action,"P.OK");
envoiStr(s_Action,4);
//Recherche de la commande
switch(cmd)
{
case CMD_SET_VITESSE : //= 5
strcpy(s_Action,"VIT.");
envoiStr(s_Action,4);
setVitesse(data);
sendOctet(data);
strcpy(s_Action,"F OK");
envoiStr(s_Action,4);
break;
case CMD_SET_ACCEL : //= 6
strcpy(s_Action,"ACC.");
envoiStr(s_Action,4);
setAccel(data);
sendOctet(data); //(5)
strcpy(s_Action,"F OK");
envoiStr(s_Action,4);
break;
case CMD_AVANCE : //= 1
strcpy(s_Action,"AVT");
envoiStr(s_Action,4);
avance(data,AVANCE_AV);
sendOctet(data);
strcpy(s_Action,"F OK");
envoiStr(s_Action,4);
break;
case CMD_RECULE : //= 2
strcpy(s_Action,"REC.");
envoiStr(s_Action,4);
sendOctet(data);
strcpy(s_Action,"F OK");
envoiStr(s_Action,4);
break;
case CMD_TRN_GAUCHE : //= 3
strcpy(s_Action,"GAU.");
envoiStr(s_Action,4);
tourne(data,TOURNE_G);
sendOctet(data);
strcpy(s_Action,"F OK");
envoiStr(s_Action,4);
break;
case CMD_TRN_DROITE : //= 4
strcpy(s_Action,"DROI");
envoiStr(s_Action,4);
tourne(data,TOURNE_D);
sendOctet(data);
strcpy(s_Action,"F OK");
envoiStr(s_Action,4);
break;
case CMD_STOP : //= 7
strcpy(s_Action,"STOP");
envoiStr(s_Action,4);
stop();
data = 0;
sendOctet(data);
strcpy(s_Action,"F OK");
envoiStr(s_Action,4);
break;
case CMD_STOP_TEMP : //= 8
strcpy(s_Action,"STMP");
envoiStr(s_Action,4);
data = stop_temp();
sendOctet(data);
strcpy(s_Action,"F OK");
envoiStr(s_Action,4);
break;
case CMD_RESUME : //= 9
strcpy(s_Action,"RES.");
envoiStr(s_Action,4);
resume();
sendOctet(data);
strcpy(s_Action,"F OK");
envoiStr(s_Action,4);
break;
case CMD_PROPORTIONNEL : //= 10
strcpy(s_Action,"PROP");
envoiStr(s_Action,4);
regler_Proportionnel(data);
sendOctet(data);
strcpy(s_Action,"F OK");
envoiStr(s_Action,4);
break;
case CMD_INTEGRAL : //= 11
strcpy(s_Action,"INTE");
envoiStr(s_Action,4);
regler_integral(data);
sendOctet(data);
strcpy(s_Action,"F OK");
envoiStr(s_Action,4);
break;
case CMD_DERIVEE : //= 12
strcpy(s_Action,"DERV");
envoiStr(s_Action,4);
regler_derivee(data);
sendOctet(data);
strcpy(s_Action,"F OK");
envoiStr(s_Action,4);
break;
case CMD_INTLIMIT : //= 13
strcpy(s_Action,"INTL");
envoiStr(s_Action,4);
regler_intlimit(data);
sendOctet(data);
strcpy(s_Action,"F OK");
envoiStr(s_Action,4);
break;
default :
sendOctet(CMD_INCONNUE);
return;
break;
}
}
else
{
strcpy(s_Action,"ERR!");
envoiStr(s_Action,4);
sendOctet(verif);
}
}
// 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 + -