Thiết kế phần mềm

Một phần của tài liệu Thiết kế hệ thống điều khiển đèn thông minh (Trang 32)

Mã lập trình :

#include<16f877A.h> //thu vien cho Pic #use delay(clock=20M) // khai bao su dung tre int8 const

LED7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //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++){

// 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

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 }

Một phần của tài liệu Thiết kế hệ thống điều khiển đèn thông minh (Trang 32)