You are on page 1of 3

#include <xc.

h>
#include <PIC16F877A.h>
#include <pic.h>
#define _XTAL_FREQ 4000000
#include "lcd_n.h"
#include <stdio.h>
#include <stdarg.h>
#pragma config FOSC = XT // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial
Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for program
ming)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data
EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write
protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Cod
e protection off)
#define __delay_us(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000000)))
#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000)))
int c=0;
//int q=0;
//int p=0;
char tabla[4]={'5','6','8','9'};
//char tabla[16]={'1','2','3','A','4','5','6','B','7','8','9','C','*','0','#','D
'};
void paso (int);
void manejomot (int);
void teclado(int);
void teclado(int n)
{
char buffer1[16];
sprintf(buffer1,"%c",tabla[n]); //guardamos en el string Buffer1 la palabr
a Cuenta espacio y el valor de i
Lcd_Out(2,c, buffer1); //escribimos en el renglon uno espaco 1 la
que contiene buffer1
c++;
if(c==16)
{c=0;}
}
void manejomot(int q)
{
if(q==0 && q==1){
{PORTC=0x01;}
//__delay_ms(100);}
}
if(q==2)
// Lcd_Cmd(LCD_CLEAR); //limpiamos lcd
//Lcd_Cmd(LCD_CURSOR_OFF); //apagamos el cursor
//__delay_ms(100);
//Lcd_Out(1,0,"Girando a la derecha:");
{PORTC=0x02;}
__delay_ms(500);
//secuencias motor paso a paso
//if(q==3)
//PORTC=0xA0;
//__delay_ms(50);
// PORTC=0x90;
// __delay_ms(50);
// PORTC=0x50;
// __delay_ms(50);
// PORTC=0x60;
// __delay_ms(50);
}
void paso (int p)
{
if(p==8){
PORTC=0xA0;
__delay_ms(900);
PORTC=0x90;
__delay_ms(900);
PORTC=0x50;
__delay_ms(900);
PORTC=0x60;
__delay_ms(900);
}
//VELOCIDADES INVERSAS
if(p==9){
PORTC=0x60;
__delay_ms(900);
PORTC=0x50;
__delay_ms(900);
PORTC=0x90;
__delay_ms(900);
PORTC=0xA0;
__delay_ms(900);
}
}
int main ()
{
TRISB = 0xF0;
TRISD = 0x00;
TRISC = 0X00;
OPTION_REGbits.nRBPU = 0;
PORTC = 0x00;
Lcd_Init(); //inicializamos el lcd
Lcd_Cmd(LCD_CLEAR); //limpiamos lcd
Lcd_Cmd(LCD_CURSOR_OFF); //apagamos el cursor
__delay_ms(100);
Lcd_Out(1,0,"DiGite un numero:");
int arreglo1[2]={0xFD,0xFB};
//int arreglo1[4]={0xFE,0xFD,0xFB,0xF7};
int i=0,CONT=0;
while (1)
{
for(i=0;i<=1;i++)
{
PORTB=arreglo1[i];
// if(PORTBbits.RB4==0)
// {teclado(CONT);manejomot(CONT);paso(CONT);}
// else{CONT++;}
if(PORTBbits.RB5==0)
{teclado(CONT);manejomot(CONT);paso(CONT);}
else{CONT++;}
if(PORTBbits.RB6==0)
{teclado(CONT);manejomot(CONT);paso(CONT);}
else{CONT++;}
// if(PORTBbits.RB7==0)
// {teclado(CONT);manejomot(CONT);paso(CONT);}
// else{CONT++;}
}
CONT=0;
}
}

You might also like