tình hình là mình đang lam đồ án , mà sắp tới hạn báo cáo rồi ...
mình có 1 thắc mẳc là ngắt timer trong 8051 dùng như thế nào
đề tài của mình là mach giao thông , có 4 chế độ , ban ngày , ban đêm , cao điểm ( số thời gian thay đổi dài hơn ) , và chỉnh tay .
mình có tham khảo 1 bài trên diễn đàn một mạch , nhưng mạch đó chỉ có 2 chế độ là ban ngày và ban đêm .
mình đã dùng ngắt ngoài một và ngắt ngoài 0 rồi , không biết dùng ngắt timer ntn để khi bấm sw thì đèn xanh và đèn đỏ bên kia sáng @@
code mình nè :
thanks các bác nhé , ai biết thì cứu em , huhu


mình có 1 thắc mẳc là ngắt timer trong 8051 dùng như thế nào

đề tài của mình là mach giao thông , có 4 chế độ , ban ngày , ban đêm , cao điểm ( số thời gian thay đổi dài hơn ) , và chỉnh tay .
mình có tham khảo 1 bài trên diễn đàn một mạch , nhưng mạch đó chỉ có 2 chế độ là ban ngày và ban đêm .
mình đã dùng ngắt ngoài một và ngắt ngoài 0 rồi , không biết dùng ngắt timer ntn để khi bấm sw thì đèn xanh và đèn đỏ bên kia sáng @@
code mình nè :
Code:
#include<AT89X51.h>
unsigned char thoi_gian0,thoi_gian1,thoi_gian2,thoi_gian3,thoi_gian4;
unsigned int over=0;
unsigned char ma[10]={192,249,164,176,153,146,130,248,128,144};
void delay(unsigned int time)
{
unsigned char x,y;
for(x=0;x<time;x++)
{
for(y=0;y<100;y++);
{}
}
}
void h_thi0() // quet led trai
{
unsigned char chuc,donvi;
donvi=thoi_gian0%10;
chuc=thoi_gian0/10;
P2=ma[donvi];
P0_0=1;
delay(1);
P0_0=0;
delay(1);
P2=ma[chuc];
P0_1=1;
delay(1);
P0_1=0;
delay(1);
}
void h_thi1() // quet led phai
{
unsigned char chuc,donvi;
donvi=thoi_gian1%10;
chuc=thoi_gian1/10;
P2=ma[donvi];
P0_2=1;
delay(1);
P0_2=0;
delay(1);
P2=ma[chuc];
P0_3=1;
delay(1);
P0_3=0;
delay(1);
}
void h_thi2() //quet led phai
{
unsigned char chuc,donvi;
donvi=thoi_gian2%10;
chuc=thoi_gian2/10;
P2=ma[donvi];
P0_2=1;
delay(1);
P0_2=0;
delay(1);
P2=ma[chuc];
P0_3=1;
delay(1);
P0_3=0;
delay(1);
}
void h_thi3() ///quet led trai
{
unsigned char chuc,donvi;
donvi=thoi_gian3%10;
chuc=thoi_gian3/10;
P2=ma[donvi];
P0_0=1;
delay(1);
P0_0=0;
delay(1);
P2=ma[chuc];
P0_1=1;
delay(1);
P0_1=0;
delay(1);
}
void bandem(void) interrupt 2 using 0 // dung ngat ngaoi 1 su dung bank 0;
{
P0=0;
P1=0xD2;
delay(240);
P1=0x00;
delay(240);
return;
}
void giay() interrupt 3 using 0 // ngat timer
{
over++;
if(over==4900) //gia tri tinh chinh de delay 1s
{
over=0;
thoi_gian0--;
thoi_gian1--;
thoi_gian2--;
thoi_gian3--;
}
}
void main()
{
TMOD=0x20; //timer0 1 che do 2 tu nap lai
TH1=54; //gia tri nap lai
TR1=1;
ET1=1;
EX1=1;
EA=1; // bit cho phep ngat
while(1)
{
thoi_gian0=24;
thoi_gian1=30;
do
{
P1=0x8c;
h_thi0();
h_thi1();
}
while(thoi_gian0!=-1);
thoi_gian0=5;
thoi_gian1=5;
do
{
P1=0x8a;
h_thi0();
h_thi1();
}
while(thoi_gian0!=-1);
thoi_gian2=24;
thoi_gian3=30;
do
{
P1=0x61;
h_thi2();
h_thi3();
}
while(thoi_gian2!=-1);
thoi_gian2=5;
thoi_gian3=5;
do
{
P1=0x51;
h_thi2();
h_thi3();
}
while(thoi_gian2!=-1);
}
}






Comment