8/18/2013

CODE C ĐẾM SỰ KIỆN ĐƠN GIẢN

Nhìn chung thì đây là code c đơn giản hơn so với rất nhiều code c đếm sự kiện khác trên mạng .
Đây là sơ đồ mạch :




















Còn đây là code :
///////////////////////////////////////////////////
//------------------------------------------------------//
//--------------code dem san pham--------------------//
//-------created by haicansa_dientuvietnam.net-------//
//------------------------------------------------------//
///////////////////////////////////////////////////

//-----chen file reg-----//

#include

//-----khai bao bien-----//

unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //ma led 7
unsigned char nghin,tram,chuc,donvi; //khai bao bien so
unsigned long int trunggian; //phuc vu tinh toan

//-----khai bao led 7 doan-----//

sbit led_nghin=P1^0;  //dat chan o cac led anot chung 1 la sang , 0 la tat
sbit led_tram=P1^1;
sbit led_chuc=P1^2;
sbit led_donvi=P1^3;

//-----ham delay-----//

void delay(unsigned char time){ //delay de quyet led
while(time--){
unsigned char j=121;
while(j--);
 };
 }
//-----ham hien thi led-----//

void display(void){
nghin=trunggian/1000;
tram=(trunggian%1000)/100;
chuc=((trunggian%1000)%100)/10;
donvi=(((trunggian%1000)%100)%10);
P2=M[nghin];
led_nghin=1;
delay(100);
led_nghin=0;
P2=M[tram];
led_tram=1;
delay(100);
led_tram=0;
P2=M[chuc];
led_chuc=1;
delay(100);
led_chuc=0;
P2=M[donvi];
led_donvi=1;
delay(100);
led_donvi=0;
 }
 
//-----cai dat ngat-----//

void set_interrupt(){
EA=1; //cho ngat ngoai 0 chan 12
EX0=1;
IT0=1; //ngat xung phat suon
}

//-----ham ngat-----//

void interrupt_out(void) interrupt 0{
trunggian++;
if(trunggian>9999){
trunggian=0;
 };
display();  
}
//-----chuong trinh chinh-----//

void main(){
set_interrupt();
while(1){
display();
};
 }
Tình hình là mô phỏng proteus thì nhiễu led rất nặng không sao xử lí được, mạch thật thì không đủ linh kiện để test, hơn nữa cái này không phải là chưa từng làm nên không muốn đi sâu hơn.

No comments:

Post a Comment