智能车制作

标题: 求大神帮我看看我的仿真 [打印本页]

作者: 1178207654    时间: 2012-12-16 12:19
标题: 求大神帮我看看我的仿真

基于单片机的声光控开光的仿真,现在是一直不能实现白天有声音灯不亮,晚上有声音灯才亮的设计要求,初学者,不知道问题出在哪里,请论坛的大神帮我看看修改一下啊
C语言程序如下
#include<reg52.h>     //头文件
#define uint unsigned int   //宏定义
#define uchar unsigned char
/*******************************************************
  端口定义
********************************************************/
sbit guang=P1^0;  //光敏电阻接的IO口
sbit deng= P3^5;  //灯接的IO口
/*******************************************************/
uchar num=0;      
uint num1=0;
bit flag=0;

/***************************************************
  函数名称:主函数
  函数功能:
****************************************************/
void main()
{

TMOD=0x01;      //设置定时器0工作方式0
TH0=(65536-50000)/256;    //装初值
TL0=(65536-50000)%256;
EA=1;       //开总中断
ET0=1;        //开定时器中断
TR0=0;        //启动定时器0
deng=1;        //控制灯的IO口置1
  EX0=1;        //开外部中断0
     IT0=1;        //设置中断方式为下降沿出发方式
while(1)
{

  if(flag==1)
  {
  deng=1;
  flag=0;
  }
}
}
/******************************************************
  函数名称:定时器/计时器0中断子函数
  函数功能:
******************************************************/
void T0_time() interrupt 1   //打开定时器
{
TH0=(65536-50000)/256;   //重装初值
TL0=(65536-50000)%256;
num++;        //50ms num加1
if(num>=20)       //等于20 一秒时间到
{
  num=0;        //num清0
  num1++;        //num1++
  if(num1>=60)      //一分钟到
   {
    TR0=0;        //定时器关闭
    num1=0;        //num1清0
   flag=1;      //标志位flag置1
   }      //一秒自加一次
}
  
}
void int1() interrupt 0    //有声音 声音IO口出现一个低电平 引起外部中断
{
if(guang==1)    //光暗的时候
  {
   TR0=1;     //开定时器
   deng=0;    //开灯
  }
}

作者: 狂想症    时间: 2012-12-17 15:03
我建议增加一些辅助的调试手段,51无法在线仿真,你可以加入串口程序,用于调试。关键是看看具体是否进入外部中断了,如果进入让串口输出字符,上位接收。这样能发现问题。




欢迎光临 智能车制作 (http://www.znczz.com/) Powered by Discuz! X3.2