找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[求助]1秒内灯闪10次

[复制链接]
跳转到指定楼层
楼主
ID:25279 发表于 2010-10-21 21:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

程序要求:1秒之内灯闪10次,我编的程序A和B都不能实现这个要求,哪位热心人帮帮我

A:

#include  <reg52.h>

#define uchar unsigned char
#define uint unsigned int
uchar a=0;
sbit LED=P0^0;
sbit P1_4=P1^4;
void delay(uint z);
void main()
{
   P1_4=0;
 a=0;
  TMOD = 0x01;
 TH0 = (65536-50000)/256;//50ms
 TL0 = (65536-50000)%256;
 EA = 1;
 ET0 = 1;
 TR0 = 1;
 while(1);
}

void Timer_0() interrupt 1
{
 TH0 = (65536-50000)/256;
 TL0 = (65536-50000)%256;
   a++;

    if(a == 1)
   {
     a=0;
     LED = ~LED;
 
  delay(689);
  TR0=0;
   }
}

void delay (uint z)
{
 uint x,y;
 for(x=125;x>0;x--)
 for(y=z;y>0;y--);
 }

 

 

B:

#include  <reg52.h>

#define uchar unsigned char
#define uint unsigned int
uchar a=0;
sbit LED=P0^0;
sbit P1_4=P1^4;
void delay(uint z);
void main()
{
   P1_4=0;
 a=0;
  TMOD = 0x01;
 TH0 = (65536-50000)/256;//50ms
 TL0 = (65536-50000)%256;
 EA = 1;
 ET0 = 1;
 TR0 = 1;
 while(1);

delay(689);

  ET0=0;
  TR0=0;

}

 

 

void Timer_0() interrupt 1
{
 TH0 = (65536-50000)/256;
 TL0 = (65536-50000)%256;
   a++;

    if(a == 1)
   {
     a=0;
     LED = ~LED;
 
     }
}

void delay (uint z)
{
 uint x,y;
 for(x=125;x>0;x--)
 for(y=z;y>0;y--);
 }

[此贴子已经被作者于2010-10-21 21:24:43编辑过]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:26540 发表于 2010-10-26 18:18 | 只看该作者
你设置100ms闪一次,不就等于1s闪10次了吗?
回复

使用道具 举报

板凳
ID:25279 发表于 2010-10-28 11:51 | 只看该作者

首先非常感谢你噢——给我回复了!!!

我按照你的提示写了一个如下,可是运行失败,您可否帮我写一个程序呢?

 

 

#include  <reg52.h>

#define uchar unsigned char
#define uint unsigned int
uchar a=0;
sbit LED=P0^0;
sbit P1_4=P1^4;
void delay(uint z);
void main()
{
   P1_4=0;
 a=0;
  TMOD = 0x01;
 TH0 = (65536-50000)/256;//50ms
 TL0 = (65536-50000)%256;
 EA = 1;
 ET0 = 1;
 TR0 = 1;
 while(1);
}

void Timer_0() interrupt 1
{
 TH0 = (65536-50000)/256;
 TL0 = (65536-50000)%256;
   a++;

    if(a == 2) //50ms*2=100ms,中断一次
   {
     a=0;
     LED = ~LED;

    if(a==20)//1000ms 即1秒

           {

               a=0;

               TR0=0;

            }

   }
}

 

请问是这样的吗?if(a == 2)之后它还会再实现if(a==20)吗?我感觉这个行不通!,我是新学者,还请多多赐教。

 

 

                          

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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