當前位置:編程學習大全網 - 編程軟體 - C51 無法通過編譯 MAIN.C(89): error C141: syntax error near ':'

C51 無法通過編譯 MAIN.C(89): error C141: syntax error near ':'

我直言不諱的說

妳這個 代碼 能調試通過 才鬼了

語法都不對

難道 單片機C語言中 case value 是在冒號之後?

//switch?模板

switch?(key)?{

case?0:

break;

default:

break;

}

除了switch case語句語法是錯誤的外,還有壹個變量打錯了。

//case?語法錯誤?

//s1nunm?變量與之前寫的?s1num?有差異

case?:7s1nunm?=?0;

而且妳寫這麽多 if 和 switch 邏輯亂的,都不知道妳要幹嘛

if switch?嵌套超過3個?說明妳這個代碼風格 很有問題。

幫妳改了下格式,如果妳的外部變量和函數定義沒問題應該沒有問題。

#include?"DS12887.h"

#include?"LCD1602display.h"

#include?<at89x52.h>

#define?uchar?unsigned?char

uchar?s1num?=?0;

void?keyscan()?{

uchar?test;

P3?=?0xff;

if?(P3?!=?0xff)?{

delayms(5);

if?(P3?!=?0xff)?{

test?=?P3;

while?(P3?!=?0xff)

switch?(test)?{

case?0x7f:

s1num++;

switch?(s1num)?{

case?1:

ds_write(0xb,?0x86);

LCDwrite_cmd(0xc0?+?11);

LCDwrite_cmd(0x0f);

break;

case?2:

LCDwrite_cmd(0xc0?+?8);

break;

case?3:

LCDwrite_cmd(0xc0?+?5);

break;

case?4:

LCDwrite_cmd(0x80?+?12);

case?5:

LCDwrite_cmd(0x80?+?9);

break;

case?6:

LCDwrite_cmd(0x80?+?6);

break;

case?7:

s1num?=?0;

LCDwrite_cmd(0x0c);

ds_write(0x0b,?0x06);

break;

}

break;

default:

break;

}

}

}

}

  • 上一篇:Windowsqt編程
  • 下一篇:王堯的研究領域
  • copyright 2024編程學習大全網