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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2401|回復(fù): 5
收起左側(cè)

請(qǐng)教單片機(jī)1-9小時(shí)定時(shí)程序怎樣加啟動(dòng)和停止?

[復(fù)制鏈接]
ID:891876 發(fā)表于 2023-9-20 11:53 | 顯示全部樓層 |閱讀模式
試著寫了單片機(jī)程序,但不知如何加人啟動(dòng)和停止,定時(shí)器TR0為什么不能被其它函數(shù)調(diào)用呢?

js.JPG
#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開始計(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í)器沒起作用,開機(jī)就執(zhí)行程序了,是什么原因?

3.JPG






回復(fù)

使用道具 舉報(bào)

ID:140644 發(fā)表于 2023-9-20 12:08 | 顯示全部樓層
比較啊==  >=  <=
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2023-9-21 09:14 | 顯示全部樓層
先畫個(gè)邏輯框圖,理理思路,而后再寫程序。
回復(fù)

使用道具 舉報(bào)

ID:642276 發(fā)表于 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;                //長按啟動(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í)之類的
                }
        }
}

*/
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 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秒
回復(fù)

使用道具 舉報(bào)

ID:195496 發(fā)表于 2023-9-28 08:33 | 顯示全部樓層
很簡單,按鍵控制一個(gè)變量,再去判斷是否啟動(dòng)定時(shí),關(guān)定時(shí)后,重按啟動(dòng),清除原來的計(jì)時(shí)值,重啟定時(shí)器,不難
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲综合成人网 | 国产精品毛片一区二区在线看 | 中文字幕亚洲视频 | 日韩成人 | 亚洲高清在线观看 | 欧美久久久电影 | 在线视频 中文字幕 | 免费看a | 欧日韩在线 | 亚洲精彩视频在线观看 | 日韩免费高清视频 | 81精品国产乱码久久久久久 | 久久国产精品久久久久久久久久 | 97天天干 | 福利精品 | 91综合在线观看 | 99热首页 | 欧美国产中文字幕 | 成人在线小视频 | 99精品欧美一区二区蜜桃免费 | 一级片子 | 99九九久久 | 久久精品日| 麻豆changesxxx国产 | www在线视频 | 久在线 | 国产 日韩 欧美 中文 在线播放 | 美女天天干天天操 | 国产精品99视频 | 九九av| 91精品久久久久久久久中文字幕 | 国产午夜精品久久久 | 欧美理论片在线 | 亚洲精品一区二区三区四区高清 | 亚洲一区二区三区免费在线 | 精品av天堂毛片久久久借种 | 91文字幕巨乱亚洲香蕉 | 亚洲一区二区不卡在线观看 | h在线免费观看 | 亚洲激情专区 | 色综合视频在线 |