单片机程序

zwhvictory   2008-8-22 14:35 楼主
各位:
大家好,N久没有和大家见面了,由于生活所迫,以前计算机,现在单片机了,哈哈………………
废话少说,其程序原代码如下:
# include

sbit P17 = P3^7;//端口定义
sbit P18 = P3^5;
sbit P19 = P2^0;
                                                                                                                                               
void RColor( void )//显示红色函数
{
  P19=0;
}

void GColor( void )//显示绿色函数
{
  P18=0;
}

void BColor( void )//显示蓝色函数
{
  P17=0;
}
void TimeDelay( int i )//时间延迟函数
{
  int m;
  int j;
  int k;
  for( m = i; m > 0; m-- )
  for( j = 200;j > 0;j-- )
  for( k = 200;k > 0;k-- )
;
}
unsigned char ID;//定义计数器
bit P5;                  //按钮定义

void CallFunction( void );

void main( void )
{
  P17=1;//端口初始化
  P18=1;
  P19=1;
while( 1 )
{

  if( P5 == 0 )//按钮按下了吗?
    TimeDelay(5);//延迟函数,去抖动
    if( P5 == 0 )//按钮确实按下了
    {
     ID++;
     if( ID== 8)
       ID = 0;
    }
    switch( ID )//根据计数器的不同显示不同的颜色
                {
          case 0x00:
               RColor( );
               break;
          case 0x01:
               GColor( );
               break;
          case 0x20:
               BColor( );
               break;
          case 0x03:
               RColor( );
               GColor( );
               break;
          case 0x04:
               GColor( );
               BColor( );
               break;
          case 0x05:
               GColor( );
               BColor( );
               break;
          case 0x06:
               RColor( );
               GColor( );
               BColor( );
          case 0x07:
               CallFunction( );
               break;
                           while( 1 )
                           {
                                  ;
                           }
                }
    }
}

void CallFunction( void )//作用,通过不同端口输出的脉冲不同,组合起来以显示不同的颜色,且在不同颜色之间相互转换,
{
  unsigned char i;
  unsigned char j;
  unsigned char k;
for( i = 20;i > 0;i--)
   {
     TimeDelay( i );
   if( i==1 )
       i = 20;
      RColor(  );
      for( j = 20;j > 0; j--)
         {
                   TimeDelay( j );
          if(j == 1)
          j=20;
          GColor(  );
          for( k = 20;k > 0;k-- )
              {
                            TimeDelay( k );
                if( k==1 )
                   k = 20;
                BColor(  );
              }
         }

    }
}

其功能是,利用RGB三基色原理,实现LED的不同颜色,用的芯片为EM78p417NM,调试,编译没有问题,现在硬件还没有弄好,提前请各位高人指点下有没有什么错误,如果有怎么改正,谢谢!!!

回复评论 (5)

应该没什么问题了。
点赞  2008-8-22 15:59
怎么没有人响应???
点赞  2008-8-23 11:55
CallFunction 好像会挂死?
点赞  2008-8-23 12:19
我给大家特别推荐的两款产品,非常棒!!!  

1. c8051f 单片机(c2 ,jtag)和at89s5x单片机(isp)二合一串口编程下载线,支持3伏(c8051f 单片机),5伏(at89s5x单片机)电源,
目前通过实际验证可编程下载的芯片:c8051f310、c8051f320、c8051f330D、c8051f340、c8051f350、c8051f360、c8051f410、c8051f020、c8051f120、at89s51、at89s52、at89s8253等。

2. c8051f320 usb demo 板(是目前学习和应用usb 性价比特别高的一款单片机,资料全!上手快!)软硬件资源丰富:可提供硬件原理图;USB demo板上位机应用软件源代码(VB6 和VC6),以及usb底层驱动和驱动安装信息;USB demo板单片机固化程序的c51源代码。同样可以提供在keil下串口isd51源代码,可以硬件单步,连续运行和仿真!!!


c8051f320 usb demo 板+ c8051f 单片机(c2 ,jtag)和at89s5x单片机(isp)二合一串口编程下载线一套价格壹百肆拾元;外地另加20元邮资。


陕西杨工c8051f单片机博客
手机 13002928013
http://c8051fmcu.blog.sohu.com
点赞  2008-8-23 16:23
谢谢找出问题,我去看看,再次谢谢了
点赞  2008-8-23 16:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复