标题:
奇怪的错误,检查了几遍也查不出问题在哪,求明白人指点
[打印本页]
作者:
xjj7874
时间:
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);
}
作者:
xjj7874
时间:
2015-8-11 21:20
24小时必答区也木有人么
作者:
xjj7874
时间:
2015-8-16 09:05
难道都不懂?好像程序不会执行else if(P16==0)这一句,P16一直是低电平
作者:
xjj7874
时间:
2015-8-16 09:06
我把代码改成延时60秒后判断也还是P16一直为低
作者:
qswcl000
时间:
2015-8-17 11:10
初学C51,来看看! 顶!!!!
作者:
tonyfan0220
时间:
2015-8-20 12:20
看不懂!!!!!!!!!111
作者:
重庆破锅
时间:
2015-8-25 11:34
本帖最后由 重庆破锅 于 2015-8-25 11:47 编辑
解决没有呢?解决了的话 我就不看了 看了下程序 你300W拉600W的负载,怎么拉得起。
作者:
nuoou
时间:
2015-8-25 14:23
这么久了,问题估计解决了
作者:
liuzhaoxin1020
时间:
2017-1-1 11:35
负载太重吧
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1