Autor: María Soledad Proaño Rocha.



Documentos relacionados
Microprocesadores. Introducción al Lenguaje C - Parte IV. Prof. Luis Araujo. Universidad de Los Andes

Microprocesadores. Introducción al Lenguaje C - Parte III. Prof. Luis Araujo. Universidad de Los Andes

TALLER DE CONSTRUCCION DE UN MICROBOT RASTREADOR PROGRAMACION TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR

Aplicaciones de mc Lenguaje C- CC5x-Temporizadores

PROFESOR: Práctica 9. Convertidor Analógico-Digital

Segundo Parcial Programación en Mikro C PIC16F877

PROFESOR: Práctica 5. Manejo de Motores

CAPÍTULO 3. Las principales funciones del microcontrolador son: adquirir por medio del A/D y también, mostrar mensajes de pesos y voltaje en el LCD.

btfss PIR1,TMR2IF ; Checa si TMR2 interrumpio goto SAL_ISR ; No, sale de la ISR bcf PIR1,TMR2IF ; Si, borra bandera de interrupcion

PROFESOR: Práctica 8. Temporizador 0 (Timer 0)

MICROCONTROLADORES. 1. El PIC 16F84A es un microcontrolador de: a) 16 bits b) 8 bits c) 4 bits d) 32 bits e) 64 bits

Microprocesadores. Temporizadores / Contadores. Prof. Luis Araujo. Universidad de Los Andes

Competencia de Robótica JOHNNY

Se permiten variables de 8-bit y 16-bit. Pueden ser definidas como globales o locales. La variable local sólo puede ser usada en su ambito

TUTORIAL II parte A. Observemos el diagrama de pines del microcontrolador 16F877A:

Dependiendo del dispositivo usado, se tienen hasta 5 puertos de entrada/salida disponibles: PORTA PORTB PORTC PORTD PORTE

Justificación. Objetivo. Material. Desarrollo

TUTORIAL PRIMERA PARTE: GENERACIÓN DE UN RETARDO CON TIMER.

TEMPORIZADOR 1, 2, 3, 4, 5, 6, 7, 8,... Registro de conteo de pulsos

Se guardan en archivos con extencion c y los cabezales con extension h

Estructuras de repetición hacer-mientras y repita hasta

PRÁCTICA 6: Gobierno del display 7 segmentos

El TIMER 1. (c) Domingo Llorente

Introducción general al Lenguaje C (2010/2011)

Prueba 1. Figura B.1 Diagrama de Bloques de la Conexión Para la Prueba 1. #include <p18f2321.h> #include <USART.h> #include <delays.

Alarma 3G por teléfono móvil

Programa del PIC 16F877A

APÉNDICE B APÉNDICE B. PROGRAMA DEL PIC16F874 EN LENGUAJE ENSAMBLADOR

Cuatro registros se utilizan para leer y para escribir los datos en la EEPROM.

LENGUAJE. Tema 1 - Introducción

MICROPROCESADORES II LENGUAJE C EN LOS MICROCONTROLADORES PIC

CONTROL DE HELADERA. Ing. Tec. Camilo Monetta camilomonetta@gamil.com Salto- Uruguay

Programación en ensamblador y en alto nivel (C)

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA DIVISIÓN DE INGENIERÍA ELÉCTRICA DEPARTAMENTO DE INGENIERÍA EN COMPUTACIÓN

Capítulo VIII: PROGRAMACIÓN DEL PIC 16F876A

Ejercicios De Programación De C++ Algoritmos. Lenguaje De Programación C++:

Microprocesadores, Tema 6:

Usando los Codificadores Cuadráticos

IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++

Programación 1 Tema 5. Instrucciones simples y estructuradas

ANEXO II. PROGRAMACIÓN DEL INTEGRADO PIC16F87XA

Mientras (expresión lógica) Instrucciones a repetir mientras la expresión lógica es verdadera Fin Mientras

Alarma con Interfaz DTMF de Línea Telefónica basado en PIC16F84

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

