#include <reg52.h> #define uint unsigned int #define uchar unsigned char sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; sbit js=P3^5; sbit LED1=P2^0; sbit key1=P3^3; uchar code smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uint read() { uchar t1; uint val; while(1) { t1=TL1; //读取寄存器值 break; } val=t1-246; //10次的时候就中断 return val; } void delay(uint k) { uint x,y; for(x=k;x>0;x--) for(y=110;y>0;y--); } void Time0Init() { TMOD=0x60; TH1=0xF6; TL1=0xF6; ET1=1; EA=1; TR1=1; } void display(uint n)//****************************************************时钟显示 { uint z; for(z=0;z<2;z++) { if(z==0) { LSA=1;LSB=0;LSC=0; P0=smg[n/10]; delay(10); //延时函数,没有延时将不能显示 P0=0x00; } if(z==1) { LSA=0;LSB=0;LSC=0; P0=smg[n%10]; delay(10); P0=0x00; } } } void main() //*********************主函数 { uint num; Time0Init(); while(1) { if(key1==0) { LED1=1; delay(20); if(key1==0) { js=1; delay(10); js=0; //给它低电平,让它计数 delay(10); num=read(); //将寄存器的值放入num }while(!key1); } display(num); } } void Time0() interrupt 3 { LED1=0; } 这个是可以实现功能的一个代码,但是使用了独立按键判断,我老师说那个P35接口可以直接给低电平计数,但是我不知道怎么改 |