You are on page 1of 6

x

MATERIA:

MICROCONTROLADORES PARA LA INSTRUMENTACION Y CONTROL

ALUMNOS:

MAYRA BEATRIZ MANDUJANO SNCHEZ JESS ANTONIO HURTADO HERNNDEZ

TEMA:

MOTOR A PASOS

PROFESOR:

ING. RICARDO FRANCISCO JOS HERNNDEZ HERNNDEZ

GRUPO:

MA04SM-11
SAN JUAN DEL RO 25 DE FEBRERO DEL 2013

OBJETIVO El alumno deber realizar un contador que vaya de forma ascendente o descendente segn se marquen sus lmites y su velocidad y cualquiera de estos datos puede ser modificable y se tiene que ajustar para seguir segn el transcurso que le corresponda. PSEUDOCDIGO Y DIAGRAMA DE FLUJO 1. Contador Ascendente Descendente con lmites. 2. Lmites. - Superior. - Inferior. - Modificables. 3. Conteo. - Que la velocidad sea variable en 4 niveles - La cuenta empieza en el lmite inferior. 4. Salidas. - mi cuenta se muestra en 3 displays. - Unidades, Decenas, Centenas. 5. Leer los limites (inferior y superior) 6. Leer la velocidad de conteo. 7. Validar los datos de entrada. LimSup > 0 LimSup > LimInf - Velocidad >1 y <5 8. Empezar cuenta. - cuenta = LimInf - Incrementar cuenta hasta LimSup - Si cuenta > LimSup - Cuenta=LimSup(espera(velocidad)) - Comienza descenso - Decrementa la cuenta hasta el LimInf(espera(velocidad)) - Si cuenta < LimInf (nuevo) - Cuenta=LimInf - Comienza ascenso

1. Espera (velocidad) o Leer Velocidad o Escoger retardo en funcin de velocidad o Bucle segn el retardo

2. Despliegue o Convertir binario a bcd o Centenas = cuenta/100 o Uni_dec = cuenta%100 o Decenas = uni_dec/10 o Unidades = uni_dec%10 o Centenas ----> PORTE o ((decenas*16)+unidades)---> PORTD

CDIGO void retardo(char vel) { unsigned int temps, i; switch (vel) { case 1: temps=250; break; case 2: temps=500; break; case 3: temps=750; break; case 4: temps=1000; break; default: temps = 0; break; } for (i=0;i<=temps;i++) { delay_ms(1); } } void main() { char inx=0, mask, vel=0, lim, sent, sec; char ps[4]={1,2,4,8}; char mp[8]={1,3,2,6,4,12,8,9}; char dp[4]={9,3,6,12}; TRISA= 0X3F; TRISB= 0X00; TRISc= 0X00; anselh= 0X00; ansel= 0X00; mask= OSCCON &0x70; OSCCON = mask; for(;;) { vel=porta & 0x07; sec=(portA >>3) & 0x03; if ((vel<5)&&(vel>0) && sec>0){ switch (sec) { case 1:{ lim=3; portb=ps[inx]; break; } case 2: { lim=7;

portb=mp[inx]; break; } case 3: { lim=3; portb=dp[inx]; break; } default: { portB=0; inx=0; break; } } retardo(vel); if(PORTA.B5 == 0) { if(inx >= lim) { inx = 0; } else { inx ++; } } else { if(inx == 0) { inx = lim; } else { inx --; } } } else { PORTB = 0; inx = 0; } } }

SIMULACIN

CONCLUSIONES Mayra Beatriz Mandujano Snchez En la prctica pudimos realizar lo que fue un contador ascendente descendente con lmites superior e inferior modificados por una velocidad y aunque tuvimos varias dificultades con el programa una de ellas fue el configurar adecuadamente los puertos y asi comprenderlo mejor. Jess Antonio Hurtado Hernndez En lo personal concluyo que este programa me cost mucho y no fue por que no entendiera el lenguaje, si no por varios errores de sintaxis en el cdigo que me haca que el programa no funcionara correctamente, yo no pudo encontrarlos por mi propia mano hasta que me ayudo el maestro. Finalmente puedo decir que ahora tendr ms cuidado en los puntos, llaves y parntesis dentro del cdigo, esto me ayud mucho para evitar esos errores.

You might also like