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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1506|回復: 2
收起左側

請高手指導修改下單片機定時程序

[復制鏈接]
ID:280226 發表于 2019-11-21 16:11 | 顯示全部樓層 |閱讀模式
做了一個二路紅外監控程序,利用紅外開關判斷信號,每一路紅外開關有信號時該路繼電器接通5分鐘后自動停止,5分鐘內紅外信號消失繼電器也自動斷開停止,二路獨立,這部分測試工作正常,現在加上一段自動定時自啟功能:二個繼電器都斷開后開始計時,60分鐘后后如果繼電器都沒有接通信號,繼電器自動接通,5分鐘后又自動停止,如果在定時自啟過程中又有紅外信號,程序恢復自動判斷狀態,如此循環反復,但這部分功能卻實現不了,程序錯在哪兒,一時找不出原因,請高手師傅指教修改一下,謝謝!!

附單片機原程序
#include <reg51.H>

typedef unsigned int u16;
sbit iR1=P1^3;   
sbit iR2=P1^4;
sbit Relay1=P1^0;
sbit Relay2=P1^1;
bit flag_1=0,flag_2=0;
u16 temp_1,temp_2,temp_3;
/***********************************************
定時函數
************************************************/
void Timer0Init()//50ms@12.000MHz
{
        TMOD= 0x01;  
        TL0 = 0xB0;  
        TH0 = 0x3C;  
        TR0 = 1;   
        EA=1;        
        ET0=1;        
}
/***********************************************
紅外開關掃描程序
************************************************/
void iRscan()           
{
        static bit iR_sign1=0;
        static bit iR_sign2=0;
        if(iR1==1)            
         {
                 if(iR_sign1==0)      
                {                        
                         iR_sign1=1;   
                         temp_1=0;      
                         flag_1=1;      
                         Relay1=1;      
                }
         }
         else                          
        {
                 iR_sign1=0;           
                 Relay1=0;              
        }
               
         if(iR2==1)                     
         {
                 if(iR_sign2==0)      
                {                        
                         iR_sign2=1;   
                         temp_2=0;     
                         flag_2=1;      
                         Relay2=1;      
                }
         }
         else                        
        {
                 iR_sign2=0;         
                 Relay2=0;            
        }         
}
/***********************************************
主程序
************************************************/
void main()
{
         Timer0Init();                  
        while(1)
         {
                 iRscan();            
        }
}
/***********************************************
中斷函數
************************************************/
void Timer0() interrupt 1                       //50ms@12.000MHz
{
        TL0 = 0xB0;                             
        TH0 = 0x3C;                             
        if(flag_1==1)                           
         {
                 temp_1++;                     
                 if(temp_1>=(20*60)*5)         
                {
                         flag_1=0;              
                         Relay1=0;              
                }
         }
                 
         if(flag_2==1)                        
         {
                 temp_2++;                     
                 if(temp_2>=(20*60)*5)         
                {
                         flag_2=0;              
                         Relay2=0;            

                }
         }
/****以下為1小時后定時自啟,但功能實現不了,程序錯在哪?   
******/                 
          if(flag_1==0&&flag_2==0)                        
         {
                 temp_3++;                     
                 if(temp_3>=(20*60)*60)         
                {
                         flag_1=1;              
                         Relay1=1;              
                         flag_2=1;              
                         Relay2=1;              
                                    }
         }
                   if(flag_1==1&&flag_2==1)                          
         {
                 temp_3++;                     
                 if(temp_3>=(20*60)*5)         
                {
                         flag_1=0;              
                         Relay1=0;              
                         flag_2=0;              
                         Relay2=0;              
                                    }
         }        
}


回復

使用道具 舉報

ID:123289 發表于 2019-11-21 21:48 | 顯示全部樓層
先畫出流程圖,走通流程后再寫程序。
回復

使用道具 舉報

ID:158375 發表于 2019-11-22 10:46 | 顯示全部樓層
Relay1在中斷里面和iRscan()里面都有賦值,而flag_1怎么樣呢?自己看!
管腳與運行標志分不清.....

畫個簡單圖,自己分析一下。

管腳一標志 怎么區分
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 韩日一区 | 一级看片免费视频 | 成人不卡一区二区 | 日韩一区二区精品 | 久久久久亚洲 | 欧美精品一区二区三区在线播放 | 久久伊| 一级片免费观看 | 国产精品一区久久久 | 91看片在线 | 91精品国产91久久久久久最新 | 久久欧美精品 | 玖玖综合网| 在线免费毛片 | 欧美一卡二卡在线 | 婷婷综合在线 | 99综合网 | 中文字幕在线视频观看 | 人人人人干 | 99re国产视频 | 国产精品小视频在线观看 | 麻豆国产一区二区三区四区 | 久久久.com | 欧美黄在线观看 | 日本福利视频 | 神马久久春色视频 | 久久99精品久久久久久国产越南 | 精品一区二区三区免费视频 | 亚洲日本一区二区三区四区 | 久久精品一区二区三区四区 | 亚洲少妇综合网 | 一区二区三区免费观看 | 欧美国产日韩在线观看 | 国产片一区二区三区 | 99精品久久久久久中文字幕 | 免费观看a级毛片在线播放 黄网站免费入口 | 国产精品毛片一区二区在线看 | 日韩欧美一区二区三区免费看 | 久久激情网 | 免费在线看黄 | 国产在线一区二区 |