//This function will read a 2 byte integer from the eeprom at the specified address and address + 1 unsigned int EEPROMReadInt(int p_address)

Programación Estructurada. Sesión 2:El lenguaje de programación C

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Microprocesadores. Introducción al Lenguaje C - Parte V. Prof. Luis Araujo. Universidad de Los Andes

EL módulo conversor A/D. (c) Domingo Llorente

SUMO _ CACAHUETE. Departamento de Electricidad-Electrónica. Ciclo Superior de Desarrollo de Productos Electrónicos. Alumno: Ignacio Díaz Díaz-Regañón.

PROFESOR: Práctica 10. Modulación por ancho de pulso (PWM) Emplea un microcontrolador para procesamiento de señales analógicas y digitales

TIMER0 (T0) TMR0 (01h,101h)

Módulos CCP. Registro de captura Registro de comparación Registro de ciclo de servicio PWM

Apéndice B Programa para calcular inclinación con PIC 16F877A

Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy. Febrero 2009

EducaBot. Motores y movilidad.

= RETURN =3 7-. ELSE K

Examen de Fundamentos de la Programación (Modelo 1)

Práctica 3 Gestión de puertos de entrada

Estructuras de Datos Declaraciones Tipos de Datos

PROYECTO: Velocista y coche teledirigido

UNIVERSIDAD DE OVIEDO

Fundamentos de la programación

GUIA DE EJERCICIOS Nº 2 INSTRUMENTACIÓN AVANZADA

Objetivo. Introducción. Desarrollo. Práctica 11 Contadores por hardware. Implementación de un contador de pulsos digitales

#include <stdio.h> /* Factorial de un número - versión 1- */

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I

Programación 1. Tema II. Diseño de programas elementales. Lección 7. Diseño modular y descendente de programas

Autor: Ing. Nahuel González INTRODUCCIÓN A C. Clase 1

Display 7 segmentos. Ing. Diego Chacón, Mdhd.

SESIÓN DE EJERCICIOS E1

Proyecto Rastreador + Coche Teledirigido

Java. Introducción a la Programación Orientada a Objetos

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)

Estructura de Datos Tema 2. Colas. Contenido

Programación 1 Tema 5. Instrucciones simples y estructuradas

Robot laberinto Raúl Antona Fresno PE21

Prof. Dr. Paul Bustamante

Examen "teórico" mayo Duración: 1 hora 30 minutos.

PROYECTO EN LENGUAJE C CÓDIGO FUENTE

