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

QQ登錄

只需一步,快速開始

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

奇怪的錯(cuò)誤,檢查了幾遍也查不出問題在哪,求明白人指點(diǎn)

[復(fù)制鏈接]
ID:87791 發(fā)表于 2015-8-6 22:45 | 顯示全部樓層 |閱讀模式
程序比較簡單,就是用一個(gè)300W集中電源帶6個(gè)100W水泵,水泵是按順序依次啟動(dòng)的,寫進(jìn)單片機(jī)就程序運(yùn)行一會(huì)就是一直P16口為低電平?jīng)]變過,單片機(jī)為STC15L204EA,程序清單如下:
/*
水泵定時(shí)系統(tǒng)
*/
#include "15f204ea.h"
#include "intrins.h"
#define uchar unsigned char
#define uint  unsigned int
uchar miao=0;fen=23;mode=1;tmp=0; //定義全局變量用于miao,fen,shi用于存儲(chǔ)過程時(shí)間
uchar _20ms;//定義全局變量_20ms用于計(jì)數(shù)中斷個(gè)數(shù),50個(gè)為1秒
sbit set1=P5^4;//水位報(bào)警
//-----------------------------------------------
#define FOSC 12000000L
/*------------------------------------------------
                 外部中斷0
------------------------------------------------*/
void exint0() interrupt 0       //水位報(bào)警
{
if(set1==0)
{
  set1=1;
}
else
{
    set1=0;
}
}
/*------------------------------------------------
                 外部中斷1
------------------------------------------------*/
void exint1() interrupt 2       //INT1中斷入口
{
if(mode==1)
{
mode=24;
}
else
{
  mode=1;
}
}
// 定時(shí)器中斷
void tm0_isr() interrupt 1 using 1
{
   TL0 = 0xE0;  //設(shè)置定時(shí)初值
   TH0 = 0xB1;  //設(shè)置定時(shí)初
    _20ms++;
    if(50==_20ms)   //判斷是否到了一秒
       {
     miao++;        //到了一秒,秒++
         _20ms=0;
         if(miao==60)   //六十秒到了嗎
            {
        fen++;        //到了分++
                miao=0;
       if(mode==1)
       {
        fen--;
         if(P55==0)
        {
         P55=1;
         P16=0;
        }
        else if(P16==0)
               {
            P16=1;
            P17=0;
            }
              else if(P17==0)
                {
              P17=1;
              P34=0;
             }
              else if(P34==0)
                {
              P34=1;
              P35=0;
             }
              else if(P35==0)
                {
              P35=1;
              P36=0;
             }
            else if(P36==0)
                {
              P36=1;
              P37=0;
             }
            else if(P37==0)
                {
              P37=1;
              P16=0;
             }
       }
              if(mode==fen)
       {
        fen--;
        tmp++;
        if(P55==0)
               {
            P55=1;
            P16=0;
            }
               else if(P16==0)
               {
            P16=1;
            P17=0;
            }
              else if(P17==0)
                {
              P17=1;
              P34=0;
             }
              else if(P34==0)
                {
              P34=1;
              P35=0;
             }
              else if(P35==0)
                {
              P35=1;
              P36=0;
             }
            else if(P36==0)
                {
              P36=1;
              P37=0;
             }
            else if(P37==0)
                {
              P37=1;
              P55=0;
             }
        if(tmp==7)
       {
        fen=0;
        tmp=0;
       }
       }
       }
         
         }
}
/* main program */
void main()
{
    P55=0;
   EA = 1;
   //INT0 = 1;
    IT0 = 0;                    //設(shè)置INT0的中斷類型 (1:僅下降沿 0:上升沿和下降沿)
    EX0 = 1;
   //INT1 = 1;
    IT1 = 0;                    //設(shè)置INT1的中斷類型 (1:僅下降沿 0:上升沿和下降沿)
    EX1 = 1;
    ET0 = 1;                        //使能定時(shí)器0中斷
   AUXR &= 0x7F;  //定時(shí)器時(shí)鐘12T模式
   TMOD &= 0xF0;  //設(shè)置定時(shí)器模式
   TL0 = 0xE0;  //設(shè)置定時(shí)初值
   TH0 = 0xB1;  //設(shè)置定時(shí)初
    TF0 = 0;  //清除TF0標(biāo)志
    TR0 = 1;                        //定時(shí)器0開始計(jì)時(shí)
    while (1);
}
回復(fù)

使用道具 舉報(bào)

ID:87791 發(fā)表于 2015-8-11 21:20 | 顯示全部樓層
24小時(shí)必答區(qū)也木有人么
回復(fù)

使用道具 舉報(bào)

ID:87791 發(fā)表于 2015-8-16 09:05 | 顯示全部樓層
難道都不懂?好像程序不會(huì)執(zhí)行else if(P16==0)這一句,P16一直是低電平
回復(fù)

使用道具 舉報(bào)

ID:87791 發(fā)表于 2015-8-16 09:06 | 顯示全部樓層
我把代碼改成延時(shí)60秒后判斷也還是P16一直為低
回復(fù)

使用道具 舉報(bào)

ID:88463 發(fā)表于 2015-8-17 11:10 | 顯示全部樓層
初學(xué)C51,來看看!  頂。。。
回復(fù)

使用道具 舉報(bào)

ID:88632 發(fā)表于 2015-8-20 12:20 | 顯示全部樓層
看不懂。。。。。。。。111
回復(fù)

使用道具 舉報(bào)

ID:88860 發(fā)表于 2015-8-25 11:34 | 顯示全部樓層
本帖最后由 重慶破鍋 于 2015-8-25 11:47 編輯

解決沒有呢?解決了的話  我就不看了 看了下程序  你300W拉600W的負(fù)載,怎么拉得起。
回復(fù)

使用道具 舉報(bào)

ID:88851 發(fā)表于 2015-8-25 14:23 | 顯示全部樓層
這么久了,問題估計(jì)解決了
回復(fù)

使用道具 舉報(bào)

ID:153199 發(fā)表于 2017-1-1 11:35 | 顯示全部樓層
負(fù)載太重吧
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表