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