找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2426|回复: 7
收起左侧

报警产生器单片机程序问题

[复制链接]
ID:237797 发表于 2018-7-19 18:51 | 显示全部楼层 |阅读模式
1. 实验任务
用P1.0 输出1KHz 和500Hz 的音频信号驱动扬声器,作报警信号,要求1KHz
信号响100ms,500Hz 信号响200ms,交替进行,P1.7 接一开关进行控制,当
开关合上响报警信号,当开关断开告警信号停止,编出程序。
2.电路图
QQ图片20180719184418.png

3.C 语言源程序
#include <AT89X51.H>
#include <INTRINS.H>
bit flag;             //此定义有啥作用?
unsigned char count;
void dely500(void)
{
unsigned char a,b;
    for(b=71;b>0;b--)
        for(a=2;a>0;a--);
}
void main(void)
{
while(1)
{
if(P1_7==0)
{
for(count=200;count>0;count--)  //此语句的作用?
{
P1_0=~P1_0;
dely500();
}
for(count=200;count>0;count--)
{
P1_0=~P1_0;
dely500();
dely500();
}
}
}
}
4.问题见上面程序红色字注解,由于才开始学,看不明白。希望有知道的帮忙解释一下。

回复

使用道具 举报

ID:245937 发表于 2018-7-19 19:39 | 显示全部楼层
bit flag;  定义一个标志位,用来记录状态的。
or(count=200;count>0;count--)  //此语句的作用?
{
P1_0=~P1_0;
dely500();
}
灯闪烁程序
回复

使用道具 举报

ID:237797 发表于 2018-7-19 19:43 | 显示全部楼层
akclwq 发表于 2018-7-19 19:39
bit flag;  定义一个标志位,用来记录状态的。
or(count=200;count>0;count--)  //此语句的作用?
{

谢谢你的回复!for(count=200;count>0;count--)这句如何理解呢?没有bit flag;这个定义会有啥问题?
回复

使用道具 举报

ID:111634 发表于 2018-7-19 22:28 | 显示全部楼层
找有注释、看得懂的程序看!
回复

使用道具 举报

ID:308437 发表于 2018-7-20 09:29 | 显示全部楼层
for(count=200;count>0;count--)这个就是for循环啊!!
bit flag;   这个程序没用到,可以删了
回复

使用道具 举报

ID:373388 发表于 2018-7-20 11:13 | 显示全部楼层
从你的程序看,bit flag 是定义了一bit做为标志,但在程序中没有用;其次dely500()函数应该是延时500us左右,调用1次500us,P1.0电平变化一次,正好输出1kHz频率, for(count=200;count>0;count--)这个循环执行200次,每次调用1次延时500us,调用200次执行100ms退出; 调用2次就大约1ms,P1.0电平反转1次,就输出500Hz频率,for循环执行200次,P1.0输出500Hz频率  200ms退出。
回复

使用道具 举报

ID:237797 发表于 2018-7-23 08:04 | 显示全部楼层
yousunny 发表于 2018-7-20 09:29
for(count=200;count>0;count--)这个就是for循环啊!!
bit flag;   这个程序没用到,可以删了

谢谢你的解答!
回复

使用道具 举报

ID:237797 发表于 2018-7-23 08:04 | 显示全部楼层
xhaity 发表于 2018-7-20 11:13
从你的程序看,bit flag 是定义了一bit做为标志,但在程序中没有用;其次dely500()函数应该是延时500us左右 ...

谢谢你的详细解释,现在很明白了!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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