目前共有3篇帖子。 內容轉換:不轉換▼
 
點擊 回復
431 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)
 

本帖信息

點擊數:431 回複數:2
評論數: ?
作者: 巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2012-7-18 21:57
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。