找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3885|回复: 1
收起左侧

求救:编程过了,为什么达不到效果

[复制链接]
ID:35775 发表于 2012-3-13 11:22 | 显示全部楼层 |阅读模式

急救,请高手协助

要求:

      1、上电灯开始循环流水灯,

      2、当按下按键K后灯全亮,且蜂鸣器开始唱生日快乐歌,放开按键后灯开始流水且蜂鸣器停止。

      程序如下:

      说明:P2.0接蜂鸣器,P2.1接按键K,P1口接8个灯

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit beep=P2^0;
sbit down=P2^1;
uchar code table[]={400,400,650,650,650,1200,
     400,400,650,650,650,1200,
     400,400,650,650,650,650,1200,
     400,400,650,650,650,1200} ;
uchar code table1[]={0xfd,0x79,0xfd,0x79,0xfd,0xc7,0xfd,0x79,0xfe,0x21,0xfe,0x05,
        0xfd,0x79,0xfd,0x79,0xfd,0xc7,0xfd,0x79,0xfe,0x51,0xfe,0x21, 
     0xfd,0x79,0xfd,0x79,0xfe,0xc0,0xfe,0x84,0xfe,0x21,0xfe,0x05,0xfd,0xc7,
     0xfe,0x99,0xfe,0x99,0xfe,0x90,0xfe,0x21,0xfe,0x51,0xfe,0x21
     };
uchar temp,i,j,time1,time2;
void delay(uint z)
{
 uint t,y;
 for(t=z;t>0;t--)
  for(y=125;y>0;y--);
}
void main()
{   
 TMOD=0x01;
 TH0=0;
 TL0=0;
 EA=1;
 ET0=1;
 TR0=1;
 temp=0xfe;
 P1=temp;
 while(1)
 {
   temp=_crol_(temp,1);
   delay(500);
   P1=temp;
   if(down==0)
   {
     P1=~P1;
     beep=~beep;
     time1=table[i++];
     time2=table[i++];
     if(i==50)
        i=0;
     delay(table1[j++]);
     if(j==25)
        j=0;
    }  
  }
}  

void timer0() interrupt 1
{
  TR0=0;
 TH0=time1;
 TL0=time2;
 TR0=1;
}

 

回复

使用道具 举报

ID:35775 发表于 2012-3-13 14:14 | 显示全部楼层
PCB板我是用万用板,只给了单片机基本的工作条件,外围元器件基本没加
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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