打印

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

[复制链接]
1365|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试试就知道了

使用特权

评论回复
5
sdzhwmr| | 2014-5-19 08:32 | 只看该作者
建议试着某个端口输出高电平,测其输出电压,看看程序到底有没有烧录成功。。。

使用特权

评论回复
6
renqinglei| | 2014-5-19 08:54 | 只看该作者
加个运行指示什么的,也好观察

使用特权

评论回复
7
song0619| | 2014-5-19 13:27 | 只看该作者
你查一下你的板有问题吗?主要是晶体工作吗?

使用特权

评论回复
8
草民| | 2014-5-19 16:51 | 只看该作者
不一定是程序问题。电源、晶振、复位这些问题都可能导致不运行

使用特权

评论回复
9
ningling_21| | 2014-5-19 19:51 | 只看该作者
程序,电源供电,晶振电路,复位电路 任何一个不正常都不能执行...

使用特权

评论回复
10
okhuojia| | 2014-5-19 22:40 | 只看该作者
看不懂呀,看不懂

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