Trích:
Nguyên văn bởi akatsu
#include <16F877A.h>
#include <def_877a.h>
#device adc=8
#FUSES NOWDT, HS, PUT, PROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
//#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
#use fast_io(b)
int8 i=0;
void densang();
void reset();
#int_rb
void ngatngoai()
{
if ((RBIF)&&(RBIE))
{
if(RB0==0)
{//while(RB0==0);
i++;
if(i==10)
{
i=0;
densang();
}
}
if(RB1==0)
{
reset();
}
}
}
}
void main()
{
set_tris_b(0);
set_tris_d(0xff);
enable_interrupts(int_rb);
enable_interrupts(global);
ext_int_edge(L_to_H);
while(true)
{
}
}
void densang()
{
output_high(PIN_D0);
}
void reset()
{
i=0;
output_low(pin_d0);
}
đây là code e mới viết. các cao thủ xem jup e xem có sai sót j k nhá!!!e cám ơn
|
enable_interrupts(int_rb);//chỉ ngắt khi các pin rb4,rb5,rb6,rb7 tác động.
set_tris_b(0);//các chân portb là chân xuất dữ liệu.(nên phím không có tác dụng)
set_tris_d(0xff);//các chân portd là chân nhập dữ liệu.
sửa bài này như sau:
Code:
#include <16F877A.h>
#include <def_877a.h>
#device adc=8
#FUSES NOWDT, HS, PUT, PROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
//#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#use fast_io(b)
int8 i=0;
void densang();
void reset();
#int_rb
void ngatngoai()
{
if((RBIF)&&(RBIE))
{
if(RB4==0)
{
delay_ms(10);//chong rung phim
if(RB4==0)
{
i++;
if(i==10)
{
i=0;
densang();
}
while (RB4==0)//chờ phím nhả
{
}
delay_ms(10);//chong rung phim
}
}
//*******************************
else if(RB5==0)
{
delay_ms(10);//chong rung phim
if(RB5==0)
{
reset();
while (RB5==0)//chờ nhả phím
{
}
delay_ms(10);//chong rung phim
}
}
}
void main()
{
set_tris_b(0xf0);//rb4...rb7 là pin nhập
set_tris_d(0xfe);//pinD0 là pin xuất dữ liệu
enable_interrupts(int_rb);
enable_interrupts(global);
ext_int_edge(H_to_L);
reset();
while(true)
{
}
}
void densang()
{
output_high(PIN_D0);
}
void reset()
{
i=0;
output_low(pin_d0);
}