欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 51單片機(jī)1602改變模式 程序問題請教 [打印本頁]

作者: 許許許    時(shí)間: 2020-3-20 15:42
標(biāo)題: 51單片機(jī)1602改變模式 程序問題請教
外部按鍵按“選擇”時(shí),光標(biāo)跳到mode那里,可以切換模式,1~20。對(duì)應(yīng)pon從50ms到1000ms。通過按模式+模式-來切換,用此來控制繼電器上電時(shí)間。請問各位大神可以幫忙弄完整程序嗎,50到1000ms遞進(jìn)我寫在下面,可是切換模式太多錯(cuò)誤了實(shí)在搞不懂,請大神幫忙



50~1000ms遞進(jìn)延時(shí)繼電器,按鍵與定時(shí)器互鎖。繼電器延時(shí)期間鎖按鍵

單片機(jī)源程序如下:

#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char

sbit key=P1^0;
sbit OUT=P1^7;

uchar num=0;//鍵值變量
uchar flag=0;//中斷標(biāo)志

/***********定時(shí)器初始化****************/
void Timer0Init()                //50毫秒@12.000MHz
{
        TMOD |= 0x01;                //設(shè)置定時(shí)器模式
        TH0 = 0x3C;                        //設(shè)置定時(shí)初值
        TL0 = 0xB0;                        //設(shè)置定時(shí)初值
        TF0 = 0;                                //清除TF0標(biāo)志
//        TR0 = 1;                                //定時(shí)器0開始計(jì)時(shí)
        EA = 1;                                //開總中斷
        ET0 = 1;                                //開T0中斷
}
/***********按鍵掃描程序****************/
void keyscan()        
{
        static uchar count=0;                //消抖計(jì)數(shù)變量                        
        static bit sign=0;                        //按鍵自鎖標(biāo)志
        if(key==0)                                                //檢測鍵按下
        {                                       
                if(++count>=100 && sign==0 && TR0==0)//消抖/自鎖/與定時(shí)器互鎖
                {                        
                        sign=1;
                        num++;
                        if(num>20)
                                num=0;
                        if(num!=0)
                        {
                                TR0=1;//開定時(shí)器
                                OUT=0;//閉合繼電器
                        }
                }
        }
        else //松手
        {
                count=0;                                        //消抖計(jì)數(shù)變量清0
                sign=0;                                        //按鍵自鎖標(biāo)志清0
        }
}
/***********主函數(shù)****************/
void main()
{
        Timer0Init();
        while(1)
        {
                keyscan();
        }
}
/***********中斷服務(wù)程序****************/
void Timer0Interrupt() interrupt 1
{
        TH0 = 0x3C;
        TL0 = 0xB0;
        flag++;
        if(flag>=num)//50~1000ms遞進(jìn)
        {
                flag=0;
                OUT=1;//斷開繼電器
                TR0=0;//關(guān)定時(shí)器
        }
}
作者: 許許許    時(shí)間: 2020-3-20 15:43
繼電器上電后再掉電,然后再上電。每個(gè)模式都會(huì)進(jìn)行三次




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1