You are on page 1of 3

#include <system.

h>
#define CLK porta.2
#define DATA porta.3
rom char *numero = {0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0x6f,0x77,0x7c };

void serializar(char a){


for (signed char i=7;i>=0;i--){
test_bit(numero[a],i)? DATA = 1 : DATA = 0;
CLK = 1;
CLK = 0;
}
}

void motor_sube(){ //Ascencin del motor


set_bit(porta, 0);
clear_bit(porta, 1);
}

void motor_baja(){//Desciende motor


clear_bit(porta, 0);
set_bit(porta, 1);
}

void motor_para(){//Si es un piso igual se para


set_bit(porta, 0);
clear_bit(porta, 0);
}
----------// Nivel de piso que se encuentra el ascensor uso de sensor--------
--
void pata4(){
if(test_bit(portb,0)){
motor_para();
}
if(test_bit(portb,1)){
motor_ sube ();
}
if(test_bit(portb,2)){
motor_ sube ();
}
if(test_bit(portb,3)){
motor_ sube ();
}
}
void pata5(){
if(test_bit(portb,0)){
motor_baja();
}
if(test_bit(portb,1)){
motor_para();
}
if(test_bit(portb,2)){
motor_ sube ();
}
if(test_bit(portb,3)){
motor_ sube ();
}
}
void pata6(){
if(test_bit(portb,0)){
motor_baja();
}
if(test_bit(portb,1)){
motor_baja();
}
if(test_bit(portb,2)){
motor_para();
}
if(test_bit(portb,3)){
motor_sube();
}
}
void pata7(){
if(test_bit(portb,0)){
motor_baja();
}
if(test_bit(portb,1)){
motor_baja();
}
if(test_bit(portb,2)){
motor_baja();
}
if(test_bit(portb,3)){
motor_para();
}
}
void main()
{
trisb = 0xFF; // 1111111 entradas
trisa = 0x0; // salidas
set_bit(intcon, RBIE); // habilita la int RB4:RB7
set_bit(intcon, GIE); // habilita interrupciones
while(1);
}
-------------//sensor de interupccin---------------------------------
void interrupt(){
test_bit(portb,4)?pata4():nop();
test_bit(portb,5)?pata5():nop();
test_bit(portb,6)?pata6():nop();
test_bit(portb,7)?pata7():nop();

test_bit(portb,0)?serializar(4):nop();
test_bit(portb,1)?serializar(3):nop();
test_bit(portb,2)?serializar(2):nop();
test_bit(portb,3)?serializar(1):nop();

clear_bit(intcon, RBIF);
}

You might also like