⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guivalf.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guivalf.o --depend=.\Obj\guivalf.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\Core\GUIValf.c]
                          THUMB

                          AREA ||i.GUI_DispFloat||, CODE, READONLY, ALIGN=1

                  GUI_DispFloat PROC
;;;74     */
;;;75     void GUI_DispFloat(float f, char Len) {
000000  b570              PUSH     {r4-r6,lr}
000002  4604              MOV      r4,r0
000004  460d              MOV      r5,r1
;;;76       int Decs;
;;;77       Decs =  Len - GUI_Long2Len((long)f)-1;
000006  f7fffffe          BL       __aeabi_f2iz
00000a  f7fffffe          BL       GUI_Long2Len
00000e  1a28              SUBS     r0,r5,r0
000010  1e40              SUBS     r0,r0,#1
;;;78       if ((f < 0) && (f > -1)) { /* If value < 0 and > -1 (e.g. -0.123) decrement Decs */
000012  f10441ff          ADD      r1,r4,#0x7f800000
000016  f1b15f7c          CMP      r1,#0x3f000000
00001a  d200              BCS      |L1.30|
;;;79         Decs--;
00001c  1e40              SUBS     r0,r0,#1
                  |L1.30|
;;;80       }
;;;81       if (Decs<0)
00001e  2800              CMP      r0,#0
000020  da00              BGE      |L1.36|
;;;82         Decs =0;
000022  2000              MOVS     r0,#0
                  |L1.36|
;;;83       _DispFloatFix(f, Len, (char)Decs, 0);
000024  b2c2              UXTB     r2,r0
000026  4629              MOV      r1,r5
000028  4620              MOV      r0,r4
00002a  e8bd4070          POP      {r4-r6,lr}
00002e  2300              MOVS     r3,#0
000030  f7ffbffe          B.W      _DispFloatFix
;;;84     }
;;;85     
                          ENDP


                          AREA ||i.GUI_DispFloatFix||, CODE, READONLY, ALIGN=1

                  GUI_DispFloatFix PROC
;;;53     */
;;;54     void GUI_DispFloatFix(float f, char Len, char Decs) {
000000  2300              MOVS     r3,#0
;;;55       _DispFloatFix(f, Len, Decs, 0);
000002  f7ffbffe          B.W      _DispFloatFix
;;;56     }
;;;57     
                          ENDP


                          AREA ||i.GUI_DispFloatMin||, CODE, READONLY, ALIGN=1

                  GUI_DispFloatMin PROC
;;;61     */
;;;62     void GUI_DispFloatMin(float f, char Fract) {
000000  b570              PUSH     {r4-r6,lr}
000002  4605              MOV      r5,r0
000004  460c              MOV      r4,r1
;;;63       char Len;
;;;64       Len = GUI_Long2Len((long)f);
000006  f7fffffe          BL       __aeabi_f2iz
00000a  f7fffffe          BL       GUI_Long2Len
;;;65       if ((f < 0) && (f > -1)) { /* If value < 0 and > -1 (e.g. -0.123) increment length by 1 */
00000e  f10541ff          ADD      r1,r5,#0x7f800000
000012  b2c0              UXTB     r0,r0                 ;64
000014  f1b15f7c          CMP      r1,#0x3f000000
000018  d201              BCS      |L3.30|
;;;66         Len++;
00001a  1c40              ADDS     r0,r0,#1
00001c  b2c0              UXTB     r0,r0
                  |L3.30|
;;;67       }
;;;68       _DispFloatFix(f, (char)(Len + Fract + (Fract ? 1 : 0)), (char)Fract, 0);
00001e  1901              ADDS     r1,r0,r4
000020  b10c              CBZ      r4,|L3.38|
000022  2001              MOVS     r0,#1
000024  e000              B        |L3.40|
                  |L3.38|
000026  2000              MOVS     r0,#0
                  |L3.40|
000028  4408              ADD      r0,r0,r1
00002a  b2c1              UXTB     r1,r0
00002c  4622              MOV      r2,r4
00002e  4628              MOV      r0,r5
000030  e8bd4070          POP      {r4-r6,lr}
000034  2300              MOVS     r3,#0
000036  f7ffbffe          B.W      _DispFloatFix
;;;69     }
;;;70     
                          ENDP


                          AREA ||i.GUI_DispSFloatFix||, CODE, READONLY, ALIGN=1

                  GUI_DispSFloatFix PROC
