Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 15

MECATRÓNICA

Sistemas
Laboratori Embebidos MCT
o 3202

Nombre: Javier Sebastian Perez


Código utilizado para elaborar un teclado matricial

#include <18F4550.h>

#fuses hs,NOWDT

#use delay(clock=20M)

#byte TRISD=0xF95

#BYTE port_b= 0xF81

#byte PORTD=0xF83

int fl0=1;

int fl1=1;

int fl2=1;

int fl3=1;

#int_RB

PortB_Interrupt()

if ((input(pin_B4)==1) && (fl0 == 1))

PORTD= 0X06;

break;

if((input(pin_B5)==1) && (fl0 == 1))

PORTD= 0X5B;
break;

if((input(pin_B6)==1) && (fl0 == 1))

PORTD= 0X4F;

break;

if((input(pin_B7)==1) && (fl0 == 1))

PORTD= 0X77

break;

//Fila1

if ((input(pin_B4)==1) && (fl1 == 1))

PORTD= 0X66;

break;

if((input(pin_B5)==1) && (fl1 == 1))

PORTD= 0X6D;

break;

if((input(pin_B6)==1) && (fl1 == 1))

PORTD= 0X7C;
break;

if((input(pin_B7)==1) && (fl1 == 1))

PORTD= 0X7F;

break;

//Fila2

if ((input(pin_B4)==1) && (fl2 == 1))

PORTD= 0X07;

break;

if((input(pin_B5)==1) && (fl2 == 1))

PORTD= 0X7F;

break;

if((input(pin_B6)==1) && (fl2 == 1))

PORTD= 0X6F;

break;

if((input(pin_B7)==1) && (fl2 == 1))

{
PORTD= 0X39;

break;

//Fila3

if ((input(pin_B4)==1) && (fl3 == 1))

PORTD= 0X06;

break;

if((input(pin_B5)==1) && (fl3 == 1))

PORTD= 0X5B;

break;

if((input(pin_B6)==1) && (fl3 == 1))

PORTD= 0X4F;

break;

if((input(pin_B7)==1) && (fl3 == 1))

PORTD= 0X77;

break;

}
void main(){

set_tris_b(0b11110000);

port_b_pullups(true); // Resistencias Act.

enable_interrupts(GLOBAL);

enable_interrupts(INT_RB);

ext_int_edge(L_TO_H);

TRISD=0;

PORTD=0;

while(true)

output_high(pin_B0);

fl0=1;

output_low(pin_B1);

fl1=0;

output_low(pin_B2);

fl2=0;

output_low(pin_B3);

fl3=0;

output_low(pin_B0);

fl0=0;

output_high(pin_B1);

fl1=1;

output_low(pin_B2);

fl2=0;

output_low(pin_B3);
fl3=0;

output_low(pin_B0);

fl0=0;

output_low(pin_B1);

fl1=0;

output_high(pin_B2);

fl2=1;

output_low(pin_B3);

fl3=0;

output_low(pin_B0);

fl0=0;

output_low(pin_B1);

fl1=0;

output_low(pin_B2);

fl2=0;

output_high(pin_B3);

fl3=1;

}
Código interrupción, laboratorio parte 2.

#INCLUDE <18F4550.h>

#use delay (clock=20M)

#fuses hs,nowdt,noput,noprotect,nolvp

#use fast_io(D)

int cont;

#INT_TIMER0

void timerDesborde (void){

cont++;

if (cont==300){

output_toggle(PIN_D0);

cont=0;

}
set_timer0(3);

void main() {

set_tris_d(0x00);

setup_timer_0(RTCC_DIV_256|RTCC_INTERNAL|RTCC_8_bit);

set_timer0(3);

enable_interrupts(INT_TIMER0);

enable_interrupts(GLOBAL);

cont=0;

output_high(PIN_D0);

while(true){

You might also like