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

標(biāo)題: 請(qǐng)教單片機(jī)1-9小時(shí)定時(shí)程序怎樣加啟動(dòng)和停止? [打印本頁(yè)]

作者: 芙蓉焊料    時(shí)間: 2023-9-20 11:53
標(biāo)題: 請(qǐng)教單片機(jī)1-9小時(shí)定時(shí)程序怎樣加啟動(dòng)和停止?
試著寫了單片機(jī)程序,但不知如何加人啟動(dòng)和停止,定時(shí)器TR0為什么不能被其它函數(shù)調(diào)用呢?


#include <REGX52.H>
#include<intrins.h>
#include"Delay.h" //延時(shí)函數(shù)申明
unsigned char tem_key=0; //按鍵+次數(shù)
unsigned char tem_min;//1分
unsigned char tem; //中間變量
unsigned char        timing_time; //定時(shí)時(shí)間
sbit key=P1^0; //按鍵定義
sbit LED=P1^1; //定時(shí)工作指示

unsigned char smgxs[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數(shù)碼管編碼

void Key()  //按鍵函數(shù)
{
        if(key==0)
         {
                 Delay(20);
                 while(key==0);
                 Delay(20);
                 tem_key++;
               
         if(tem_key>=10)  //0-9值循環(huán)
                {
                        tem_key=0;
                }
                 tem=tem_key;
                 timing_time=(tem*60); //顯示值*60分鐘
        }
}
void T0Init(void)                //50毫秒@11.0592MHz
{
        TMOD=0x01;                //設(shè)置定時(shí)器模式
        TL0 = 0x00;                //設(shè)置定時(shí)初始值
        TH0 = 0x4C;                //設(shè)置定時(shí)初始值
        TF0 = 0;        //清除TF0標(biāo)志
        ET0=1;
        EA=1;
        TR0 = 1;                //T0開(kāi)始計(jì)時(shí)
}
void Timer0_Rountiue() interrupt 1 //中斷程序
{
        unsigned char tem_ms;
        unsigned int tem_s; //1秒
        TL0 = 0x00;                //重裝初始值
        TH0 = 0x4C;                //重裝初始值
        tem_ms++;
        if(tem_ms==20)
        {
                tem_s++; //秒
                tem_ms=0;
                LED=~LED;
        }
        if(tem_s==3600)
        {
                tem_min++;  //分
                tem_s=0;
        }
}
void main()
{
        T0Init(); //T0初始化
        while(1)
        {
                Key();
                P0=smgxs[tem_key]; //顯示送P0
                if(timing_time==tem_min) //時(shí)間到
                {
                        tem_min=0; //時(shí)間到清零
                        //執(zhí)行程序。。。
                }
        }
}

75行加上定時(shí)器沒(méi)起作用,開(kāi)機(jī)就執(zhí)行程序了,是什么原因?









作者: czhaii    時(shí)間: 2023-9-20 12:08
比較啊==  >=  <=
作者: yzwzfyz    時(shí)間: 2023-9-21 09:14
先畫個(gè)邏輯框圖,理理思路,而后再寫程序。
作者: 白白白白.白    時(shí)間: 2023-9-27 12:10
/*
uint8        time10ms_count = 0;
uint8        time1s_count = 0;
bit                time10ms_flag = 0;
bit                time1s_flag = 0;
定時(shí)中斷函數(shù)  //1ms進(jìn)入一次
{
        if(++time10ms_count>10)
        {
                time10ms_count = 0;
                time10ms_flag = 1;                //10ms標(biāo)志
                if(++time1s_count>100)
                {
                        time1s_count = 0;
                        time1s_flag = 1;        //1s標(biāo)志
                }
        }
}
uint8        key_value = 0;
uint8        key_count = 0;
bit         key_flag = 0;
按鍵判斷函數(shù)  //10ms跑一次
{
        if(!key)
        {
                if(key_count<100)
                {
                        if(++key_count>100)
                        {
                                key_count = 100;
                                key_flag = !key_flag;                //長(zhǎng)按啟動(dòng) 暫停標(biāo)志
                        }                       
                }
        }
        else
        {
                if(key_count>2&&key_count<50)                //按下時(shí)間大于20ms小于500ms判斷為點(diǎn)擊
                {
                        if(++key_value>9)                //鍵值加加
                                key_value = 0;
                }
                key_count = 0;               
        }
}
uint8 time = 0;
uint16 time_count = 0;
uint8        time_s = 0;
定時(shí)時(shí)間函數(shù)  //1s跑一次
{
        if(key_value==time)
        {
                ;
        }
        else
        {
                time_s = 0;                //重新計(jì)時(shí)
                time = key_value;        //賦值定時(shí)
        }
        if(time>0)               
        {
                if(++time_count>3600)
                {
                        time_count = 0;
                        if(++time_s>=time)
                        {
                                time_s = 0;        //定時(shí)時(shí)間到

                        }
                }
        }
}

void main()
{
        while(1)
        {
                if(time10ms_flag)
                {
                        time10ms_flag = 0;
                        按鍵判斷函數(shù) ; //10ms跑一次
                }
                if(time1s_flag)
                {
                        time1s_flag = 0;
                        if(key_flag)                //啟動(dòng)
                                定時(shí)時(shí)間函數(shù) ; //1s跑一次
                        else  //停止
                        //可以清除定時(shí)之類的
                }
        }
}

*/
作者: wulin    時(shí)間: 2023-9-27 20:25
此2變量要加關(guān)鍵字static 為靜態(tài)或聲明全局變量,否則會(huì)亂套。
void Timer0_Rountiue() interrupt 1 //中斷程序
{
        static unsigned char tem_ms;
        static unsigned int tem_s; //1秒
作者: 大漠落日    時(shí)間: 2023-9-28 08:33
很簡(jiǎn)單,按鍵控制一個(gè)變量,再去判斷是否啟動(dòng)定時(shí),關(guān)定時(shí)后,重按啟動(dòng),清除原來(lái)的計(jì)時(shí)值,重啟定時(shí)器,不難




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 午夜影院在线观看视频 | 日本精品视频在线观看 | 天天色网站| 四虎成人影视 | 一区二区国产在线 | 久久九九精品 | 亚洲精品成人网 | 欧美一级黄| 午夜久久精品 | 亚洲一区网站 | 三级黄色网 | 欧美二三区 | 亚洲高清免费视频 | 国产精品福利在线观看 | 欧美大白屁股 | 久草福利在线视频 | 国产精品久久一区 | 日韩理论在线 | 一级黄色录像片 | 日韩高清在线观看 | 伊人网视频 | 久草视频免费 | 国产日韩欧美综合 | 能看的毛片 | 日韩一区二区三免费高清在线观看 | 97视频国产| 日韩精品在线免费观看 | 国产乱码精品一区二区三 | 欧美久久网 | 天天操天天操 | 日韩精品免费在线观看 | 免费a在线 | 黄色大片免费在线观看 | 欧美一区二区三区在线视频 | 男女裸体无遮挡做爰 | 国产在线中文字幕 | 亚洲乱色 | 国产乱人乱偷精品视频 | 黄色av网站在线观看 | 欧美黑人一区二区三区 | 亚洲永久免费视频 |