找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2242|回复: 5
收起左侧

这个单片机门铃程序怎么让他按一下按钮响两声?

[复制链接]
ID:826420 发表于 2020-10-16 14:10 来自手机 | 显示全部楼层 |阅读模式
单片机源程序如下:
#include <AT89X51.H>
unsigned char t5hz;
unsigned char t7hz;
unsigned int tcnt;

bit stop;
bit flag;

void main(void)
{
        unsigned char i,j;
        
        TMOD=0x02;
        TH0=0x06;
        TL0=0x06;
        ET0=1;
        EA=1;
        
        while(1)
        {
                if(P3_3==0)
                {
                        for(i=10;i>0;i--)
                        for(j=248;j>0;j--);
                        if(P3_3==0)
                        {
                                t5hz=0;
                                t7hz=0;
                                tcnt=0;
                                flag=0;
                                stop=0;
                                TR0=1;
                                while(stop==0);
                        }
                }
        }//...while(1)
}//...main

void t0(void) interrupt 1 using 0
{
        tcnt++;
        if(tcnt==2000)
        {
                tcnt=0;
                if(flag==0)
                {
                        flag=~flag;
                }
                else
                {
                        stop=1;
                        TR0=0;
                }
        }
        
        if(flag==0)
        {
                t7hz++;
                if(t7hz==3)
                {
                t7hz=0;
                P3_2=~P3_2;
                }
        }
        else
        {
                t5hz++;
                if(t5hz==4)
                {
                t5hz=0;
                P3_2=~P3_2;
                }
        }
}
回复

使用道具 举报

ID:654028 发表于 2020-10-16 16:54 | 显示全部楼层
把门铃响一下写成一个函数不就好了
回复

使用道具 举报

ID:826420 发表于 2020-10-16 23:06 来自手机 | 显示全部楼层
心有浮生 发表于 2020-10-16 16:54
把门铃响一下写成一个函数不就好了

请问具体该怎么操作?
回复

使用道具 举报

ID:383832 发表于 2020-10-17 05:22 | 显示全部楼层
326406920 发表于 2020-10-16 23:06
请问具体该怎么操作?

写成子涵数
一个时间延迟函数,一个响铃函数
main 函数调用就行了。会比较简洁
回复

使用道具 举报

ID:123289 发表于 2020-10-17 14:37 | 显示全部楼层
1、做一个定时器,每间隔一个时间(如0.5秒)中断一次。
2、做一个变量A,每次中断检查A=?。分三种情况处理。
2.1 A=0,不处理,退出;
2.2 A=偶数,打开蜂鸣器,再将A-1,退出;
2.2 A=奇数,关闭蜂鸣器,再将A-1,退出;
想一下,如果你给A置个4,接下来蜂鸣器会如何动作呢?
如此当按键按下后,只要你给A送个数,你让它叫必声,都可以。

写程序关键再于构成方案,写代码不重要。
回复

使用道具 举报

ID:826420 发表于 2020-10-17 17:36 来自手机 | 显示全部楼层
yzwzfyz 发表于 2020-10-17 14:37
1、做一个定时器,每间隔一个时间(如0.5秒)中断一次。
2、做一个变量A,每次中断检查A=?。分三种情况处 ...

太感谢了,受教
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表