Showing Visitor Messages 1 to 1 of 1
-
mình đang làm đề tài đèn tự đông bật sáng khi có người đến gần công đếm số người dùng trong phòng.mình có thắc măc về phân code cho Pic 16F877A bạn nào biết sửa dùm mình với
#include<16f877.h> //thu vien cho pic
#use delay(clock=20M) //su dung tre
int8 const LED7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};
//mang hien thi cac so tu 0 den 9
long i,L1,L2,ng,x,y,vao,ra; //khai bao cac bien
//============================================//
void den(ng){
if (ng==0) output_a(0); //xuat ra cong a gia tri 0:tat den
else output_a(1); //xuat ra cong a gia tri 1:bat den
}
//============================================//
void led(ng){
L1=(ng/ 1) % 10; // Lay so hang don vi
L2=(ng/ 10) % 10; // Lay so hang chuc
for(i=0;i<100;i++){
output_c(LED7[L2]); output_d(1); delay_ms(1); output_d(0);
// dua ma so hang chuc ra cong C, bat LED 1, tre 1ms roi tat
output_c(LED7[L1]); output_d(2); delay_ms(1); output_d(0);
// dua ma so hang don vi ra cong C, bat LED 2, tre 1ms roi tat
}
}
//============================================//
int dauvao(){ //ctr con dau vao
if ((x==0)&&(y==0)){ //neu bat dau di vao thi thuc hien
x=1; //ghi nhan da qua senso 1
if (ng!=99) ng++; //neu so nguoi con nho hon 99 thi dem tang
}
else if ((x==0)&&(y==1)){ //neu la cuoi cua qua trinh di ra
x=1; //ghi nhan da qua senso 1
}
}
//============================================//
int daura(){ //ctr con dau ra
if ((x==0)&&(y==0)){ //neu bat dau di ra va con nguoi trong phong
y=1; //ghi nhan da qua senso 2
if (ng!=0) ng--; //neu so nguoi con lon hon 0 thi dem giam
}
else if((x==1)&&(y==0)){ //neu la cuoi cua qua trinh vao
y=1; //ghi nhan da qua senso 2
}
}
//============================================//
#INT_rb //khai bao ngat thay doi trang thai cong B
long vaora(){ //ctr ngat cong B
vao=input(pin_b4); //gan bien vao doc du lieu vao chan B4 tu senso 1
ra=input(pin_b5); //gan bien vao doc du lieu vao chan B5 tu senso 2
if (vao==0) dauvao(); //neu co tin hieu vao thi cho chay ctr con dau vao
else if (ra==0) daura(); //neu co tin hieu ra thi cho chay ctr con dau ra
if ((x==1)&&(y==1)&&(vao==1)&&(ra==1)){
//khi ca 2 sense deu da co tin hieu thi cai dat lai
x=0;
y=0;
}
return ng;
}
//============================================//
void main(){
x=y=0; ng=0; //Gan cac gia tri ban dau
set_tris_a(0); //Cong A la cong ra
set_tris_b(0xff); //Cong B la cong vao
set_tris_c(0); //Cong C la cong ra
set_tris_d(0); //Cong D la cong ra
enable_interrupts(INT_rb); //cho phep ngat ngoai dem vach
enable_interrupts(GLOBAL); //cho phep ngat toan cuc
while (1){ //lien tuc kiem tra senso va dieu khien den
led(ng); //goi ham hien thi den led
den(ng); //goi ham bat tat den
}
}