你好!欢迎来到深圳市颖特新科技有限公司!
语言
当前位置:首页 >> 技术中心 >> 单片机入门 >> 单片机C语言程序设计:10s 的秒表

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

关键字:10s 单片机 C语言 程序设计 作者:admin 来源:不详 发布时间:2018-05-18  浏览:2

/*  名称:10s 的秒表

        说明:首次按键计时开始,再次按键暂停,第三次按键清零。

*/

#include<reg51.h>

#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)%256;

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)%256;

if(++i==2)

  {

i=0; 

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

P0=DSY_CODE[Second_Counts/10];

P2=DSY_CODE[Second_Counts%10];

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

  }

}

 

扩展阅读:TIMER0与TIMER1控制条形LED

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

编辑:admin  最后修改时间:2018-05-18

联系方式

0755-82591179

传真:0755-82591176

邮箱:vicky@yingtexin.net

地址:深圳市龙华区民治街道民治大道973万众润丰创业园A栋2楼A08

Copyright © 2014-2023 颖特新科技有限公司 All Rights Reserved.  粤ICP备14043402号-4