标题:
MAIN.C(17): 错误 C129: missing ';' before 'code'
[打印本页]
作者:
bxyyhan
时间:
2015-12-26 20:30
标题:
MAIN.C(17): 错误 C129: missing ';' before 'code'
以下程序出现 MAIN.C(17): 错误 C129: missing ';' before 'code',哪位帮我看一下这是什么问题导致
#include <common.h>
#include <rtx51tny.h>
#include <reg51.h>
#include <intrins.h>
#define KEY_OFF 0x00
#define KEY_ON 0x01
#define SYS_IDLE 0x00
#define SYS_RUNNING 0x01
#define SYS_PAUSE 0x02
#define SYS_TIMEOUT 0x03
#define SYS_ERROR 0x80
#define EXT_BEEPER_MAX 0x7f
uint8 code seg7 code(10) = ////这里报错。
{ 0xc0, 0xf9, 0xa4, 0xb0, 0x99,
0x92, 0x82, 0xf8, 0x80, 0x90};
sbit ext_beeper = P1^2;
sbit ext_key_dec = P1^3;
sbit ext_key_one = P1^4;
sbit ext_key_start = P1^5;
sbit ext_led_min = P1^6;
sbit ext_led_sec = P1^7;
#define ext_latch_data P2
sbit ext_latch_oe = P3^7;
sbit ext_latch_le_dec = P1^1;
sbit ext_latch_le_one = P1^0;
byte sys_status = SYS_IDLE;
byte sys_set_time = 0; // 0-99 min.
byte sys_min = 1; // real minutes
byte sys_sec = 0; // real sec
byte sys_dirty = true; // dirty flag
uint8 ext_beep_count = EXT_BEEPER_MAX;
void init(void) _task_ 0{
P1 = 0xff;
ext_led_min = 1;
ext_led_sec = 0;
ext_latch_data = 0x00;
ext_latch_oe = 0;
ext_latch_le_dec = 1;
ext_latch_le_one = 1;
sys_set_time = 1;
sys_min = sys_set_time;
sys_sec = 0;
os_create_task(1);
os_create_task(3);
os_create_task(5);
sys_dirty = true;
while(1);
}
void ext_seg7_show(byte dec, byte one){
ext_latch_data = ~seg7_code[(dec < 0) ? 0 : dec];
ext_latch_le_dec = 1;
ext_latch_le_dec = 0;
ext_latch_data = ~seg7_code[(one < 0) ? 0 : one];
ext_latch_le_one = 1;
ext_latch_le_one = 0;
}
// scan keypad
// 50 fps @ 10ms
void keypad(void) _task_ 1{
while(1){
if(!ext_key_dec){
while(!ext_key_dec);
if(sys_status == SYS_IDLE){
if(sys_set_time < 90){
sys_set_time += 10;
}else{
sys_set_time %= 10;
if(sys_set_time == 0)
sys_set_time = 1;
}
sys_min = sys_set_time;
sys_sec = 0;
}
if(sys_status == SYS_TIMEOUT){
sys_status = SYS_IDLE;
ext_beep_count = EXT_BEEPER_MAX;
sys_min = sys_set_time;
sys_sec = 0;
ext_latch_oe = 0;
}
}
if(!ext_key_one){
if(sys_status == SYS_IDLE){
while(!ext_key_one);
if(sys_set_time % 10 < 9){
sys_set_time++;
}else{
if(sys_set_time > 10)
sys_set_time -= 9;
else
sys_set_time -= 8; // left 1
}
sys_min = sys_set_time;
sys_sec = 0;
}
if(sys_status == SYS_TIMEOUT){
sys_status = SYS_IDLE;
ext_beep_count = EXT_BEEPER_MAX;
sys_min = sys_set_time;
sys_sec = 0;
ext_latch_oe = 0;
}
}
if(!ext_key_start){
while(!ext_key_start);
if(sys_status == SYS_IDLE){
sys_status = SYS_RUNNING;
}else{
sys_status = SYS_IDLE;
ext_beep_count = EXT_BEEPER_MAX;
sys_min = sys_set_time;
sys_sec = 0;
ext_latch_oe = 0;
}
}
sys_dirty = true;
// TRANSFERED FROM task 2, for performance
if(sys_dirty){
if(sys_min > 0){
ext_led_min = 1;
ext_led_sec = 0;
ext_seg7_show(sys_min / 10, sys_min % 10);
}else{
ext_led_min = 0;
ext_led_sec = 1;
ext_seg7_show(sys_sec / 10, sys_sec % 10);
}
sys_dirty = false;
}
// repeat @ 50 fps
os_wait(K_IVL, 2, 0);
}
}
void display(void) _task_ 2{
while(1){
if(sys_dirty){
if(sys_min > 0){
ext_led_min = 1;
ext_led_sec = 0;
ext_seg7_show(sys_min / 10, sys_min % 10);
}else{
ext_led_min = 0;
ext_led_sec = 1;
ext_seg7_show(sys_sec / 10, sys_sec % 10);
}
sys_dirty = false;
}
os_wait(K_IVL, 3, 0);
}
}
*/
// Turn ON/OFF the beeper --done
// 2 fps @ 500ms
void beep(void) _task_ 3{
while(1){
if(sys_status == SYS_TIMEOUT){
if(ext_beep_count){
ext_beep_count = EXT_BEEPER_MAX;
while(ext_beep_count--)
ext_beeper = ~ext_beeper;
}else{
ext_beeper = 1;
ext_beep_count = EXT_BEEPER_MAX;
sys_status = SYS_IDLE;
sys_min = sys_set_time;
sys_sec = 0;
sys_dirty = true;
}
}else{
ext_beeper = 1;
}
// TRANSFERED FROM task 4
if(sys_status == SYS_IDLE){
// not blink
//ext_beeper = 1;
}else{
// blink when RUNNING or TIMEOUT
if(sys_min > 0)
ext_led_min = ~ext_led_min;
else
ext_led_sec = ~ext_led_sec;
}
// blink screen
if(sys_status == SYS_TIMEOUT){
ext_latch_oe = ~ext_latch_oe;
}
// repeat @ 2 fps
os_wait(K_IVL, 30, 0);
}
}
void blink(void) _task_ 4{
while(1){
if(sys_status == SYS_IDLE){
// not blink
}else{
// blink when RUNNING or TIMEOUT
if(sys_min > 0)
ext_led_min = ~ext_led_min;
else
ext_led_sec = ~ext_led_sec;
}
// blink screen
if(sys_status == SYS_TIMEOUT){
ext_latch_oe = ~ext_latch_oe;
}
// repeat @ 2 fps
os_wait(K_IVL, 30, 0);
}
}
*/
// timer --done
// 1 fps @ 1000ms
void timer(void) _task_ 5{
while(1){
if(sys_status == SYS_RUNNING){
if(sys_sec > 0){
sys_sec--;
}else{
if(sys_min > 0){
sys_min--;
sys_sec = 59;
}else{
// timeout
sys_status = SYS_TIMEOUT;
sys_dirty = true;
}
}
}
// repeat @ 1 fps
os_wait(K_IVL, 50, 0);
}
}
作者:
admin
时间:
2015-12-26 20:54
应该是,语句最后掉了分号,楼主的程序有几个头文件我这边没有无法在本地进行实验了
作者:
bxyyhan
时间:
2015-12-26 21:00
一开始我也分析是缺少分号,加上之后仍然出错,实在是不知道错哪了。
作者:
admin
时间:
2015-12-26 21:06
要不你把全部的工程文件打包传上来
作者:
bxyyhan
时间:
2015-12-26 21:11
好的,谢谢了。
源码.zip
2015-12-26 21:11 上传
点击文件名下载附件
210.63 KB, 下载次数: 11
作者:
engcyh
时间:
2015-12-26 21:59
main函数都没有?
作者:
bxyyhan
时间:
2015-12-27 21:12
那条语句是定义0-9显示码,我改成uchar code table[]=仍然报错,提升是code附近缺分号,可是明明不缺,实在不明白了。
作者:
雪玉寐影
时间:
2015-12-27 21:32
看看上面2行空行,有没有不显示的非法字符
作者:
王朗的诱惑
时间:
2015-12-30 20:06
找不到common.h,不过应该是uchar uint8 这些定义的时候出问题了。我改了就没错了。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1