cns343975

    1. 求大神看看,哪里出错了 4/1672 单片机 2015-12-28
      这是图片
    2. 求大神看看,哪里出错了 4/1672 单片机 2015-12-28
      蓝猫淘气 发表于 2015-12-28 14:14 把电路图和源码pose上
      #include                 //头文件 #include #define uchar unsigned char        //宏定义 #define uint unsigned int uchar leave=1;//标记当前是关灯,1关。0开 void main() {         T0_init();         //定时器0初始化         while(1)         {                 if(guang==0)        //检测光线偏暗                 {                         if(rs==1)        //判断是否有人.有人进入打开灯                         {                                 relay=0;        //吸合继电器,打开灯                                 T0_num=0;                                        time=0;                                 TR0=0;                                 leave=1;                         }                         else                //否则表示人走                         {                                 if(leave==1)  //开始定时20s,定时时间到就自动关闭灯                                         TR0=1;                                 else                                         relay=1;  //定时时间到,关闭灯                         }                 }                 else                //光线偏亮,无需开灯                 {                         relay=1; //关闭灯                 }         } }#ifndef _INTERRUPT_H_ #define _INTERRUPT_H_ #include #define uchar unsigned char #define uint unsigned int /**********************引脚定义************************/ sbit relay=P2^1; //继电器定义 sbit guang=P3^7; //光敏电阻输入 sbit rs=P3^2;         //人体热释传感器输入 /**********************变量定义************************/ uchar T0_num; uchar time; extern uchar leave; /********************************************************* 函数名称:void T0_init() 函数作用:定时器0初始化函数 参数说明: *********************************************************/ void T0_init() {         EA=1;                  //开总中断         ET0=1;                 //定时器T0中断允许                  TMOD=0x01;             //使用定时器T0、T1的模式1         TH0=(65536-50000)/256; //定时器T0的高8位赋初值         TL0=(65536-50000)%256; //定时器T0的高8位赋初值         TR0=0;                                   //关闭定时器 } /********************************************************* 函数名称:void T0_interrupt(void) interrupt 1 using 0 函数作用:定时器0中断处理函数 参数说明: *********************************************************/ void T0_interrupt(void) interrupt 1 using 0 {                          TH0=(65536-50000)/256; //定时器T0的高8位重新赋初值         TL0=(65536-50000)%256; //定时器T0的高8位重新赋初值         T0_num++;         if(T0_num==20)         //20*50ms=1s定时完成         {                 T0_num=0;         //清除后,重新开始定时                 time++;                 //秒数加1         }         if(time==20)         //20S到         {                 TR0=0;                 //关闭定时                 leave=0;                 time=0;                 //清除秒数         }                                         } #endif

最近访客

< 1/1 >

统计信息

已有2人来访过

  • 芯积分:--
  • 好友:--
  • 主题:2
  • 回复:2

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言