求大神们指点,单片机不执行程序

[复制链接]
2012|9
 楼主| 逆行之殇 发表于 2014-5-18 23:29 | 显示全部楼层 |阅读模式
程序编译无问题,循环中断也都有,求大神们指点为什么程序烤进去就是不执行呢。。。。。。
 楼主| 逆行之殇 发表于 2014-5-18 23:36 | 显示全部楼层
这里是程序代码
/************************************************
* 文件名  : 阳台植物自动灌溉系统.c
* 描述    :  每十秒钟检测一次土壤湿度传感器,当湿度
                     小于一定值之后进行灌溉,否则检测温度,
                         当温度高于前一温度的1.2倍时进行浇灌,
                         否则继续进行检测
**************************************************/
#include<reg52.h>
#include<intrins.h>
#include"DS18B20.h"
#define uchar unsigned char
#define uint  unsigned int
sbit humidity=P2^0;          //土壤湿度标志位
sbit irrigate=P2^1;          //开始灌溉标志位
sbit P12=P1^3;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
uchar Count = 0;
char t1,t2;           //温度值
/***********************************************
*延时1MS函数
************************************************/

void delay(uint x)
{
        uchar m,n;
        for(m=x;m>0;m--)
        for(n=110;n>0;n--);
}
/***********************************************
* 名称 : Time0_Init()
* 功能 : 定时器的初始化,11.0592MZ晶振,50ms
* 输入 : 无
* 输出 : 无
************************************************/
void Time0_Init()
{
        TMOD = 0x01;
        IE          = 0x82;
        TH0  = 0x4c;
        TL0  = 0x00;       
        TR0 = 1;               
}
                                                                                 
/**********************************************
* 名称 : Time0_Int()
* 功能 : 定时器中断,中断中实现 Count 加一
* 输入 : 无
* 输出 : 无
************************************************/
void Time0_Int() interrupt 1
{
        TH0 = 0x4c;
        TL0 = 0x00;
        Count++;                        //长度自加1
}

/**********************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
************************************************/
void main()
{

        Time0_Init();                         //定时器初始化
        DS18B20_start_change();         //启动温度转换函数
        delay(1000);
        t1=DS18B20_read_date();          //读取温度数值函数
        while(1)
        {
                t2=1.2*t1;
                while(1)
                {        P16=0;
                        if(Count >= 200)          //当Count为 20 时,i 自加一次,200 * 50MS = 10S
                        {          P17=0;
                                Count = 0;
                                DS18B20_start_change();        //启动温度转换函数
                                delay(1000);
                                t1=DS18B20_read_date();//读取温度数值函数
                                if (humidity==1)           //湿度标志位检测为高电平时
                                {        P13=0;
                                        irrigate=1;                   //开始灌溉
                                        break;
                                }
                                else
                                if(t1>t2)                   //当温度高于前一温度的1.2倍时
                                {        P14=0;
                                        irrigate=1;                   //开始灌溉
                                        break;
                                }
                                else
                                {        P15=0;
                                        irrigate=0;                   //不进行灌溉
                                        break;
                                }
                               
                        }
                }
        }
}
 楼主| 逆行之殇 发表于 2014-5-18 23:37 | 显示全部楼层
求各位大神说得尽量简单详细一点,小弟是刚刚接触单片机的菜到不行的菜鸟。在此小弟跪谢了。
ayb_ice 发表于 2014-5-19 07:16 来自手机 | 显示全部楼层
拉低GPIO试试就知道了
sdzhwmr 发表于 2014-5-19 08:32 | 显示全部楼层
建议试着某个端口输出高电平,测其输出电压,看看程序到底有没有烧录成功。。。
renqinglei 发表于 2014-5-19 08:54 | 显示全部楼层
加个运行指示什么的,也好观察
song0619 发表于 2014-5-19 13:27 | 显示全部楼层
你查一下你的板有问题吗?主要是晶体工作吗?
草民 发表于 2014-5-19 16:51 | 显示全部楼层
不一定是程序问题。电源、晶振、复位这些问题都可能导致不运行
ningling_21 发表于 2014-5-19 19:51 | 显示全部楼层
程序,电源供电,晶振电路,复位电路 任何一个不正常都不能执行...
okhuojia 发表于 2014-5-19 22:40 | 显示全部楼层
看不懂呀,看不懂
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部