找回密码
 注册会员
img_loading
智能检测中
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

51单片机 错误 error C141: syntax error near '=

[复制链接]
admin 发表于 2012-9-2 04:53:25 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
51单片机 错误 error C141: syntax error near '=
#include<stdio.h>


#include<absacc.h>

#include<REG51.h>

extern void start_timer(void);

bit Timerout=0;

bit keypress;

unsigned char scankey;

#define KR0 P1^0

#define KR1 P1^1

#define KR2 P1^2

#define KR3 P1^3

#define KC0 P1^4

#define KC1 P1^5

#define KC2 P1^6

#define KC3 P1^7

#define KBD_PORT P1

#define FSM_INIT 0x00

#define FSM_WAIT_PRESS 0x01

#define FSM_VEREFY1 0x02

#define FSM_VEREFY2 0x03

#define FSM_WAIT_RELESE 0x04

#define FSM_VAL_VAILD 0x80

main()

{

unsigned char fsm_key=0;

unsigned char kbd_col;

unsigned char kbd_row;

unsigned char kbd_val;

IE=0x40;

start_timer();

EA=1;

while(1)

{

if(Timerout)

{

Timerout=1;

switch(fsm_key)

{

case FSM_INIT:

KR0 = 1;

KR1 = 1;

KR2 = 1;

KR3 = 1;

fsm_key=FSM_WAIT_PRESS;

break;

case FSM_WAIT_PRESS:

if(keypress)

{

kbd_val=0;

if(KC0)

{

KC0=1;

kbd_col=1;





}

if(KC1)

{

KC1=1;

kbd_col=2;





}

if(KC2)

{

KC2=1;

kbd_col=3;





}

if(KC3)

{

KC3=1;

kbd_col=4;





}



}

else

{

fsm_key=FSM_INIT;

}

kbd_row=KBD_PORT;

kbd_row>>=4;

if(kbd_row)

{

if(KR0)

{

kbd_row=0;

fsm_key=FSM_VEREFY1;

}

if(KR1)

{

kbd_row=4;

fsm_key=FSM_VEREFY1;

}

if(KR2)

{

kbd_row=8;

fsm_key=FSM_VEREFY1;

}

if(KR3)

{

kbd_row=12;

fsm_key=FSM_VEREFY1;

}

}

else

{

fsm_key=FSM_INIT;

}

break;

case FSM_VEREFY1:

switch(kbd_row)

{

case 0:

if(KR0)

fsm_key=FSM_VEREFY2;

else

fsm_key=FSM_INIT;

break;

case 4:

if(KR1)

fsm_key=FSM_VEREFY2;

else

fsm_key=FSM_INIT;

break;

case 8:

if(KR2)

fsm_key=FSM_VEREFY2;

else

fsm_key=FSM_INIT;

break;

case 12:

if(KR3)

fsm_key=FSM_VEREFY2;

else

fsm_key=FSM_INIT;

break;

default:

fsm_key=FSM_INIT;

break;







}

case FSM_VEREFY2:

switch(kbd_row)

{

case 0:

if(KR0)

kbd_val=(kbd_row+kbd_col)|FSM_VAL_VAILD;

break;

case 4:

if(KR1)

kbd_val=(kbd_row+kbd_col)|FSM_VAL_VAILD;

break;

case 8:

if(KR2)

kbd_val=(kbd_row+kbd_col)|FSM_VAL_VAILD;

break;

case 12:

if(KR3)

kbd_val=(kbd_row+kbd_col)|FSM_VAL_VAILD;

break;

default:

break;

}

KR0 = 1;

KR1 = 1;

KR2 = 1;

KR3 = 1;

fsm_key=FSM_WAIT_RELESE;

break;

case FSM_WAIT_RELESE:

if(!keypress)

{

fsm_key=FSM_INIT;

}

break;

default:

fsm_key=FSM_INIT;

break;

}





}



}



}

void start_timer() interrupt 5

{

TF1=0;

Timerout=1;

scankey=KBD_PORT;

if(scankey&0x0f)

{

keypress=1;

}

else

{

keypress=0;

}

}
您需要登录后才可以回帖 登录 | 注册会员

*滑块验证:
img_loading
智能检测中
本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2025-7-26 06:54 , Processed in 0.049465 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表