×
单片机 > 单片机程序设计 > 详情

单片机C语言程序设计10s的秒表

发布时间:2021-08-10 发布时间:
|

#include


#define uchar unsigned char


#define uint unsigned int


sbit K1=P3^7;


uchar


i,Second_Counts,Key_Flag_Idx;


bit Key_State;


uchar

 

DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};


//延时


void DelayMS(uint ms)


{


uchar t;


while(ms--) for(t=0;t<120;t );


}


//处理按键事件


void Key_Event_Handle()


{


if(Key_State==0)


{


Key_Flag_Idx=(Key_Flag_Idx 1)%3;


switch(Key_Flag_Idx)


{


case 1:EA=1;ET0=1;TR0=1;break;


case 2:EA=0;ET0=0;TR0=0;break;


case 0:P0=0x3f;P2=0x3f;i=0;Second_Counts=0;


}


}


}


//主程序


void main()


{

 

P0=0x3f; //显示 00


P2=0x3f;


i=0;


Second_Counts=0;


Key_Flag_Idx=0; //按键次数(取值 0,1,2,3)


Key_State=1; //按键状态

 


TMOD=0x01; //定时器 0 方式 1

 


TH0=(65536-50000)/256; //定时器 0:15ms


TL0=(65536-50000)%6;


while(1)


{


if(Key_State!=K1)


{


DelayMS(10);


Key_State=K1;


Key_Event_Handle();


}


}


}

 


/T0 中断函数


void DSY_Refresh() interrupt 1


{


TH0=(65536-50000)/256; //恢复定时器 0 初值


TL0=(65536-50000)%6;


if( i==2)

 

{


i=0;


Second_Counts ; //50ms*2=0.1s 转换状态


P0=DSY_CODE[Second_Counts/10];


P2=DSY_CODE[Second_Counts];


if(Second_Counts==100) Second_Counts=0; //满 100(10s)后显示 00


}


}

 




关键字:单片机  C语言程  秒表 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32单片机的复用端口初始化的步骤及方法