Open perseverance51 opened 1 year ago
Thank you for the report. The code should work as __CODE
macro will be translated to code
in __CX51__
, which is defined in fw_reg_base.h
#elif defined __CX51__
...
#define __CODE code
#define __REENTRANT reentrant
I will test it in Keil C51 later.
The commit e2024f59fb70bef0d531be6a2b3c550f6a7a98e8 has fixed this issue.
在uart1_timer1_tx.c文件中原外部变量引入:
extern __CODE uint16_t ticks_ms; extern __CODE uint8_t ticks_us, clkdiv;
需要如下修改: `
if defined (SDCC) || defined (__SDCC)
extern CODE uint16_t ticks_ms; extern CODE uint8_t ticks_us; //clkdiv (include fw_reg_stc8h.h)
elif defined CX51
extern uint16_t code ticks_ms; extern uint8_t code ticks_us;
endif
……
UART1_TxHex(CLKDIV);//改成大写
在
fw_sys.c文件中调整如下:
if defined (SDCC) || defined (__SDCC)
CODE uint16_t ticks_ms = (CONF_FOSC / ((CONF_CLKDIV == 0)? 1 : __CONF_CLKDIV) / CLK_REF); CODE uint8_t ticks_us = (CONF_FOSC / ((CONF_CLKDIV == 0)? 1 : __CONF_CLKDIV) / CLK_REF / 1000);
elif defined CX51
uint16_t code ticks_ms = (CONF_FOSC / ((__CONF_CLKDIV == 0)? 1 : CONF_CLKDIV) / CLK_REF); uint8_t code ticks_us = (__CONF_FOSC / ((CONF_CLKDIV == 0)? 1 : __CONF_CLKDIV) / __CLK_REF / 1000);
endif
`