找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4853|回复: 16
收起左侧

点亮一个LED后在这LED灯有频闪,10微秒闪一下是怎样加入程序中求大神指指点点

[复制链接]
ID:139788 发表于 2016-10-18 01:13 | 显示全部楼层 |阅读模式
在以事下的程序中,我想做一个工程文件,点亮一个LED后在这LED灯有频闪,10微秒闪一下是怎样加入程序中????????????????

#include<reg51.h>   

sbit  LED0=P2^0;   

void  main()
{
//    P2=0x00;
  while(1);
  {
    P2=0xff;

//    LED0=0;
  }
}

回复

使用道具 举报

ID:111634 发表于 2016-10-18 12:26 | 显示全部楼层
10微妙闪一下,什么意思?人眼对10微妙无感觉。
回复

使用道具 举报

ID:123289 发表于 2016-10-18 13:03 | 显示全部楼层
本帖最后由 yzwzfyz 于 2016-10-18 13:25 编辑

"10微秒闪一下"
时间太短,不宜用C写程序实现。
回复

使用道具 举报

ID:123289 发表于 2016-10-18 13:13 | 显示全部楼层
本帖最后由 yzwzfyz 于 2016-10-18 13:14 编辑

设晶振是12MHz,则一个机器周期是1us, 10个机器周期就是10us.

LOOP:      CPL  P1.1        ;2个机器周期,LED闪动切换
               NOP               ;1个机器周期
               JMP LOOP       ;2个机器周期

回复

使用道具 举报

ID:123289 发表于 2016-10-18 13:18 | 显示全部楼层
为了能退出以上的死循环,可以改为:

LOOP:      CPL  P1.1                      ;2个机器周期,LED闪动切换
               NOP                             ;1个机器周期
               JNB  B_STOP, LOOP       ;2个机器周期

B_STOP:是个标记位(位标记),可以在中断程序中,设置为1,以使程序退出LOOP循环。
回复

使用道具 举报

ID:123289 发表于 2016-10-18 13:20 | 显示全部楼层
P1.1接LED灯,一亮一暗各占5个机器周期。
如果一亮一暗各10us,可以再增加5个NOP。
回复

使用道具 举报

ID:123289 发表于 2016-10-18 13:24 | 显示全部楼层
如果用C语言写,由于你无法预料,C是如何编译你的程序的,所以不太好控制准时间。
当然你可以在C编译后,检查其编译的结果,再作修改。
回复

使用道具 举报

ID:123289 发表于 2016-10-18 13:40 | 显示全部楼层
提示一下:
如果是改进型的51单片机,则其执行指令的时间,不一定需要12个振荡周期(流水取指架构,有预取指功能),则需要另作处理,稍复杂一点,不在此详述了。如STC的51芯片。
回复

使用道具 举报

ID:7485 发表于 2016-10-18 15:10 | 显示全部楼层
10微秒能看得出来?老式的日光灯(带电感镇流器的)也是闪烁的,周期是20000微秒,也就是20毫秒。
回复

使用道具 举报

ID:123289 发表于 2016-10-18 15:13 | 显示全部楼层
人看不出来,如果用仪器呢?用LED灯来传信息,是有这样的做法的。
回复

使用道具 举报

ID:123289 发表于 2016-10-18 15:13 | 显示全部楼层
不过不是10微秒!
回复

使用道具 举报

ID:143248 发表于 2016-10-18 16:04 | 显示全部楼层
10us你都能分辨出来??你程序每次执行循环都会亮一次灭一次,肉眼几乎无法识别
回复

使用道具 举报

ID:139788 发表于 2016-10-18 22:56 | 显示全部楼层
回各位,
我的主程序是以5只红外LED取代,以流水灯方式点动周期性(C程)。从中加入在点亮LED红外上以10us--100us间隔频闪次数加载接收上。
回复

使用道具 举报

ID:143344 发表于 2016-10-19 00:53 | 显示全部楼层
加入一个延时函数delay
回复

使用道具 举报

ID:139788 发表于 2016-10-20 00:02 | 显示全部楼层
Davinc 发表于 2016-10-19 00:53
加入一个延时函数delay

例举一下,怎样加入延时函数delay在C程中运行?
回复

使用道具 举报

ID:143544 发表于 2016-10-20 10:04 | 显示全部楼层
10微妙人眼看不出来的
回复

使用道具 举报

ID:143571 发表于 2016-10-20 13:32 | 显示全部楼层
根据晶振,算周期
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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