;;;89     */
;;;90     void GUI_DispSFloatFix(float f, char Len, char Fract) {
000000  2301              MOVS     r3,#1
;;;91       _DispFloatFix (f, Len, Fract, 1);
000002  f7ffbffe          B.W      _DispFloatFix
;;;92     }
;;;93     
                          ENDP


                          AREA ||i.GUI_DispSFloatMin||, CODE, READONLY, ALIGN=1

                  GUI_DispSFloatMin PROC
;;;97     */
;;;98     void GUI_DispSFloatMin(float f, char Fract) {
000000  b570              PUSH     {r4-r6,lr}
000002  4604              MOV      r4,r0
000004  460d              MOV      r5,r1
;;;99       char Len;
;;;100      Len = GUI_Long2Len((long)f);
000006  f7fffffe          BL       __aeabi_f2iz
00000a  f7fffffe          BL       GUI_Long2Len
;;;101      if ((f < 0) && (f > -1)) { /* If value < 0 and > -1 (e.g. -0.123) increment length by 1 */
00000e  f10441ff          ADD      r1,r4,#0x7f800000
000012  b2c0              UXTB     r0,r0                 ;100
000014  f1b15f7c          CMP      r1,#0x3f000000
000018  d201              BCS      |L5.30|
;;;102        Len++;
00001a  1c40              ADDS     r0,r0,#1
00001c  b2c0              UXTB     r0,r0
                  |L5.30|
;;;103      }
;;;104      if (f>0) {
00001e  f5b40f00          CMP      r4,#0x800000
000022  db01              BLT      |L5.40|
;;;105        Len++;
000024  1c40              ADDS     r0,r0,#1
000026  b2c0              UXTB     r0,r0
                  |L5.40|
;;;106      }
;;;107      _DispFloatFix(f, (char)(Len + Fract + (Fract ? 1 : 0)), (char)Fract, 1);
000028  1941              ADDS     r1,r0,r5
00002a  b10d              CBZ      r5,|L5.48|
00002c  2001              MOVS     r0,#1
00002e  e000              B        |L5.50|
                  |L5.48|
000030  2000              MOVS     r0,#0
                  |L5.50|
000032  4408              ADD      r0,r0,r1
000034  b2c1              UXTB     r1,r0
000036  462a              MOV      r2,r5
000038  4620              MOV      r0,r4
00003a  e8bd4070          POP      {r4-r6,lr}
00003e  2301              MOVS     r3,#1
000040  f7ffbffe          B.W      _DispFloatFix
;;;108    }
;;;109    
                          ENDP


                          AREA ||i._DispFloatFix||, CODE, READONLY, ALIGN=2

                  _DispFloatFix PROC
;;;32     */
;;;33     static void _DispFloatFix(float f, char Len, char Decs, int DrawPlusSign) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4607              MOV      r7,r0
;;;34       f *= GUI_Pow10[(unsigned)Decs];
000006  4813              LDR      r0,|L6.84|
000008  460e              MOV      r6,r1                 ;33
00000a  4614              MOV      r4,r2                 ;33
00000c  461d              MOV      r5,r3                 ;33
00000e  f8500022          LDR      r0,[r0,r2,LSL #2]
000012  f7fffffe          BL       __aeabi_ui2f
000016  4639              MOV      r1,r7
000018  f7fffffe          BL       __aeabi_fmul
;;;35       f += 0.5;
00001c  f04f517c          MOV      r1,#0x3f000000
000020  f7fffffe          BL       __aeabi_fadd
;;;36       f = (float) floor (f);
000024  f7fffffe          BL       __aeabi_f2d
000028  f7fffffe          BL       floor
00002c  f7fffffe          BL       __aeabi_d2f
;;;37       if (DrawPlusSign) {
000030  b13d              CBZ      r5,|L6.66|
;;;38         GUI_DispSDecShift((long)f, Len, Decs);
000032  f7fffffe          BL       __aeabi_f2iz
000036  4622              MOV      r2,r4
000038  4631              MOV      r1,r6
00003a  e8bd41f0          POP      {r4-r8,lr}
00003e  f7ffbffe          B.W      GUI_DispSDecShift
                  |L6.66|
;;;39       } else {
;;;40         GUI_DispDecShift((long)f, Len, Decs);
000042  f7fffffe          BL       __aeabi_f2iz
000046  4622              MOV      r2,r4
000048  4631              MOV      r1,r6
00004a  e8bd41f0          POP      {r4-r8,lr}
00004e  f7ffbffe          B.W      GUI_DispDecShift
;;;41       }
;;;42     }
;;;43     
                          ENDP

000052  0000              DCW      0x0000
                  |L6.84|
                          DCD      GUI_Pow10

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -