Mạch quét 16 phím, hiện kết quả lên led 7 đoạn.

Màu nền
Font chữ
Font size
Chiều cao dòng

Mạch quét 16 phím, hiện kết quả lên led 7 đoạn.

Code:

//*****************************************************************************

// Author : nhh

// Date : 03/04/06

// Hardware: PIC16F877A

//*****************************************************************************

#include <16F877A.h>

#fuses NOWDT,PUT,XT,NOPROTECT

#use delay(clock=4000000)

#use fast_io(b)

#use fast_io(c)

#byte portb = 0x06

#byte portc = 0x07

#bit RB0 = 0x06.0

#bit RB1 = 0x06.1

#bit RB2 = 0x06.2

#bit RB3 = 0x06.3

#bit RB4 = 0x06.4

#bit RB5 = 0x06.5

#bit RB6 = 0x06.6

#bit RB7 = 0x06.7

#bit RBIF=intcon.0 //dinh nghia co ngat RB

#bit RBIE=intcon.3 //dinh nghia bit cho phep ngat RB

int a;

const unsigned char dig[]={0b00111111,0b00000110, 0b01011011,0b01001111,\

0b01100110,0b01101101,0b01111101,0b00000111,0b01111111,0b01101111,0b01110111,\

0b01111100,0b00111001,0b01011110,0b11111001,0b11110001};

// ma hoa digital duoi dang mang

// Chuong trinh ngat

#int_RB

void ngat_RB()

{

if((RBIF)&&(RBIE))

{

{

if(RB4&&RB0)

a=dig[0];

}

{

if(RB4&&RB1)

a=dig[4];

}

{

if(RB4&&RB2)

a=dig[8];

}

{

if(RB4&&RB3)

a=dig[12];

}

//.......

{

if(RB5&&RB0)

a=dig[1];

}

{

if(RB5&&RB1)

a=dig[5];

}

{

if(RB5&&RB2)

a=dig[9];

}

{

if(RB5&&RB3)

a=dig[13];

}

//........

{

if(RB6&&RB0)

a=dig[2];

}

{

if(RB6&&RB1)

a=dig[6];

}

{

if(RB6&&RB2)

a=dig[10];

}

{

if(RB6&&RB3)

a=dig[14];

}

//........

{

if(RB7&&RB0)

a=dig[3];

}

{

if(RB7&&RB1)

a=dig[7];

}

{

if(RB7&&RB2)

a=dig[11];

}

{

if(RB7&&RB3)

a=dig[15];

}

RBIF=0; //Xoa co ngat RB

}

}

// Chuong trinh chinh

main()

{

set_tris_b(0b11110000);

set_tris_c(0);

enable_interrupts(global);

enable_interrupts(int_RB);

ext_int_edge(H_to_L);

portb=0;

portc=0;

while(true)

{

portb=1;

portb=2;

portb=4;

portb=8;

portc=a;

}

}

Bạn đang đọc truyện trên: Truyen2U.Pro