Un ejemplo de programación de controladores de microcontroladores automotrices
# incluir ltreg52.h gt
# incluir ltmath.h gt
#Definir carácter sin firmar uchar
#Definir uint none Símbolo entero
#Definición L_M 1
#Definición R_M 2
uchar temp2, temp1, t, m1, m2, línea roja;
sbit tr=p2^4; //onda ultrasónica
sbit ec=p2^5; //
sbit en=p2^7; //LCD EN
sbit rs=p2^6; //Terminal de selección LCD RS
//Puerto de datos LCD P0
sbit rin_1=p2^0; p>
sbit rin_2=p2^1;
sbit lin_2=p2^2;
sbit lin_1=p2^3;
sbit l_en = p1^0; //Motor izquierdo habilitado
sbit l_1=p1^1; //Control del motor izquierdo 1
sbit l_2=p1^2; //Control del motor izquierdo 2
sbit r_1=p1^3; //Control del motor derecho 1
sbit r_2=p1^4; //Control del motor derecho 2
sbit r_en=p1; ^5; //Motor derecho habilitado
Retraso nulo(uint z) //Retraso programa 1
{
uint x, y;
for(x = z; x gt0; x -)
for(y = 110; y gt0; y-);
}
Retraso no válido 1s (uchart)//Función de retraso de 1s
{
uchar a, h, I, j, k
for(a = t; a gt0;respuesta-)
{
for(h = 5;h gt0;h -)
for(I = 4;i gt0;i -)
for(j = 116;j gt0;j -)
for(k = 214;k gt0;k-);
}
}
void v _ control (número uchar, velocidad uchar)
{
if (velocidad lt100)
p >{
si(número==1)
m1=abs(velocidad);
si (número==2)
p>
m2=abs(velocidad);
}
}
Giro a la izquierda no válido()
{ p>
l _ 1 = 1; //Voltear hacia la izquierda //
l _ 2 = 0;
r _ 1 = 1; derecha
p>
r _ 2 = 0;
}
Giro a la derecha no válido()
{
l _ 1 = 0; //Zheng Zhuan izquierdo
l _ 2 = 1;
r _ 1 = 0 //Giro a la derecha
<; p>r _ 2 = 1;}
void gostright()
{
l _ 1 = 0; Zuo Zheng Zhuan
l _ 2 = 1;
r _ 1 = 1; //Girar a la derecha
r _ 2 = 0; ><
p>}
void goback()
{
l _ 1 = 1 // Zuo Zheng Zhuan
l _ 2; = 0;
r _ 1 = 0; //Giro hacia adelante a la derecha
r _ 2 = 1;
}
No válido Detener()
{
l _ 1 = 1 // Detener
l _ 2 = 1
r _ 1; = 1; //Detener
r _ 2 = 1;
}
temporizador de anulación 0_int()
{ p >
TMOD = 0x 01;
TH0 =-100/256;
TL0 =-100 256;
EA = 1;
p>
ET0 = 1
TR0 = 1
}
state_int()
{
rin_1 = 1
rin_1 = 1
Lin_1 = 1
Lin_1 =; 1;
p>t = 0
m 1 = 50;
m2 = 50
parar(); p>
}
void main()
{
Temporizador 0 _ int()
estado _ int( );
while(1)
{
//Programa para evitar obstáculos
if((Lin _ 1 = = 1) amplificador; amplificador(Lin _ 2 = = 1) amplificador(Rin _ 1 = = 1) amplificador(Rin_2==1))
gostright();
if((Lin _ 1 = = 1) amp; amp(Lin _ 2 = = 1) amp; amp(((Rin _ 1 = = 1) amp; amp(Rin _ 2 = = 0))| |(( Rin _ 1 = = 0) amp; amp(Rin _ 2 = = 1)) |((Rin _ 1 = = 0) amp; amp(Rin_2==0))))
Gire left();
if((Rin _ 1 = = 1) amp; amp(Rin _ 2 = = 1) amp; amp(((Lin _ 1 = = 1) amp; amp(Lin _ 2 = = 0 ))| |((Lin _ 1 = = 0) amp; amp(Lin _ 2 = = 1))|((Lin _ 1 = = 0) amp; amp(Lin_2==0) ))) p>
girar a la derecha();
if(((((Lin _ 1 = = 1) amp; amp(Lin _ 2 = = 0))| |( (Lin _ 1 = = 0) amp; amp(Lin _ 2 = = 1))|((Lin _ 1 = = 0) amp; amp(Lin _ 2 = = 0))) amp((( Rin _ 1 = = 1) amp; amp(Rin _ 2 = = 0)) |((Rin _ 1 = = 0) amp; amp(Rin _ 2 = = 1))|((Rin _ 1 =
= 0) amp; amp(Rin_2==0))))
volver();
if((Lin _ 1 = = 1) amp; amp(Lin _ 2 = = 1) amp; amp(Rin _ 1 = = 1) amp(Rin_2==1))
gostright();
if((Lin _ 1) = = 1) amperio; amperio(Lin _ 2 = = 1) amperio(((Rin _ 1 = = 1) amperio; amperio(Rin _ 2 = = 0))| |((Rin _ 1 = = 0 ) amp; amp(Rin _ 2 = = 1))|((Rin _ 1 = = 0) amp; amp(Rin_2==0))))
Gire a la izquierda (); p> p>
if((Rin _ 1 = = 1) amp; amp(Rin _ 2 = = 1) amp; amp(((Lin _ 1 = = 1) amp; amp(Lin _ 2 = = 0) )| |((Lin _ 1 = = 0) amp; amp(Lin_2 = = 1))|((Lin _ 1 = = 0) amp; amp(Lin_2==0))))
girar a la derecha();
if(((((Lin _ 1 = = 1) amp; amp(Lin _ 2 = = 0))| |((Lin _ 1 = = 0) amp; amp(Lin _ 2 = = 1))|((Lin _ 1 = = 0) amp; amp(Lin _ 2 = = 0))) amp(((Rin _ 1 = = 1 ) amp; amp(Rin _ 2 = = 0)) |((Rin _ 1 = = 0) amp; amp(Rin _ 2 = = 1)) |((Rin _ 1 = = 0) amp ; amp (Rin_2==0))))
volver();
}
mientras(1);
}
Temporizador 0() interrupción 1
{
TH0 =-100/256;
TL0 =-100 256;
p>
Si (t==0)
{
temp 1 = m 1;
temp2 = m2
}
if(t==temp1)
l _ EN = 0;
if(t==temp2) p>
r _ EN = 0;
t
si (t==50)
{
t = 0;
l _ EN = 1;
r _ EN = 1;