Code:
/*==================Bo tien xu li===================*/
#include<AT89x51.h> // Dinh kem file thu vien
/*=================Khai bao bien toan cuc=============*/
sfr dataP = 0x90; // du lieu la P1
// ma 7 thanh tu 0 den 9 la
// 0x81h,0xcfh,0x92h,0x86h,0xcch,0xa4,0xa0h,0x8fh,0x80h,0x84h.
sbit ctac = P3^4;
unsigned char dem=0;
unsigned int i=0;
/*====================Khai bao ham==================*/
/*----------------------------ham delay========================*/
void delay(char time)
{ while(time--)
{
TH0=0x3C;
TL0=0xAF;
TR0=1;
while(TF0==0);
TF0=0;
TR0=0;
}
}
/*----------------------chuong trinh con kiem tra co phim nhan-------------*/
void phim_an(void)
{
if(ctac==0) //co phim nhan
{
delay(1); //chong rung phim
while(ctac==0); //Cho nha phim
delay(1); // chong rung phim
dem++; //tang bien dem
if(dem==10) dem=0;
}
}
/*----------------hien thi so lan an phim------------------------------------------*/
void solan_an(void)
{
switch(dem)
{
case 0: {dataP=0x81;break;}
case 1: {dataP=0xcf;break;}
case 2: {dataP=0x92;break;}
case 3: {dataP=0x86;break;}
case 4: {dataP=0xcc;break;}
case 5: {dataP=0xa4;break;}
case 6: {dataP=0xa0;break;}
case 7: {dataP=0x8f;break;}
case 8: {dataP=0x80;break;}
case 9: {dataP=0x84;break;}
};
}
void auto_time(void)
{
if(dem==10)dem=0;
dem++;
}
/*-------------------------chuong trinh chinh-------------------------------------------*/
// ngat
void ngat(void) interrupt 1 using 2
{
TR0=0;
TH0=0x3C;
TL0=0xAF;
dataP=0x84;
TR0=1;
}
void main(void)
{
dataP = 0x81; // ban dau la so 0
TMOD=0x01;
while(1){
// phim_an();
IE=0x82;
auto_time();
solan_an();
delay(50);
}
}
- và với việc làm đơn giản thế, em đã code ra đoạn trên, nhưng mà không chạy được, nó cứ hiện số 9 hoài không nhảy ra ngoài tiếp được.
mong a e giúp đỡ. (vì chưa hiểu rõ về các khai báo sử dụng ngắt nên sai xót gì a e bỏ qua ). thank all!

Comment