久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2744|回復: 6
收起左側

為什么單片機倒計時變為0是不停止,是什么問題,該怎么修改呢?求解

[復制鏈接]
ID:858009 發表于 2021-10-4 17:34 | 顯示全部樓層 |閱讀模式
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar min,sec,count,sec1,sec2,min0,min1,min2,keystopc,temp;
sbit keystop=P3^0;
sbit keyh=P3^1;
sbit keym=P3^2;
sbit keys=P3^3;
sbit lcden=P3^4;
sbit lcdrw=P3^6;
sbit lcdrs=P3^5;
uchar code table[]={'0','1','2','3','4','5','6','7','8','9',':'};
void init()                                                //定時器初始化
{
        count=0;
        min=0;
        sec=59;
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        TR0=1;
        ET0=1;
        EA=1;
}
void delay(uint z)                //延時程序
{
        uint x,y;
        for(x=z;x>0;x--)
         for(y=110;y>0;y--);
}
/**************************************************************
------LCD1602顯示函數------
*************************************************************/
void write_com(uchar com)
{
        lcdrs=0;
        P0=com;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
}
void write_data(uchar date)
{
        lcdrs=1;
        P0=date;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
}
void init_1602()                                //初始化1602
{
        lcden=0;
        lcdrw=0;
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
        write_com(0x80);
}
void write_Char(unsigned char x,unsigned char y,unsigned char date)
{
         if (y == 0)
         {
                write_com(0x80 + x);     
         }
        else
         {
                write_com(0xC0 + x);     
         }
        write_data(date);  
}
void display(uchar min0,uchar min1,uchar min2,uchar sec1,uchar sec2)         //顯示程序
{        
        write_Char(3,0,table[min0]);
        write_Char(4,0,table[min1]);
        write_Char(5,0,table[min2]);
        write_Char(6,0,table[0x0a]);
        write_Char(7,0,table[sec1]);
        write_Char(8,0,table[sec2]);
}
/************************************************************
------計時器/定時器0-----
*************************************************************/
void count0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        count++;
        if(count==20)
                {
                        count=0;
                        sec--;
                        if(sec==0)
                        {                        
                                        sec=60;
                                    min--;
                        }
                }
}
/************************************************************
------主函數------
*************************************************************/
void main()
{
        init();
        init_1602();
        while(1)
        {               
                if(keystop==0)                             //檢測是否停止鍵按下
                {
                        delay(10);
                        if(keystop==0)
                        {
                                if(keystopc!=1)   keystopc++;      //按停止鍵的次數        
                                else              keystopc=0;
                                while(keystop==0);                 //松手檢測
                                delay(5);
                                while(keystop==0);
                        }
                        switch(keystopc)
                        {
                                case 1:TR0=0;break;                // 按鍵一次就停止計數
                                case 0:TR0=1;break;
                                default:break;
                        }
                }
                if(keyh==0)                 //實現小時加一
                {
                        delay(50);
                        if(keyh==0)
                        {        
                                if(min!=110)
                                {
                                        min++;
                                }
                        }
                        while(!keym);                  //松手檢測
                        delay(5);
                        while(!keym);
                }
                if(keym==0)              //實現分鐘加一
                {
                        delay(50);
                        if(keym==0)
                        {        
                                if(min!=0)
                                {
                                        min--;
                                }
                        }
                        while(!keyh);                //松手檢測
                        delay(5);
                        while(!keyh);
                }
                min0=min/100;
                min1=min%100/10;
                min2=min%10;
                sec1=sec/10;
                sec2=sec%10;
               display(min0,min1,min2,sec1,sec2);  //一直顯示時鐘               
        }
}

顯示.png
回復

使用道具 舉報

ID:858009 發表于 2021-10-4 18:00 | 顯示全部樓層
Hephaestus 發表于 2021-10-4 17:51
void count0() interrupt 1 里面 min--; 這句話改成:
  if (min)min--;

不行,秒到零,沒有停下來,繼續倒計時60
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线免费看 | 日韩一区二区三区精品 | 免费观看一级黄色录像 | 免费看国产精品视频 | 国产精品性做久久久久久 | av国产精品 | 日韩三级精品 | 中文字幕在线观看一区二区 | 国产精品中文字幕在线观看 | 久久久精品影院 | 一区二区三区视频播放 | 亚洲国产成人av好男人在线观看 | 久操福利| 偷拍自拍在线观看 | 中文字幕一区二区三区不卡在线 | 欧美日本在线观看 | 国产操操操 | 精品久久久久久久久久久久久久久久久 | 久在线| 亚洲欧美另类在线观看 | 老头搡老女人毛片视频在线看 | 国产视频线观看永久免费 | 亚洲精品黄色 | av片在线观看 | 亚洲福利 | 亚洲成人网在线播放 | 91视视频在线观看入口直接观看 | 国产一二三视频在线观看 | 日韩精品 电影一区 亚洲 | 超碰最新在线 | 不卡一区二区在线观看 | 中文字幕视频网 | 精品一区二区三区av | 日韩免费一区 | 久草在线| 国产精品一区在线 | 欧美精品一区二区在线观看 | 中文字幕在线一区 | 久久另类 | 日韩快播电影网 | www.av在线 |