倒计时60秒程序(单片机C51)
#include<reg52.h>
孩子逆反期教育
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0xc0,0xf9,0xa4, 0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
sbit gew=P2^1;
心悦会员
sbit shiw=P2^0;
sbit k2=P1^0;建党100周年抖音文案
uchar num,num1=60,num2,shi,ge;
void Init()
{
        TMOD=0X01;  TH0=(65536-50000)%256; TL0=(65536-50000)%256;
EA=1;ET0=1;  TR0=1;                                                        可卸光疗甲
}
void delay(uint xms)                                //延时子函数
{
        uint i,j;
        for(i=xms;i>0;i--)
        for(j=110;j>0;j--);
}
void scankey()                                          //键盘检测子函数
{
        if(k2==0)                                        //检测键是否被按下
        {
                delay(5);                                //延时消除抖动
                if(k2==0)                                  //重新读取k2的值
                {                                                       
                        num2++;                          //num2为按次数标志位
                        while(!k2);                          //等待按键释放
                        if(num2==1)                        //按键一次计时停止
                          TR0=0;
                        if(num2==2)                          //按键两次计时开始
                        {                你的微笑歌词 那英
                                  TR0=1;
                        }
                }
        }
}
void main()                                                //主函数
{
        Init();                                            //初始化子函数调用
        while(1)
        {
                scankey();                              //不断键盘扫描
                gew=0;                                    //打开数码管个位位选                                       
                P0=table[ge];                              //数码管个位赋值
                delay(1);                              //延时 送入数据的反应时间
                gew=1;                                //关闭数码管个位位选
                delay(1);
                shiw=0;                                //打开数码管十位位选       
                P0=table[shi];                            //送入数据
                delay(1);                                         
                shiw=1;                                //关闭数码管十位位选
                delay(1);
        }
}
void Timer0()  interrupt 1                         
{
        TH0=(65536-50000)/256;                          //定时器重装初值
        TL0=(65536-50000)%256;
        num++;
        if(num==20)          //定时器每进行一个周期num加1,运行20个周期即为1s
        {
此曲只应天上有的下一句                num=0;                          //到1秒,num清0重新开始
                num1--;                                //倒计时1秒
                if(num1==0)
                num1=60;
                shi=num1%10;                    //两位数分离赋给数码管十位显示
                ge=num1%10;                    //两位数分离赋给数码管个位显示
        }
}
 
    (注:文档可能无法思考全面,请浏览后下载,供参考。可复制、编制,期待你的好评与关注)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。