#include"reg51.h" #define m P0 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; u8 i=0,k=0,j=0,T; sbit led=P2^5; sbit anjian=P3^2; u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值 void delay1ms() //误差 0us { unsigned char a,b,c; for(c=1;c>0;c--) for(b=142;b>0;b--) for(a=2;a>0;a--); } void display() { led=0; while(j<16) { P0=smgduan[j]; delay1ms(); if(i==15) { i=0; j++; } } // delay1ms(); } void kk() { if(anjian==0) { delay1ms(); if(anjian==0) { TR0=!TR0; while(anjian==0) display(); } } } void zhongduan() { TMOD=0x01; TH0=0x3c; TL0=0xb0; //定时50ms //设置INT0 // IT0=1;//跳变沿出发方式(下降沿) // EX0=1;//打开INT0的中断允许。 //设置INT1 TR1=1; ET1=1; EA=1;//打开总中断 } /* void Int0() interrupt 0 //外部中断0的中断函数 { delay1ms(); //延时消抖 while(1) { kk(); } } */ void main() { zhongduan(); P0=smgduan[0]; while(1) { // display(); kk(); } } void timer_0() interrupt 1 //定时器中断函数 { TH0=0x3c; TL0=0xb0; //定时50ms k++; if(k==20) { i++; k=0; } } |