找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5072|回复: 6
打印 上一主题 下一主题
收起左侧

如何编写C语言的延迟函数,实现p1.0口的led闪烁1/2/3次和不断闪烁与常亮呢?

[复制链接]
跳转到指定楼层
楼主
ID:190966 发表于 2017-4-18 20:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何编写延迟函数,实现p1.0口的led闪烁1/2/3次和不断闪烁与常亮呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:190966 发表于 2017-4-18 20:26 | 只看该作者
还有怎样用p3.2口的高低电平来控制闪烁的状态呢?
回复

使用道具 举报

板凳
ID:190966 发表于 2017-4-18 22:30 | 只看该作者
请问下怎么改下面程序呀?就是闪烁次数不对,改延时么?
#include<reg51.h>
#define uchar unsigned char
sbit key=P3^3;
sbit led=P1^1;
uchar timeCnt=0;
void delay( unsigned int t)
{
uchar i,j;
for(i=t;i>0;i--)
for(j=3;j>0;j--);
}
void shanshuo1()
{
led=~led;
delay(0);
}
void shanshuo2()
{
led=~led;
delay(10);
}
void shanshuo3()
{
led=~led;
delay(100);
}
void shanshuo4()
{
led=0;
delay(1500);
led=1;
delay(1500);
}
void shanshuo5()
{
led=0;
delay(60000);
led=1;
delay(60000);
}
void main()
{
while(1)
{
if(key==0)
{
timeCnt++;
if(timeCnt==6) timeCnt=0;
}
if(timeCnt==1) shanshuo1();
if(timeCnt==2) shanshuo2();
if(timeCnt==3) shanshuo3();
if(timeCnt==4) shanshuo4();
if(timeCnt==5) shanshuo5();

}
}
回复

使用道具 举报

地板
ID:189542 发表于 2017-4-19 15:43 | 只看该作者
在多机通信中,主机必须要能对各个从机进行识别,在51系列单片机中可以通过SCON寄存器的SM2位来实现。当串口以方式2或方式3发送数据时,每一帧信息都是11位,第9位是数据可编程位,通过给TB8置1或置0来区别地址帧和数据帧,当该位为1时,发送地址帧;该位为0时,发送数据帧。 在多机通信过程中,主机先发送某一从机的地址,等待从机的应答,所有的从机接收到地址帧后与本机地址进行比较,若相同,则将SM2置0准备接收数据;若不同,则丢弃当前数据,SM2位不变。
回复

使用道具 举报

5#
ID:190541 发表于 2017-4-19 15:56 | 只看该作者
循环语句加上延时;常亮不加延时
回复

使用道具 举报

6#
ID:190966 发表于 2017-4-19 17:19 | 只看该作者
·零点· 发表于 2017-4-19 15:56
循环语句加上延时;常亮不加延时

是这样加么?
uchar i,j;
for(i=t;i>0;i--)
for(j=250;j>0;j--);
}
void shanshuo1()
{
led1=0;
delay(5000);
led2=2;
delay(5000);
led3=1;
delay(5000);
}
void shanshuo2()
{
led2=0;
delay(5000);
led1=1;
delay(5000);
led3=1;
delay(5000);
}
void shanshuo3()
{
led3=0;
delay(5000);
led1=1;
delay(5000);
led2=1;
delay(5000);
}
void shanshuo4()
{
led1=0;
delay(5000);
led2=0;
delay(5000);
led3=1;
delay(5000);
}
void shanshuo5()
{
led2=0;
delay(5000);
led3=0;
delay(5000);
led1=1;
delay(5000);
}
void main()
{
while(1)
{
if(s2==0)
{
timeCnt++;
if(timeCnt==6) timeCnt=0;
}
if(timeCnt==1) shanshuo1();
if(timeCnt==2) shanshuo2();
if(timeCnt==3) shanshuo3();
if(timeCnt==4) shanshuo4();
if(timeCnt==5) shanshuo5();

}
}
回复

使用道具 举报

7#
ID:190966 发表于 2017-4-19 17:20 | 只看该作者
·零点· 发表于 2017-4-19 15:56
循环语句加上延时;常亮不加延时

亲吻怎么添加进去呢?似乎是缺少头文件还是怎么修改呢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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