找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2189|回复: 8
打印 上一主题 下一主题
收起左侧

奇怪的错误,检查了几遍也查不出问题在哪,求明白人指点

[复制链接]
跳转到指定楼层
楼主
ID:87791 发表于 2015-8-6 22:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序比较简单,就是用一个300W集中电源带6个100W水泵,水泵是按顺序依次启动的,写进单片机就程序运行一会就是一直P16口为低电平没变过,单片机为STC15L204EA,程序清单如下:
/*
水泵定时系统
*/
#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用于存储过程时间
uchar _20ms;//定义全局变量_20ms用于计数中断个数,50个为1秒
sbit set1=P5^4;//水位报警
//-----------------------------------------------
#define FOSC 12000000L
/*------------------------------------------------
                 外部中断0
------------------------------------------------*/
void exint0() interrupt 0       //水位报警
{
if(set1==0)
{
  set1=1;
}
else
{
    set1=0;
}
}
/*------------------------------------------------
                 外部中断1
------------------------------------------------*/
void exint1() interrupt 2       //INT1中断入口
{
if(mode==1)
{
mode=24;
}
else
{
  mode=1;
}
}
// 定时器中断
void tm0_isr() interrupt 1 using 1
{
   TL0 = 0xE0;  //设置定时初值
   TH0 = 0xB1;  //设置定时初
    _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;                    //设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
    EX0 = 1;
   //INT1 = 1;
    IT1 = 0;                    //设置INT1的中断类型 (1:仅下降沿 0:上升沿和下降沿)
    EX1 = 1;
    ET0 = 1;                        //使能定时器0中断
   AUXR &= 0x7F;  //定时器时钟12T模式
   TMOD &= 0xF0;  //设置定时器模式
   TL0 = 0xE0;  //设置定时初值
   TH0 = 0xB1;  //设置定时初
    TF0 = 0;  //清除TF0标志
    TR0 = 1;                        //定时器0开始计时
    while (1);
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:87791 发表于 2015-8-11 21:20 | 只看该作者
24小时必答区也木有人么
回复

使用道具 举报

板凳
ID:87791 发表于 2015-8-16 09:05 | 只看该作者
难道都不懂?好像程序不会执行else if(P16==0)这一句,P16一直是低电平
回复

使用道具 举报

地板
ID:87791 发表于 2015-8-16 09:06 | 只看该作者
我把代码改成延时60秒后判断也还是P16一直为低
回复

使用道具 举报

5#
ID:88463 发表于 2015-8-17 11:10 | 只看该作者
初学C51,来看看!  顶!!!!
回复

使用道具 举报

受到警告 6#
ID:88632 发表于 2015-8-20 12:20 | 只看该作者
看不懂!!!!!!!!!111
回复

使用道具 举报

7#
ID:88860 发表于 2015-8-25 11:34 | 只看该作者
本帖最后由 重庆破锅 于 2015-8-25 11:47 编辑

解决没有呢?解决了的话  我就不看了 看了下程序  你300W拉600W的负载,怎么拉得起。
回复

使用道具 举报

8#
ID:88851 发表于 2015-8-25 14:23 | 只看该作者
这么久了,问题估计解决了
回复

使用道具 举报

9#
ID:153199 发表于 2017-1-1 11:35 | 只看该作者
负载太重吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表