找回密码
 立即注册
查看: 46|回复: 5

使用MDU16库中的FCASTL出现符号丢失 | 好像没问题了

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2026-07-01 14:52:15

1

主题

4

回帖

15

积分

新手上路

积分
15
发表于 5 天前 | 显示全部楼层 |阅读模式
截图202606301416522255.jpg
$NOMOD51

NAME     FCASTL

/**********************************************************************************************
* float R4R5R6R7  fcastl(long R4R5R6R7);  //低在先!!!
* result   = value1            // long-->float
* R4R5R6R7 = R4R5R6R7
*  32位 long-->32位 float  

* float R4R5R6R7  fcastl(int R4R5);                                          !
* result   = value1            // int-->float
* R6R7 = R4R5R6R7
*  16位 int-->32位 float  

* float R4R5R6R7  fcastl(char R4);
* result   = value1            // char-->float
* R7 = R4R5R6R7
*  8位 char-->32位 float  

*  用   途  :STC8系列MCU
*  作   者  :许意义
*  版   本  :2.00
*  日   期  :2022-12-12  

**********************************************************************************************/

LD_MD                    MACRO      BYTE_X, INC_DPTR
                        MOV      A,BYTE_X
                        MOVX     @DPTR,A
                IF  INC_DPTR
                        INC      DPTR
                ENDIF
                                 ENDM  

ST_MD                    MACRO      BYTE_X, INC_DPTR
                        MOVX     A,@DPTR
                        MOV      BYTE_X,A
                IF  INC_DPTR
                        INC      DPTR
                ENDIF
                                 ENDM  

WAIT                    MACRO
                        MOV      A,#0x01
                        MOVX     @DPTR,A
                        MOVX     A,@DPTR
                        JB       ACC.0,$-1
                                 ENDM  

//NOMOD51 SET (SMALL) DEBUG EP
//SET (SMALL) DEBUG EP
; 特殊功能寄存器和位
P_SW2        DATA        0BAH                   ; Bit7: EAXFR
ACC                DATA    0E0H
B                DATA    0F0H
PSW                DATA    0D0H
SP                DATA    81H
DPL                DATA    82H
DPH                DATA    83H
IE                DATA    0A8H
OV          BIT           0D0H.2
P                BIT           0D0H.0
F0                BIT          0D0H.5
F1                BIT           0D0H.1
RS1          BIT           0D0H.4
RS0          BIT           0D0H.3
AC          BIT           0D0H.6
CY          BIT           0D0H.7
EA          BIT           0A8H.7
; MODE[2:0]= 1, 右移(clock:3-18);  MODE[2:0]= 2, 左移(clock:3-18);  MODE[2:0]= 3, 数据规格化(clock:3-20)  
; MODE[2:0]= 4, 16位乘法(clock:10);  MODE[2:0]= 5, 16位除法(clock:9);  MODE[2:0]= 6, 32位/16位(clock:17)  
ARCON   DATA        0FCF6H                   ; Bit[7:5]: MODE[2:0],     Bit[4:0]: SC[4:0]
OPCON        DATA        0FCF7H                   ; Bit6: MDOV,  Bit1: RST,  Bit0: ENOP
MD3     DATA        0FCF0H
MD2                DATA        0FCF1H
MD1     DATA        0FCF2H
MD0                DATA        0FCF3H
MD5     DATA        0FCF4H
MD4                DATA        0FCF5H


?PR?_FCASTL?FCASTL SEGMENT CODE   
EXTRN    CODE (?C?LNEG)
PUBLIC ?C?FCASTL
PUBLIC ?C?FCASTI
PUBLIC ?C?FCASTC

RSEG  ?PR?_FCASTL?FCASTL

?C?FCASTL:
                    MOV      B, #0x20+0x7E       // long-->float
                    SJMP     FCASTC_002_
?C?FCASTI:
                    MOV      B, #0x10+0x7E        // int-->float
                SJMP     FCASTC_001_
?C?FCASTC:
                    MOV      B, #0x08+0x7E        // char-->float                                
                    MOV      R5, #0x00        
FCASTC_001_:                                 
                    MOV      R6, #0x00
                MOV      R7, #0x00
FCASTC_002_:         
                    RLC      A
                MOV      F0, C
                JNB      F0, FCASTC_003_
                LCALL    ?C?LNEG
FCASTC_003_:
                        PUSH         IE
                        CLR                 EA
                        PUSH     P_SW2
                        ORL      P_SW2,#0x80
                        MOV      DPTR, #MD3                           
                        LD_MD    R4, 1
                        LD_MD    R5, 1
                        LD_MD    R6, 1
                        LD_MD    R7, 0
                         MOV      DPTR, #ARCON
                        LD_MD         #0x60, +1                           // 32位规格化左移(clock:3-20)
                        WAIT
                         MOV      DPTR, #ARCON
                        MOVX     A, @DPTR
                        ANL                 A, #0x1F
                        XCH          A, B
                        CLR                 C
                           SUBB         A, B                                  // 指数 --> R4
                         MOV      C, F0                                   
                         RRC      A
                        MOV      R4, A         
                         MOV      DPTR, #MD3                          // 小数 --> R5R6R7
                        MOVX     A, @DPTR
                         MOV      ACC.7, C
                        MOV      R5, A
                        INC      DPTR
                         ST_MD    R6,  +1
                         ST_MD    R7,  0
                        POP      P_SW2
                        POP                 IE
                        RET

                        END

这是官方给的使用MDU16加速的整数转单精度程序,在主函数和中断同时使用这个程序会导致输出结果符号丢失。

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2026-07-01 14:52:15

1

主题

4

回帖

15

积分

新手上路

积分
15
发表于 5 天前 | 显示全部楼层
这里看到符号保存在中断保护之前
截图202606301420297499.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2026-07-01 14:52:15

1

主题

4

回帖

15

积分

新手上路

积分
15
发表于 5 天前 | 显示全部楼层
浮点转整数好像也有一样的问题
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:299
  • 最近打卡:2026-07-04 00:01:55
已绑定手机

66

主题

808

回帖

3037

积分

论坛元老

DIY玩家

积分
3037
发表于 5 天前 | 显示全部楼层
如果仅简单应用
变量符号可否分开保存
永怀这学徒心
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:738
  • 最近打卡:2026-07-04 20:08:40
已绑定手机
已实名认证

138

主题

3676

回帖

9445

积分

版主

积分
9445
发表于 5 天前 | 显示全部楼层
请从此处下载官方LIB库

深圳国芯人工智能有限公司-库函数
截图202606301821276298.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2026-07-01 14:52:15

1

主题

4

回帖

15

积分

新手上路

积分
15
发表于 4 天前 | 显示全部楼层
王*** 发表于 2026-6-30 18:21
请从此处下载官方LIB库

深圳国芯人工智能有限公司-库函数

原来还有最新版的,好像是没问题了
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-7-5 14:04 , Processed in 0.076700 second(s), 66 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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