標(biāo)題: 新人學(xué)單片機(jī),各路大神這個程序哪里錯了。只亮一個LED,不能流水點亮。 [打印本頁]

作者: 二九九    時間: 2015-10-2 10:31
標(biāo)題: 新人學(xué)單片機(jī),各路大神這個程序哪里錯了。只亮一個LED,不能流水點亮。
#include"reg51.h"
#include"intrins.h"

#define LED P2

void Delay10ms (unsigned int );

void main (void)
{
unsigned char n;
  LED=0x01 ;
  while(1);
  {       
    for(n=0;n<7;n++);
    {
         LED=(LED>>1);
         Delay10ms(100);
    }}}


作者: liuzhenwen    時間: 2015-10-2 11:03
運行出錯?
作者: 二九九    時間: 2015-10-2 11:09
liuzhenwen 發(fā)表于 2015-10-2 11:03
運行出錯?

只亮一個LED,不能流水點亮。
作者: hzb123    時間: 2015-10-2 13:27
延遲函數(shù) 只有聲明了,卻沒有定義。看你的目的應(yīng)該是流水燈效果,而你的程序?qū)崿F(xiàn)的效果8個小燈全亮。
作者: 二九九    時間: 2015-10-2 14:47
hzb123 發(fā)表于 2015-10-2 13:27
延遲函數(shù) 只有聲明了,卻沒有定義?茨愕哪康膽(yīng)該是流水燈效果,而你的程序?qū)崿F(xiàn)的效果8個小燈全亮。

要怎么定義?
作者: hzb123    時間: 2015-10-2 16:05
二九九 發(fā)表于 2015-10-2 14:47
要怎么定義?

沒有定義延遲函數(shù),不影響編譯,可能會出現(xiàn)警告   
比如
void Delayms(unsigned char x)
{
        unsigned char y,z;
        for(y=x;y>0;y--)
        for(z=120;z>0;z--);
}
//主時鐘12M 差不多1MS毫秒延遲
作者: 騰飛的龍    時間: 2015-10-2 16:35
#include<reg52.h>
//#include"intrins.h"這句可以不用,因為你沒用到包含_nop_();和左右移動函數(shù)
#define uchar unsigned char#define uint unsigned int//宏定義方便書寫
#define LED P2

void Delay10ms (uint  z)//延時大約1ms
{   uint  x,y;
  fonr(x=z;x>0;x--)
  for(y=120;y>0;y--);
}
void main (void)
{
   uchar n;
  LED=0x01 ;//根據(jù)你的實驗板IO口是輸出高電平亮還是輸出低電平亮
//LED=0xfe;//IO口輸出低電平亮第一個
  while(1);
  {        
    for(n=0;n<7;n++);//循環(huán)執(zhí)行7次
    {
         LED=(LED>>1);//括號可以去掉
        LED=LED<<1;//左移
         Delay10ms(500);//可以加大延時看看
    }
}
}


作者: 二九九    時間: 2015-10-2 16:58
本帖最后由 二九九 于 2015-10-3 14:27 編輯
hzb123 發(fā)表于 2015-10-2 16:05
沒有定義延遲函數(shù),不影響編譯,可能會出現(xiàn)警告   
比如
void Delayms(unsigned char x)

