智能车制作
标题:
求大神帮我看看我的仿真
[打印本页]
作者:
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