-
sbit key(1)=P3^0;
sbit key(2)=P3^1;
sbit key(3)=P3^2;
sbit key(4)=P3^3;
sbit key(5)=P3^4;
sbit key(6)=P3^5;
把他们的括号给我去掉。。。。。。
后面的一样子改掉!
-
速度贴上左移子函数来看看
-
你这孩子。。。。。。咋想的。。。。。。
-
不要如此吐槽嘛~~~嘿嘿,多试~多看~~~
-
做几个项目就什么都懂了,51单片机资料很多,真的学习来很简单。当然,前提是你起码得懂汇编或者C,C的可读性和可维护性要强很多~~~
-
不是歧义句
-
不复杂的
-
假设你的按键子函数为 bit key(uchar key_num);去抖神马的都写好了,key_num是按键号,你不是3号键么,按下的话就返回1,没按返回0。LED1为你控制灯1的单片机口,LED2为你控制灯2的单片机口,我不知道你具体电路怎么样的,这里假设LED1= 1,灯1亮,LED2 = 1,灯2量
不管你前面函数怎么写的,在主函数循环里面加入以下语句
bit LED1_buf,LED2_buf,LED_change_sign;
if((key(3) == 0) && (LED_change_sign == 0)) //在LED1,LED2状态没变的时候存入缓存,LED_change_sign为LED状态变化标志位。
{
LED1_buf = LED1;
LED2_buf = LED2;
}
if(key(3) == 1)
{
if(LED1 == 1)
{
LED1 = 0;
LED_change_sign = 1;
}
if(LED2 == 1)
{
LED2 = 0;
LED_change_sign = 1;
}
}
else
{
LED1 = LED1_buf;
LED2 = LED2_buf;
LED_change_sign = 0;
}
[ 本帖最后由 yipengjiusui 于 2012-7-24 17:21 编辑 ]
-
我记得PIR里面用的IC是BIS0001,里面有个双运放,自动处理红外型号,检测到红外信号某个引脚就输出一个高电平,具体应用电路图芯片手册里面就有,后面的就可以随意根据这个信号进行处理了。你这个还是相当简单的。
假设你用单片机的P1^1作为蜂鸣器输出,当然之前端口定义你已经定义过它了。
sbit BELL = P1^1;
uchar bell(uchar mode)
{
static uint time = 0;
static uchar mode_buf = 0;
if(mode != 0)
{
mode_buf = mode;
return 0;
}
if(mode_buf == 1)
{
BELL = 0;
}
else if(mode_buf == 3)
{
time++;
if(time < 300)
{
BELL = 1;
}
else if(time < 1000)
{
BELL = 0;
}
else
{
time = 0;
}
}
else if(mode_buf == 4)
{
time++;
if(time < 200)
{
BELL = 1;
}
else if(time < 500)
{
BELL = 0;
}
else
{
time = 0;
}
}
}
-
void alarm(void)
{
if((carry_count*250+pulse_count>=alarm_l)&&(Alarm != 0))
Alarm=0;
if(carry_count*250+pulse_count
-
void alarm(void)
{
if((carry_count*250+pulse_count>=alarm_l)&&(Alarm != 0))
Alarm=0;
if(carry_count*250+pulse_count