下面的程式,動作正常,只是覺得if太多,不知道有辦法縮短嗎?(不影響動作)
另外,想知道.......這樣的語法有沒有什麼暇吃或不妥的地方法?
還有還有......就是.....
for(i=0;i<3;i++)
x=abc[i];
請問i++是一次做完?還是進入for只做一次,0~3要進入三次
會問這問題原因是.....下面程式i我用計數代48*i-1
我想用for取代.....但是覺得那個i++如果組合語言角度想的話
應該是........"進入for時才作一次i++"
所以用for改寫,好像會讓程式動作錯誤
=================================================================
#define SDI P1_0
#define DCLK P1_1
#define LE P1_2
#define GCLK P1_3
#include "AT89C51.h"
unsigned int code SDI_LUT [] = {1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1};
main()
{
unsigned int SDI_cnt,LE_cnt = 0;
unsigned int i = 1;
while(1)
{
DCLK = 0;
SDI = SDI_LUT[SDI_cnt];
DCLK = 1;
if (LE_cnt == 48*i-1||LE_cnt == 766)
{
LE = 1;
}
else
{
LE = 0;
}
if (SDI_cnt < 47)
{
SDI_cnt++;
}
else
{
SDI_cnt = 0;
if (i < 16)
{
i++;
}
else
{
i = 1;
}
}
if (LE_cnt < 767)
{
LE_cnt++;
}
else
{
LE_cnt = 0;
}
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.58.1.203