以下程序出现 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);
}
}
|