Pseudolenguaje. (1 byte) (valores códigos ASCII) [CHAR_MIN.. CHAR_MAX] (Definida en <limits.h>) No hay. Dominio n 1 [MIN(C)..

Fundamentos de programación

Estructuras Enlazadas AyED UTN-BA

Examen escrito de Programación 1

Transcripción:

#include <16F877A.h> #include <iostream.h> #include<string.h> #use delay(clock=4000000) #define max 2 struct tiempos { int n_int; int valor; ; struct tiempos intentos[max]; const unsigned short SERVOD=PORTB.7 const unsigned short SERVOI=PORTB.6 const unsigned short SERVOU=PORTB.5 const unsigned short ENTRADA=PORTA.0 const unsigned short ULTRASONIDO2=PORTA.1 unsigned short PRENDER; unsigned short ASS; unsigned short CONT; unsigned int TEMPO; unsigned int TEMPO1; unsigned int SONDA1; unsigned int SONDA2; unsigned int SONDA3; unsigned short SALIR; unsigned short COMANDO; unsigned short CONTADOR; unsigned short bandera; unsigned short ESTADO; unsigned short bandera_1; unsigned short CMPN; int VALOR1; int VALOR2;

int VALOR3; unsigned short i; void INICIO() { TRISB=1 ; PORTB=0 ; TRISA=1 ; PORTA=0 ; ADCON1=6 ; INTCON=0b11010000; PIE1= 0b00000001 ; PIR1= 0b00000000 ; TMR1H=0 ; TMR1L=0 ; T1CON=0 ; OPTION_REG=0b10000000; bandera=0 ; bandera_1=0; ESTADO=0 ; PRENDER=0 ; void TIEMPO() { INTCON=0b11000000; TEMPO1=TMR0*2 ; TEMPO=CONT*256 ; TEMPO=TEMPO+TEMPO1 ; void PASO() { TMR0=0; CONT=0 ; INTCON=0b11100000;

void INTERRUPT() { if (INTCON.T0IF=1){ CONT++ ; INTCON=0b11100000 ; if (PIR1.TMR1IF=1){ VALOR1++; TMR1L=0; TMR1H=0 ; PIR1.TMR1IF=0; void ATRAS() { '**** SERVO ATRAS *****************************/ SERVOI=1 ; DELAY_US(1200); SERVOI=0 ; SERVOD=1 ; DELAY_US(1600); SERVOD=0 ; void AVANCE() { /********************************************** '**** SERVO ADELANTE **************************/ if (bandera=0){ FOR (ass=1; ass=2;ass++){

SERVOI=1 ; DELAY_US(1600); SERVOI=0; bandera=1 ; else SERVOI=1 ; DELAY_US(1600); SERVOI=0 ; bandera=0 ; SERVOD=1; DELAY_US(1200); SERVOD=0 ; / void TM1() { INTCON.GIE=1; TMR1H=0 ; TMR1L=0 ; PIR1=0 ; T1CON=1 ; void TM2() { INTCON.GIE=0; TMR1H=0; TMR1L=0; PIR1=0; T1CON=0;

void ATRASDER() { '**** SERVO DERECHO ATRAS *********************/ SERVOD=1 ; DELAY_US(1600); SERVOD=0 ; void AVANCEDER() { /*'**** SERVO ADELANTE D ************************/ /*'AVANCE*/ SERVOD=1 ; DELAY_US(1200); SERVOD=0 ; void ATRASIZQ() { '**** SERVO IZQUIERDO ATRAS *******************/ SERVOI=1 ; DELAY_US(1200); SERVOI=0 ; void AVANCEIZQ() {

'**** SERVO ADELANTE **************************/ SERVOI=1 ; DELAY_US(1600); SERVOI=0 ; void STOPID() { '**** SERVO STOP ******************************/ SERVOD=1 ; SERVOI=1; DELAY_US(1500); SERVOI=0 ; SERVOD=0 ; DELAY_MS(20) ; void STOPI() { '**** SERVO STOP I ****************************/ SERVOI=1 ; DELAY_US(1500); SERVOI=0 ; DELAY_MS(20) ;

void STOPD() { '**** SERVO STOP D ****************************/ SERVOD=1 ; DELAY_US(1500); SERVOD=0 ; DELAY_MS(20) ; void ATRASUP() { '**** SERVO UP ATRAS *******************/ SERVOU=1 ; DELAY_US(1400); SERVOU=0 ; void AVANCEUP() { '**** SERVO UP AVANCE *******************/ SERVOU=1 ; DELAY_US(1607); SERVOU=0 ; DELAY_MS(20) ; void STOPD() { '**** SERVO STOP D ****************************/

SERVOU=1 ; DELAY_US(1500); SERVOU=0 ; void FUNCION() { FOR (ASS=1; ass=2;ass++){ PORTB.4=1 ; DELAY_MS(10); PORTB.4=0 ; void DATOS() { PORTB.4=1 ; DELAY_MS(10) ; PORTB.4=0 ; TRISA.1=0 ; ULTRASONIDO2=1 ; DELAY_US(5) ; ULTRASONIDO2=0; TRISA.1=1 ; WHILE {SALIR<1 if (ULTRASONIDO2 = 1){ PASO ; SALIR=2; WHILE (SALIR<1) {

if (ULTRASONIDO2 = 0) { TIEMPO ; SALIR=2 ; SONDA2=TEMPO ; void SCANER() { FOR (comando=1; comando=2;comando++){ ATRASUP ; FOR (comando=1; comando=12;comando++){ AVANCEUP ; DATOS ; SONDA1=SONDA2 ; DELAY_MS(500) ; FOR (comando=1; comando=2;comando++){ AVANCEUP ; FOR (comando=1; comando=8;comando++){ SERVOU=1 ; DELAY_US(1150) ; SERVOU=0 ;

DATOS ; SONDA3=SONDA2; DELAY_MS(500); // main void main() { INICIO(); WHILE (1){; SALIR=0; WHILE (SALIR<1){ IF (ENTRADA = 0){ AVANCE ; SALIR=2 ; DELAY_MS(1000); INC(CONTADOR); VALOR1=0; TM1 ; SALIR=0 WHILE (SALIR < 1){ DATOS ; AVANCE ; IF (SONDA2 < 500){ TM2 ; FOR (comando=1; comando=20;comando++){ ATRAS ;

FOR (comando=1; comando=50;comando++){ STOPI ; AVANCEDER; FOR (comando=1; comando=40;comando++){ STOPD; AVANCEIZQ; INTCON.GIE=1 ; FOR (ass=1; ass=2;ass++){ INC(VALOR1); TM1; IF (ENTRADA=0){ DELAY_MS(200) ; SALIR=2; TM2 VALOR2 = VALOR1 VALOR1 = 0 DELAY_MS(2000) ; WHILE (SALIR<1){ IF (ENTRADA = 0){ SALIR=2 ;

AVANCE ; DELAY_MS(1000) ; INC(CONTADOR) ; VALOR1=0 ; TM1 ; SALIR=0 WHILE (SALIR < 1){ DATOS ; AVANCE ; IF (SONDA2 < 500){ TM2 ; FOR (comando=1; comando=20;comando++){ ATRAS ; FOR (comando=1; comando=40;comando++){ STOPD ; AVANCEIZQ; FOR (comando=1; comando=45;comando++){ STOPI ; AVANCEDER ; FOR (ass=1; ass=30;ass++){ INC(VALOR1); TM1; IF (ENTRADA=0){ DELAY_MS(200);

SALIR=2 ; TM2 ; VALOR3 = VALOR1; VALOR1 = 0 ; DELAY_MS(2000); intentos[0].n_int=0; intentos[0].valor=valor2; intentos[1].n_int=1; intentos[1].valor=valor3; IF (intentos[0].valor < intentos[1].valor){ CMPN=0; ELSE CMPN=1 ; IF (CMPN=0){ WHILE (SALIR<1){ IF (ENTRADA = 0) { AVANCE ; SALIR=2 ; DELAY_MS(1000);

INC(CONTADOR); WHILE (SALIR < 1){ DATOS ; AVANCE ; IF (SONDA2 < 500){ FOR (comando=1; comando=20;comando++){ ATRAS ; FOR (comando=1; comando=50;comando++){ STOPI ; AVANCEDER; FOR (comando=1; comando=45;comando++){ STOPD ; AVANCEIZQ; IF (ENTRADA=0){ THEN DELAY_MS(200); SALIR=2 ; DELAY_MS(2000); IF (CONTADOR=3){ CONTADOR=0; ELSE

WHILE (SALIR<1){ IF (ENTRADA = 0){ AVANCE ; SALIR=2 ; DELAY_MS(1000) ; INC(CONTADOR) ; WHILE (SALIR < 1){ DATOS ; AVANCE ; FUNCION; IF (SONDA2 < 500) { FOR (comando=1; comando=20;comando++){ ATRAS ; FOR (comando=1; comando=50;comando++){ STOPD ; AVANCEIZQ; FOR (comando=1; comando=40;comando++){ STOPI; AVANCEDER; IF (ENTRADA=0){ DELAY_MS(200) ;

SALIR=2; DELAY_MS(2000); SALIR=0; IF (CONTADOR=3){ CONTADOR=0; //~!