作者共发了3篇帖子。 内容转换:不转换▼
 
点击 回复
597 2
【程序】两排相反的流水灯
一派护法 十九级
1楼 发表于:2012-7-18 21:20
#include <iom16v.h>
#include <macros.h>
void delay_ms(unsigned int k)
{
   unsigned int i,j;
  for (i=0;i<k;i++)
    for (j=0;j<1140;j++);
}
void main()
{
   unsigned char i=0;
   DDRA=0xff;
  DDRB=0xff;
  PORTA=0xff;
  PORTB=0xff;
  while (1)
  {
       PORTA=~BIT(i);
     PORTB=~BIT(7-i);
     i++;
     if (i>7)
        i=0;
     delay_ms(500);
  }
}
一派护法 十九级
2楼 发表于:2012-7-18 21:27

AVR程序确实要比C51简洁。

如果用C51写这个程序的话,要写一大篇呢。光是sbit都是16行!

一派护法 十九级
3楼 发表于:2012-7-18 21:57
#include <iom16v.h>
#include <macros.h>
void delay_ms(unsigned int k)
{
   unsigned int i,j;
  for (i=0;i<k;i++)
    for (j=0;j<1140;j++);
}
void main()
{
   unsigned char i=0;
  unsigned char j=0;
  unsigned char k=0;
   DDRA=0xff;
  DDRB=0xff;
  PORTA=0xff;
  PORTB=0xff;
  while (1)
  {
       if (j>3)
     {
     PORTB=~(BIT(3)+BIT(4)); //同时亮两个灯的写法
     if (k==0)
       PORTA=~BIT(i);
     else
        PORTA=~BIT(7-i);
     i++;
     if (i>7)
     {
       delay_ms(500);
    PORTA=0x00; //全亮
       k++;
    i=0;
     }
     delay_ms(500);
     if (k>1)
     {
        j=0;
     k=0;
     }
     }
     else
     {
           PORTA=~BIT(i);
         PORTB=~BIT(7-i);
         i++;
         if (i>7)
         {
             i=0;
          j++;
         }
         delay_ms(500);
     }
  }
}

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:597 回复数:2
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2012-7-18 21:57
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。