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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1296|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

想請教一下51單片機T1定時器控制T0定時器啟動的參考例子有沒有?或者參考方案

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:858009 發(fā)表于 2021-11-17 15:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 qwettyuio 于 2021-11-22 14:25 編輯

想學(xué)習(xí)使用T1定時器控制T0定時器
通過按鍵控制定時器的,想修改,沒有按鍵控制的情況下,每次通過按鍵設(shè)時間結(jié)束等待5后啟動倒計時,
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar min,sec,count,sec1,sec2,min0,min1,min2,keystopc,temp,mun;
sbit keystop=P3^0;
sbit keyh=P3^1;
sbit keym=P3^2;
sbit led1=P1^0;
sbit beep=P2^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 delay(uint z)                //延時程序
{
        uint x,y;
        for(x=z;x>0;x--)
         for(y=110;y>0;y--);
}
void beep_Init()
{
        beep=0;
        delay(500);
        beep=1;
}
/**************************************************************
------LCD1602顯示函數(shù)------
*************************************************************/
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 init()                                                //定時器初始化
{
        count=0;
        min=0;
        sec=0;
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        TR0=0;
        ET0=1;
        EA=1;
}
void count0() interrupt 1     //工作方式
{
        TH0=(65536-50000)/256;    //50ms
        TL0=(65536-50000)%256;
        count++;
        if(count==20)             //20*50ms=1000ms=1s
                {
                        count=0;
                        if(sec==0)
                        {
                                if (min!=0)
                                {
                                        sec=59;
                                        min--;
                                }                               
                                else
                                {
                                        beep_Init();
                                        TR0 =0;
                                }
                        }
                        else sec--;
                }
}

/************************************************************
------主函數(shù)------
*************************************************************/
void main()
{
        init();
        init_1602();
        while(1)
        {               
                if(keystop==0)                             //檢測是否停止鍵按下
                {
                        delay(10);
                        if(keystop==0)
                        {
                                if(keystopc!=1)   keystopc++;      //按停止鍵的次數(shù)       
                                else              keystopc=0;
                                while(keystop==0);                 //松手檢測
                                delay(5);
                                while(keystop==0);
                        }
                        switch(keystopc)
                        {
                                case 0:TR0=0;break;                // 按鍵一次就停止計數(shù)
                                case 1:TR0=1;break;
                                default:break;
                        }
                }
                if(keyh==0)                 //實現(xiàn)分鐘加一
                {
                        delay(100);
                        if(keyh==0)
                        {       
                                if(min!=110)
                                {
                                        min++;
                                }
                        }
                        while(!keym);                  //松手檢測
                        delay(5);
                        while(!keym);
                }
                if(keym==0)              //實現(xiàn)分鐘減一
                {
                        delay(100);
                        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);  //一直顯示時鐘               
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:908826 發(fā)表于 2021-11-17 18:44 | 只看該作者
沒看明白你的意思。
回復(fù)

使用道具 舉報

板凳
ID:624769 發(fā)表于 2021-11-17 19:03 來自手機 | 只看該作者
把控制t0定時器的代碼寫到t1定時器里。
回復(fù)

使用道具 舉報

地板
ID:948088 發(fā)表于 2021-11-17 19:21 來自手機 | 只看該作者
可以把定時器0的寄存器的相關(guān)控制代碼寫在定時器1的中斷函數(shù)里
回復(fù)

使用道具 舉報

5#
ID:123289 發(fā)表于 2021-11-18 13:48 | 只看該作者
讀通定時器的原理就能達成你的目的。
回復(fù)

使用道具 舉報

6#
ID:858009 發(fā)表于 2021-11-19 16:28 | 只看該作者
yzwzfyz 發(fā)表于 2021-11-18 13:48
讀通定時器的原理就能達成你的目的。

按鍵啟動定時器會用,但是不用按鍵啟動定時器,就不太會,做一個5分鐘倒計時,設(shè)置好時間,等待3s沒有再設(shè)置時,啟動倒計時,想著用51單片機T1控制T0,不太會,想請教一下
回復(fù)

使用道具 舉報

7#
ID:624769 發(fā)表于 2021-11-19 17:18 | 只看該作者
qwettyuio 發(fā)表于 2021-11-19 16:28
按鍵啟動定時器會用,但是不用按鍵啟動定時器,就不太會,做一個5分鐘倒計時,設(shè)置好時間,等待3s沒有再 ...

T1 控制 T0 不難,
T1 定時 5分鐘也不難,
難的是,你要搞明白單片機運行的原理,
就算我現(xiàn)在把 T1 定時5分鐘 后 TR0 =1 整個中斷寫出來給你, 和本來在T0里面計時也是沒有差別的,你想時間到了蜂鳴器響的話,還是要把這個模塊寫出來,不是加個T1去定時, 蜂鳴器就能響了。
并且,T1 定時5分鐘后啟動 T0, 那么 T1 靠什么啟動呢? 這些原理你要搞清楚了,你壓根不會考慮去用T1 啟動T0, 而是 在 T0 里面把活全干了。
回復(fù)

使用道具 舉報

8#
ID:858009 發(fā)表于 2021-11-22 09:17 | 只看該作者
本帖最后由 qwettyuio 于 2021-11-22 14:33 編輯
188610329 發(fā)表于 2021-11-19 17:18
T1 控制 T0 不難,
T1 定時 5分鐘也不難,
難的是,你要搞明白單片機運行的原理,

整體設(shè)計是做一個定時器,就只有兩個按鍵,一個按鍵按一次加·一分鐘,長按50ms連續(xù)加,另一個是減,在不添加其他按鍵情況下,想通過自動啟動倒計時,每次設(shè)置好時間等待5s左右就啟動倒計時,所以想問一下,怎么通過一個定時器控制另一個定時器啟動;
代碼如下,這是添加了一個啟動按鍵的,能否把這個去掉,
回復(fù)

使用道具 舉報

9#
ID:858009 發(fā)表于 2021-11-22 14:22 | 只看該作者
188610329 發(fā)表于 2021-11-19 17:18
T1 控制 T0 不難,
T1 定時 5分鐘也不難,
難的是,你要搞明白單片機運行的原理,

就是不通過按鍵控制啟動,在設(shè)置時間結(jié)束后,等待5s后啟動倒計時
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 蜜桃精品噜噜噜成人av | 欧美午夜影院 | 亚洲精品专区 | 在线看一区二区三区 | 成人国产免费视频 | 亚洲图片视频一区 | 三级黄色片在线播放 | 中国大陆高清aⅴ毛片 | 狠狠做深爱婷婷综合一区 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 操皮视频 | 久久亚洲欧美日韩精品专区 | 一起操网站 | 日韩性生活网 | 日本在线视频一区二区 | 国产成人在线观看免费 | 国产乱码精品一区二区三区中文 | 亚洲逼院 | 亚洲视频中文字幕 | av在线免费观看网址 | 国产精品区二区三区日本 | 日韩一区二区三区视频 | 美女131mm久久爽爽免费 | 国产精品视频网 | 久久精品国产一区二区三区不卡 | 国产精品久久久久久亚洲调教 | 国产成人精品久久 | 免费成人高清在线视频 | 在线小视频| 日韩成人精品一区 | 中文字幕视频在线免费 | 国产精品99久久久久久动医院 | 日日骚网| 成人影院免费视频 | 国产精品久久久久久久免费观看 | 91九色麻豆| 浮生影院免费观看中文版 | 人人人人干 | 亚洲经典一区 | 韩日一区二区三区 | 免费成人av|