謝謝,通了?纯催@個能精簡嗎?
  1. #include"reg51.h"
  2. void Delay10ms(unsigned int c);
  3. unsigned char LED;
  4. void main ()
  5. {    unsigned char i;
  6.      LED = 0xFF ;
  7.      while(1)
  8. {      
  9.       for (i = 0 ; i < 7 ; i++)
  10. {
  11.       P0 = LED ;
  12.       Delay10ms(5);
  13.       LED= LED >> 1;
  14.       LED = LED | 0x01;
  15.       }   
  16.       for (i = 0 ; i < 6 ; i++)
  17. {
  18.       P0 = LED ;
  19.       Delay10ms(5);
  20.       LED= LED << 1;
  21.       LED = LED | 0x01;
  22.       }
  23.       for (i = 0 ; i < 6 ; i++)
  24. {
  25.       P0 = LED ;
  26.       Delay10ms(5);
  27.       LED= LED >> 1;
  28.       LED = LED | 0x01;
  29.       }
  30.       for (i = 0 ; i < 5 ; i++)
  31. {
  32.       P0 = LED ;
  33.       Delay10ms(5);
  34.       LED= LED << 1;
  35.       LED = LED | 0x01;
  36.       }
  37.       for (i = 0 ; i < 5 ; i++)
  38. {
  39.       P0 = LED ;
  40.       Delay10ms(10);
  41.       LED= LED >> 1;
  42.       LED = LED | 0x01;
  43.       }
  44.       for (i = 0 ; i < 4 ; i++)
  45. {
  46.       P0 = LED ;
  47.       Delay10ms(5);
  48.       LED= LED << 1;
  49.       LED = LED | 0x01;
  50.       }
  51.       for (i = 0 ; i < 4 ; i++)
  52. {
  53.       P0 = LED ;
  54.       Delay10ms(5);
  55.       LED= LED >> 1;
  56.       LED = LED | 0x01;
  57.       }
  58.       for (i = 0 ; i < 3 ; i++)
  59. {
  60.       P0 = LED ;
  61.       Delay10ms(5);
  62.       LED= LED << 1;
  63.       LED = LED | 0x01;
  64.       }
  65.       for (i = 0 ; i < 3 ; i++)
  66. {
  67.       P0 = LED ;
  68.       Delay10ms(10);
  69.       LED= LED >> 1;
  70.       LED = LED | 0x01;
  71.       }
  72.       for (i = 0 ; i < 2 ; i++)
  73. {
  74.       P0 = LED ;
  75.       Delay10ms(5);
  76.       LED= LED << 1;
  77.       LED = LED | 0x01;
  78.       }
  79.       for (i = 0 ; i < 2 ; i++)
  80. {
  81.       P0 = LED ;
  82.       Delay10ms(5);
  83.       LED= LED >> 1;
  84.       LED = LED | 0x01;
  85.       }
  86.       for (i = 0 ; i < 1 ; i++)
  87. {
  88.       P0 = LED ;
  89.       Delay10ms(5);
  90.       LED= LED << 1;
  91.       LED = LED | 0x01;
  92.       }
  93.       for (i = 0 ; i < 1 ; i++)

  94. {
  95.       P0 = LED ;
  96.       Delay10ms(5);
  97.       LED= LED >> 1;
  98.       LED = LED | 0x00;
  99.       }
  100.       for (i = 0 ; i < 7 ; i++)
  101. {     P0 = LED ;
  102.       Delay10ms(5);
  103.       LED= LED << 1;
  104.       LED = LED | 0x01;
  105.       }
  106.       for (i = 0 ; i < 7 ; i++)
  107. {
  108.       P0 = LED ;
  109.       Delay10ms(5);
  110.       LED= LED << 1;
  111.       LED = LED | 0x80;
  112.       }
  113.       for (i = 0 ; i < 6 ; i++)
  114. {
  115.       P0 = LED ;
  116.       Delay10ms(5);
  117.       LED= LED >> 1;
  118.       LED = LED | 0x80;
  119.       }
  120.       for (i = 0 ; i < 6 ; i++)
  121. {
  122.       P0 = LED ;
  123.       Delay10ms(5);
  124.       LED= LED << 1;
  125.       LED = LED | 0x80;
  126.       }
  127.       for (i = 0 ; i < 5 ; i++)
  128. {
  129.       P0 = LED ;
  130.       Delay10ms(5);
  131.       LED= LED >> 1;
  132.       LED = LED | 0x80;
  133.       }
  134.       for (i = 0 ; i < 5 ; i++)
  135. {
  136.       P0 = LED ;
  137.       Delay10ms(5);
  138.       LED= LED << 1;
  139.       LED = LED | 0x80;
  140.       }
  141.       for (i = 0 ; i < 4 ; i++)
  142. {
  143.       P0 = LED ;
  144.       Delay10ms(5);
  145.       LED= LED >> 1;
  146.       LED = LED | 0x80;
  147.       }
  148.       for (i = 0 ; i < 4 ; i++)
  149. {
  150.       P0 = LED ;
  151.       Delay10ms(5);
  152.       LED= LED << 1;
  153.       LED = LED | 0x80;
  154.       }
  155.       for (i = 0 ; i < 3 ; i++)
  156. {
  157.       P0 = LED ;
  158.       Delay10ms(5);
  159.       LED= LED >> 1;
  160.       LED = LED | 0x80;
  161.       }
  162.       for (i = 0 ; i < 3 ; i++)
  163. {
  164.       P0 = LED ;
  165.       Delay10ms(5);
  166.       LED= LED << 1;
  167.       LED = LED | 0x80;
  168.       }
  169.       for (i = 0 ; i < 2 ; i++)
  170. {
  171.       P0 = LED ;
  172.       Delay10ms(5);
  173.       LED= LED >> 1;
  174.       LED = LED | 0x80;
  175.       }
  176.       for (i = 0 ; i < 2 ; i++)
  177. {
  178.       P0 = LED ;
  179.       Delay10ms(5);
  180.       LED= LED << 1;
  181.       LED = LED | 0x80;
  182.       }
  183.       for (i = 0 ; i < 1 ; i++)
  184. {
  185.       P0 = LED ;
  186.       Delay10ms(5);
  187.       LED= LED >> 1;
  188.       LED = LED | 0x80;
  189.       }
  190.       for (i = 0 ; i < 1 ; i++)
  191. {
  192.       P0 = LED ;
  193.       Delay10ms(5);
  194.       LED= LED << 1;
  195.       LED = LED | 0x80;
  196.       }
  197.       for (i = 0 ; i < 7 ; i++)
  198. {
  199.       P0 = LED ;
  200.       Delay10ms(5);
  201.       LED= LED >> 1;
  202.       LED = LED | 0x80;
  203.       }
  204.       }
  205.       }
  206.       
  207.    
  208. void Delay10ms(unsigned int c)
  209. {
  210.     unsigned char a, b;

  211.      for (;c>0;c--)
  212. {
  213.         for (b=38;b>0;b--)
  214. {
  215.             for (a=130;a>0;a--);
  216.         }
  217.         }      
  218.         }
