#include<reg52.h>
sbit key1=P3^2 ;
sbit key2=P3^3 ;
sbit key3=P3^4 ;
sbit key4=P3^5 ;
unsigned char code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
0xf8,0x80,0x90};//共陽數碼管 0.1.2.3.4....9
unsigned char code segg[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,
0x78,0x00,0x10};//共陽數碼管帶點 0.1.2.3.4....9
unsigned char intnum,sec;
void delay_ms(unsigned int); //延時函式
void display(); //顯示函式
void keyscan(); //按鍵判斷函式
void init_t0(); //定時器初始化
void main()
{
sec=0;
init_t0(); //定時器初始化
while(1)
{
display();
keyscan();
}
}
/**************分割線******************/
void delay_ms(unsigned int t)
{
unsigned int x,y;
for(x=t;x>0;x--)
{
for(y=110;y>0;y--) ;
}
} //延時函式
/**************分割線******************/
void display()
{
unsigned qian,bai,shi,ge;
qian=sec/10; //千位
bai=sec%10; //百位
shi=intnum/10; //十位
ge=intnum%10; //個位
P2&=0xF7;
P0=seg[ge];
delay_ms(3);
P2|=0x0F;
delay_ms(1); //百分位賦值
P2&=0xFB;
P0=seg[shi];
delay_ms(3);
P2|=0x0F;
delay_ms(1); //十分位賦值
P2&=0xFD;
P0=segg[bai];
delay_ms(3);
P2|=0x0F;
delay_ms(1); //個位賦值
P2&=0xFE;
P0=seg[qian];
delay_ms(3);
P2|=0x0F;
delay_ms(1); //十位賦值
}
/**************分割線******************/
void init_t0()
{
TMOD=0x01; //調節計時器作業方式
TH0 = 0x0D8; //初值
TL0 = 0x0F0;
EA = 1;
ET0 = 1;
TR0 = 0;
}
/**************分割線******************/
void keyscan()
{
if(key1==0)
{
delay_ms(10);
if(key1==0)
{
TR0=1; //開啟定時器
}
}
if(key2==0)
{
delay_ms(10);
if(key2==0)
{
TR0=0; //關閉定時器
}
}
if(key3==0)
{
delay_ms(10);
if(key3==0)
{
TR0=1; //開啟定時器
sec=0; //sec清零
intnum=0; //秒數清零
}
}
if(key4==0)
{
delay_ms(10);
if(key4==0)
{
TR0=1; //開啟定時器
sec=0; //sec清零
intnum=0; //秒數清零
}
}
}
/**************分割線******************/
void interrupt_t0() interrupt 1
{
TH0 = 0x0D8; //初值
TL0 = 0x0F0;
intnum++;
if(intnum>=100)
{
intnum=0;
sec++;
}
if(sec>=100)
{
sec=0;
}
}
uj5u.com熱心網友回復:
問題是蝦米?uj5u.com熱心網友回復:
可參https://blog.csdn.net/xianfajushi/article/details/89448933uj5u.com熱心網友回復:
這是什么意思啊,我不懂你說的uj5u.com熱心網友回復:
這個沒有問題,帖子發錯模塊了
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/74232.html
標籤:單片機/工控
上一篇:verilog求教
下一篇:MEC思考
