单片机c语言按键调整时钟,关于单片机电子时钟按键部分(调时间的)如何设计...

给你一个示例参考

//实验平台:TX-1C开发板(板子上是有源蜂鸣器,程序按无源编写的,不影响正常使用)

//K1键调整选择,K2键+,长按连+,K3键-,长按连-,K4键闹钟设置

//定时器初始化程序根据晶振频率选择

//用计数法代替软件延时,提高走时精度

//数码管采用分时动态显示,约2ms显示1位

#include

#define uint unsigned int

#define uchar unsigned char

#define key_S 300                                                //宏定义短按(约20ms)

#define key_L 6000                                        //宏定义长按(约2/3s)

#define key_M 3000                                        //宏定义长按(约1/3s)

sbit K1 = P3^4;                                                //调整选择/退出

sbit K2 = P3^5;                                                //++,长按连+

sbit K3 = P3^6;                                                //--,长按连-

sbit K4 = P3^7;                                                //调整时间

sbit dula=P2^6;                                                //段选

sbit wela=P2^7;                                                //位选

sbit allow=P2^5;                                                //LED使能

sbit Buzzer=P2^3;                                                //蜂鸣器

uchar code table[]={                                        //0~F数组

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

uint Cnt200us;                                                        //定义200微秒变量

uchar hour=12,min=0,sec=0;                        //定义时、分、秒变量

uchar hour4=0,min4=0;                                //定义闹钟时、分变量

uchar  Choice=0,Choice4=0;                        //调整走时的选择变量、设置闹钟的选择变量

bit Buzzer_sign;                                                //蜂鸣器闹钟标志

bit Twinkle,second=1;                                //闪烁标志、秒标志

/**************************************

定时器0/1初始化程序 @12.000MHz

**************************************/

/*

void Timer0Init(void)

{

TMOD= 0x22;                //设置定时器模式

TL0 = 0x38;                //设置定时初值200微秒

TH0 = 0x38;                //设置定时重载值200微秒

TL1 = 0x06;                //设置定时初值250微秒

TH1 = 0x06;                //设置定时初值250微秒

TR0 = 1;                //定时器0开始计时

//        TR1 = 1;                //定时器1开始计时

EA=1;                        //开总中断

ET0=1;                //开定时器1中断

ET1=1;                //开定时器1中断

}

*/

/***************************************

定时器0/1初始化程序 @11.0592MHz

***************************************/

void Timer_Init()

{

TMOD = 0x22;                                        //设置自动重载模式

TL0 = 0x48;                                                //设置定时初值200微秒

TH0 = 0x48;                                                //设置定时重载值200微秒

TL1 = 0x1A;                                                //设置定时初值250微秒

TH1 = 0x1A;                                                //设置定时重载值250微秒

TR0 = 1;                                                //定时器0开始计时

//        TR1 = 1;           

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值