復(fù)制代碼



作者: 二九九    時間: 2015-10-2 17:00
本帖最后由 二九九 于 2015-10-3 14:30 編輯
騰飛的龍 發(fā)表于 2015-10-2 16:35
#include
//#include"intrins.h"這句可以不用,因為你沒用到包含_nop_();和左右移動函數(shù)
#define uchar u ...

謝謝,調(diào)通了。這個還能精簡嗎?

  1. #include"reg51.h"
  2. void Delay10ms(unsigned int c);
  3. unsigned char LED;
  4. void main ()
  5. {    unsigned char i;
  6.      LED = 0xFF ;
  7.      while(1)
  8. {      
  9.       for (i = 0 ; i < 7 ; i++)
  10. {
  11.       P0 = LED ;
  12.       Delay10ms(5);
  13.       LED= LED >> 1;
  14.       LED = LED | 0x01;
  15.       }   
  16.       for (i = 0 ; i < 6 ; i++)
  17. {
  18.       P0 = LED ;
  19.       Delay10ms(5);
  20.       LED= LED << 1;
  21.       LED = LED | 0x01;
  22.       }
  23.       for (i = 0 ; i < 6 ; i++)
  24. {
  25.       P0 = LED ;
  26.       Delay10ms(5);
  27.       LED= LED >> 1;
  28.       LED = LED | 0x01;
  29.       }
  30.       for (i = 0 ; i < 5 ; i++)
  31. {
  32.       P0 = LED ;
  33.       Delay10ms(5);
  34.       LED= LED << 1;
  35.       LED = LED | 0x01;
  36.       }
  37.       for (i = 0 ; i < 5 ; i++)
  38. {
  39.       P0 = LED ;
  40.       Delay10ms(10);
  41.       LED= LED >> 1;
  42.       LED = LED | 0x01;
  43.       }
  44.       for (i = 0 ; i < 4 ; i++)
  45. {
  46.       P0 = LED ;
  47.       Delay10ms(5);
  48.       LED= LED << 1;
  49.       LED = LED | 0x01;
  50.       }
  51.       for (i = 0 ; i < 4 ; i++)
  52. {
  53.       P0 = LED ;
  54.       Delay10ms(5);
  55.       LED= LED >> 1;
  56.       LED = LED | 0x01;
  57.       }
  58.       for (i = 0 ; i < 3 ; i++)
  59. {
  60.       P0 = LED ;
  61.       Delay10ms(5);
  62.       LED= LED << 1;
  63.       LED = LED | 0x01;
  64.       }
  65.       for (i = 0 ; i < 3 ; i++)
  66. {
  67.       P0 = LED ;
  68.       Delay10ms(10);
  69.       LED= LED >> 1;
  70.       LED = LED | 0x01;
  71.       }
  72.       for (i = 0 ; i < 2 ; i++)
  73. {
  74.       P0 = LED ;
  75.       Delay10ms(5);
  76.       LED= LED << 1;
  77.       LED = LED | 0x01;
  78.       }
  79.       for (i = 0 ; i < 2 ; i++)
  80. {
  81.       P0 = LED ;
  82.       Delay10ms(5);
  83.       LED= LED >> 1;
  84.       LED = LED | 0x01;
  85.       }
  86.       for (i = 0 ; i < 1 ; i++)
  87. {
  88.       P0 = LED ;
  89.       Delay10ms(5);
  90.       LED= LED << 1;
  91.       LED = LED | 0x01;
  92.       }
  93.       for (i = 0 ; i < 1 ; i++)

  94. {
  95.       P0 = LED ;
  96.       Delay10ms(5);
  97.       LED= LED >> 1;
  98.       LED = LED | 0x00;
  99.       }
  100.       for (i = 0 ; i < 7 ; i++)
  101. {     P0 = LED ;
  102.       Delay10ms(5);
  103.       LED= LED << 1;
  104.       LED = LED | 0x01;
  105.       }
  106.       for (i = 0 ; i < 7 ; i++)
  107. {
  108.       P0 = LED ;
  109.       Delay10ms(5);
  110.       LED= LED << 1;
  111.       LED = LED | 0x80;
  112.       }
  113.       for (i = 0 ; i < 6 ; i++)
  114. {
  115.       P0 = LED ;
  116.       Delay10ms(5);
  117.       LED= LED >> 1;
  118.       LED = LED | 0x80;
  119.       }
  120.       for (i = 0 ; i < 6 ; i++)
  121. {
  122.       P0 = LED ;
  123.       Delay10ms(5);
  124.       LED= LED << 1;
  125.       LED = LED | 0x80;
  126.       }
  127.       for (i = 0 ; i < 5 ; i++)
  128. {
  129.       P0 = LED ;
  130.       Delay10ms(5);
  131.       LED= LED >> 1;
  132.       LED = LED | 0x80;
  133.       }
  134.       for (i = 0 ; i < 5 ; i++)
  135. {
  136.       P0 = LED ;
  137.       Delay10ms(5);
  138.       LED= LED << 1;
  139.       LED = LED | 0x80;
  140.       }
  141.       for (i = 0 ; i < 4 ; i++)
  142. {
  143.       P0 = LED ;
  144.       Delay10ms(5);
  145.       LED= LED >> 1;
  146.       LED = LED | 0x80;
  147.       }
  148.       for (i = 0 ; i < 4 ; i++)
  149. {
  150.       P0 = LED ;
  151.       Delay10ms(5);
  152.       LED= LED << 1;
  153.       LED = LED | 0x80;
  154.       }
  155.       for (i = 0 ; i < 3 ; i++)
  156. {
  157.       P0 = LED ;
  158.       Delay10ms(5);
  159.       LED= LED >> 1;
  160.       LED = LED | 0x80;
  161.       }
  162.       for (i = 0 ; i < 3 ; i++)
  163. {
  164.       P0 = LED ;
  165.       Delay10ms(5);
  166.       LED= LED << 1;
  167.       LED = LED | 0x80;
  168.       }
  169.       for (i = 0 ; i < 2 ; i++)
  170. {
  171.       P0 = LED ;
  172.       Delay10ms(5);
  173.       LED= LED >> 1;
  174.       LED = LED | 0x80;
  175.       }
  176.       for (i = 0 ; i < 2 ; i++)
  177. {
  178.       P0 = LED ;
  179.       Delay10ms(5);
  180.       LED= LED << 1;
  181.       LED = LED | 0x80;
  182.       }
  183.       for (i = 0 ; i < 1 ; i++)
  184. {
  185.       P0 = LED ;
  186.       Delay10ms(5);
  187.       LED= LED >> 1;
  188.       LED = LED | 0x80;
  189.       }
  190.       for (i = 0 ; i < 1 ; i++)
  191. {
  192.       P0 = LED ;
  193.       Delay10ms(5);
  194.       LED= LED << 1;
  195.       LED = LED | 0x80;
  196.       }
  197.       for (i = 0 ; i < 7 ; i++)
  198. {
  199.       P0 = LED ;
  200.       Delay10ms(5);
  201.       LED= LED >> 1;
  202.       LED = LED | 0x80;
  203.       }
  204.       }
  205.       }
  206.       
  207.    
  208. void Delay10ms(unsigned int c)
  209. {
  210.     unsigned char a, b;

  211.      for (;c>0;c--)
  212. {
  213.         for (b=38;b>0;b--)
  214. {
  215.             for (a=130;a>0;a--);
  216.         }
  217.         }      
  218.         }
復(fù)制代碼



作者: 騰飛的龍    時間: 2015-10-2 19:01
做花樣流水燈可以上網(wǎng)找找很多的。多學(xué)多練
作者: 二九九    時間: 2015-10-2 19:31
騰飛的龍 發(fā)表于 2015-10-2 19:01
做花樣流水燈可以上網(wǎng)找找很多的。多學(xué)多練

多多指教,這是我第一個實驗。
作者: caisanjiang    時間: 2015-10-2 20:35
for語句后面有個分號怎么執(zhí)行下面的程序
作者: 風(fēng)平浪靜    時間: 2015-10-3 11:20
caisanjiang 發(fā)表于 2015-10-2 20:35
for語句后面有個分號怎么執(zhí)行下面的程序

我就說嘛,怎么沒人注意到這么明顯的錯誤,一眼就看到了
作者: aiwang51    時間: 2015-10-6 12:14
延時函數(shù)在哪?
作者: 5002281    時間: 2015-10-7 09:39
這個沒得延時的函數(shù)
作者: woaiwm    時間: 2015-10-7 10:58
你賦值是0x01,也就是0000 0001,然后你右移干什么?右移肯定只亮一個燈,然后再熄滅。你改成左移試試




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1