Chào các bạn trong bài đăng này mình sẽ hướng dẫn các bạn giao tiếp với nút nhấn và sử dụng phần mềm vb 6.0 PIC16F877A CCS.
- Đây là ảnh mô phỏng protues.
- Đây là code chương trình.
#include <16f877a.h>
#use delay(clock=20000000)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD ,NOWRT
#use rs232(baud=9600,parity=n,xmit=PIN_C6,rcv=PIN_C7)
char ch;
int8 a;
#define nut1 PIN_B0
#define nut2 PIN_B1
#define nut3 PIN_B2
#define nut4 PIN_B3
#define nut5 PIN_B4
#define nut6 PIN_B5
#define nut7 PIN_B6
#define nut8 PIN_B7
#int_RDA
void Receive_isr()
{
ch=getc();
if(ch=='1')
a=1;
if(ch=='2')
a=2;
if(ch=='3')
a=3;
if(ch=='4')
a=4;
if(ch=='A')
a=5;
if(ch=='B')
a=6;
if(ch=='C')
a=7;
if(ch=='D')
a=8;
}
void banphim()
{
if(input(PIN_B0)==0)
a=1;
if(input(PIN_B1)==0)
a=2;
if(input(PIN_B2)==0)
a=3;
if(input(PIN_B3)==0)
a=4;
if(input(PIN_B4)==0)
a=5;
if(input(PIN_B5)==0)
a=6;
if(input(PIN_B6)==0)
a=7;
if(input(PIN_B7)==0)
a=8;
}
void main()
{
ENABLE_INTERRUPTS(INT_RDA);
enable_interrupts(GLOBAL);
SET_TRIS_B( 0xff );
while(TRUE)
{
banphim();
if(a==1)
{
putc('1');
for(;;)
{
banphim();
output_high(pin_A0);
if( a==2 || a==3 || a==4 || a==5 || a==6 || a==7 || a==8)
break;
}
}
if(a==2)
{
putc('2');
for(;;)
{
banphim();
set_tris_a(0);
output_high(pin_A1);
if( a==1 || a==3 || a==4 || a==5 || a==6 || a==7 || a==8)
break;
}
}
if(a==3)
{
putc('3');
for(;;)
{
banphim();
set_tris_a(0);
output_high(pin_A2);
if(a==1 || a==2 || a==4 || a==5 || a==6 || a==7 || a==8)
break;
}
}
if(a==4)
{
putc('4');
for(;;)
{
banphim();
set_tris_a(0);
output_high(pin_A3);
if( a==1 || a==2 || a==3 || a==5 || a==6 || a==7 || a==8)
break;
}
}
if(a==5)
{
putc('A');
for(;;)
{
banphim();
set_tris_a(0);
output_low(pin_A0);
if( a==1 || a==2 || a==3 || a==4 || a==6 || a==7 || a==8)
break;
}
}
if(a==6)
{
putc('B');
for(;;)
{
banphim();
set_tris_a(0);
output_low(pin_A1);
if( a==1 || a==2 || a==3 || a==4 || a==5 || a==7 || a==8)
break;
}
}
if(a==7)
{
putc('C');
for(;;)
{
banphim();
set_tris_a(0);
output_low(pin_A2);
if(a==1 || a==2 || a==3 || a==4 || a==5 || a==6 || a==8)
break;
}
}
if(a==8)
{
putc('D');
for(;;)
{
banphim();
set_tris_a(0);
output_low(pin_A3);
if(a==1 || a==2 || a==3 || a==4 || a==5 || a==6 || a==7 )
break;
}
}
}
}
Còn code và giao diện VB các bạn download về trong project có đầy đủ nha !
- Link download project Click here
- Đây là ảnh mô phỏng protues.
- Đây là code chương trình.
#include <16f877a.h>
#use delay(clock=20000000)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD ,NOWRT
#use rs232(baud=9600,parity=n,xmit=PIN_C6,rcv=PIN_C7)
char ch;
int8 a;
#define nut1 PIN_B0
#define nut2 PIN_B1
#define nut3 PIN_B2
#define nut4 PIN_B3
#define nut5 PIN_B4
#define nut6 PIN_B5
#define nut7 PIN_B6
#define nut8 PIN_B7
#int_RDA
void Receive_isr()
{
ch=getc();
if(ch=='1')
a=1;
if(ch=='2')
a=2;
if(ch=='3')
a=3;
if(ch=='4')
a=4;
if(ch=='A')
a=5;
if(ch=='B')
a=6;
if(ch=='C')
a=7;
if(ch=='D')
a=8;
}
void banphim()
{
if(input(PIN_B0)==0)
a=1;
if(input(PIN_B1)==0)
a=2;
if(input(PIN_B2)==0)
a=3;
if(input(PIN_B3)==0)
a=4;
if(input(PIN_B4)==0)
a=5;
if(input(PIN_B5)==0)
a=6;
if(input(PIN_B6)==0)
a=7;
if(input(PIN_B7)==0)
a=8;
}
void main()
{
ENABLE_INTERRUPTS(INT_RDA);
enable_interrupts(GLOBAL);
SET_TRIS_B( 0xff );
while(TRUE)
{
banphim();
if(a==1)
{
putc('1');
for(;;)
{
banphim();
output_high(pin_A0);
if( a==2 || a==3 || a==4 || a==5 || a==6 || a==7 || a==8)
break;
}
}
if(a==2)
{
putc('2');
for(;;)
{
banphim();
set_tris_a(0);
output_high(pin_A1);
if( a==1 || a==3 || a==4 || a==5 || a==6 || a==7 || a==8)
break;
}
}
if(a==3)
{
putc('3');
for(;;)
{
banphim();
set_tris_a(0);
output_high(pin_A2);
if(a==1 || a==2 || a==4 || a==5 || a==6 || a==7 || a==8)
break;
}
}
if(a==4)
{
putc('4');
for(;;)
{
banphim();
set_tris_a(0);
output_high(pin_A3);
if( a==1 || a==2 || a==3 || a==5 || a==6 || a==7 || a==8)
break;
}
}
if(a==5)
{
putc('A');
for(;;)
{
banphim();
set_tris_a(0);
output_low(pin_A0);
if( a==1 || a==2 || a==3 || a==4 || a==6 || a==7 || a==8)
break;
}
}
if(a==6)
{
putc('B');
for(;;)
{
banphim();
set_tris_a(0);
output_low(pin_A1);
if( a==1 || a==2 || a==3 || a==4 || a==5 || a==7 || a==8)
break;
}
}
if(a==7)
{
putc('C');
for(;;)
{
banphim();
set_tris_a(0);
output_low(pin_A2);
if(a==1 || a==2 || a==3 || a==4 || a==5 || a==6 || a==8)
break;
}
}
if(a==8)
{
putc('D');
for(;;)
{
banphim();
set_tris_a(0);
output_low(pin_A3);
if(a==1 || a==2 || a==3 || a==4 || a==5 || a==6 || a==7 )
break;
}
}
}
}
Còn code và giao diện VB các bạn download về trong project có đầy đủ nha !
- Link download project Click here
EmoticonEmoticon