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

📄 display.lis

📁 不可多得的atmel公司canbus通讯程序(at90can128)
💻 LIS
字号:
                        .module DISPLAY.C
                        .area text(rom, con, rel)
 0000                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\DISPLAY.C
                        .area lit(rom, con, rel)
 0000           _NUMBER_ROM::
 0000 3F06              .byte 63,6
 0002 5B4F              .byte 91,'O
 0004 666D              .byte 'f,'m
 0006 7D07              .byte 125,7
 0008 7F6F              .byte 127,'o
 000A                   .dbsym e NUMBER_ROM _NUMBER_ROM A[10:10]kc
                        .area text(rom, con, rel)
 0000                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\DISPLAY.C
 0000                   .dbfunc e Separate_Integer_Of_Bit _Separate_Integer_Of_Bit fV
 0000           ;              Q -> R10,R11
 0000           ;          Array -> R14,R15
 0000           ;            num -> R12,R13
                        .even
 0000           _Separate_Integer_Of_Bit::
 0000 0E940000          xcall push_xgset00FC
 0004 7901              movw R14,R18
 0006 6801              movw R12,R16
 0008                   .dbline -1
 0008                   .dbline 7
 0008           ; #include "AT90CAN128.H"
 0008           ; 
 0008           ; uint8 dis[2];
 0008           ; const uint8 NUMBER_ROM[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
 0008           ; 
 0008           ; void Separate_Integer_Of_Bit(int16 num,uint8 *Array)
 0008           ; {
 0008                   .dbline 8
 0008           ;       int8 *Q = Array;
 0008 5701              movw R10,R14
 000A                   .dbline 10
 000A           ; 
 000A           ;       num %= 100;
 000A 24E6              ldi R18,100
 000C 30E0              ldi R19,0
 000E 8601              movw R16,R12
 0010 0E940000          xcall mod16s
 0014 6801              movw R12,R16
 0016                   .dbline 11
 0016           ;       *Q++ = num / 10;
 0016 2AE0              ldi R18,10
 0018 30E0              ldi R19,0
 001A 0E940000          xcall div16s
 001E F501              movw R30,R10
 0020 0193              st Z+,R16
 0022 5F01              movw R10,R30
 0024                   .dbline 12
 0024           ;       *Q = num % 10;
 0024 2AE0              ldi R18,10
 0026 30E0              ldi R19,0
 0028 8601              movw R16,R12
 002A 0E940000          xcall mod16s
 002E F501              movw R30,R10
 0030 0083              std z+0,R16
 0032                   .dbline -2
 0032           L3:
 0032                   .dbline 0 ; func end
 0032 0C940000          xjmp pop_xgset00FC
 0036                   .dbsym r Q 10 pc
 0036                   .dbsym r Array 14 pc
 0036                   .dbsym r num 12 I
 0036                   .dbend
 0036                   .dbfunc e DISPLAY_Init _DISPLAY_Init fV
 0036           ;              i -> <dead>
 0036           ;          digit -> y+0
 0036           ;            num -> R10,R11
                        .even
 0036           _DISPLAY_Init::
 0036 AA92              st -y,R10
 0038 BA92              st -y,R11
 003A 5801              movw R10,R16
 003C 2297              sbiw R28,2
 003E                   .dbline -1
 003E                   .dbline 20
 003E           ; }
 003E           ; 
 003E           ; 
 003E           ; ///////////////////////////////////////////////////////////////////////////////////////////////
 003E           ; //1.dot=0 无小数点 2.dot=1 小数点在十位数 3.dot=2 小数点在百位数 4.dot=3 小数点在千位数
 003E           ; ///////////////////////////////////////////////////////////////////////////////////////////////
 003E           ; void DISPLAY_Init(int16 num)
 003E           ; {
 003E                   .dbline 24
 003E           ;       uint8 i;
 003E           ;       uint8 digit[2];
 003E           ; 
 003E           ;       Separate_Integer_Of_Bit(num,digit);
 003E 9E01              movw R18,R28
 0040 8501              movw R16,R10
 0042 DEDF              xcall _Separate_Integer_Of_Bit
 0044                   .dbline 25
 0044           ;       if (digit[0] > 0)
 0044 80E0              ldi R24,0
 0046 2880              ldd R2,y+0
 0048 8215              cp R24,R2
 004A 40F4              brsh L5
 004C           X0:
 004C                   .dbline 26
 004C           ;               digit[0] = NUMBER_ROM[digit[0]];
 004C 80E0              ldi R24,<_NUMBER_ROM
 004E 90E0              ldi R25,>_NUMBER_ROM
 0050 E22D              mov R30,R2
 0052 FF27              clr R31
 0054 E80F              add R30,R24
 0056 F91F              adc R31,R25
 0058 2690              elpm R2,Z
 005A 2882              std y+0,R2
 005C           L5:
 005C                   .dbline 27
 005C           ;       digit[1] = NUMBER_ROM[digit[1]];
 005C 80E0              ldi R24,<_NUMBER_ROM
 005E 90E0              ldi R25,>_NUMBER_ROM
 0060 E981              ldd R30,y+1
 0062 FF27              clr R31
 0064 E80F              add R30,R24
 0066 F91F              adc R31,R25
 0068 2690              elpm R2,Z
 006A 2982              std y+1,R2
 006C                   .dbline 28
 006C           ;       OS_ENTER_CRITICAL();
 006C F894              cli
 006E                   .dbline 29
 006E           ;       dis[0] = digit[0];
 006E 2880              ldd R2,y+0
 0070 20920000          sts _dis,R2
 0074                   .dbline 30
 0074           ;       dis[1] = digit[1];
 0074 2980              ldd R2,y+1
 0076 20920100          sts _dis+1,R2
 007A                   .dbline 31
 007A           ;       OS_EXIT_CRITICAL();
 007A 7894              sei
 007C                   .dbline -2
 007C           L4:
 007C                   .dbline 0 ; func end
 007C 2296              adiw R28,2
 007E B990              ld R11,y+
 0080 A990              ld R10,y+
 0082 0895              ret
 0084                   .dbsym l i 1 c
 0084                   .dbsym l digit 0 A[2:2]c
 0084                   .dbsym r num 10 I
 0084                   .dbend
 0084                   .dbfunc e DISPLAY_CODE _DISPLAY_CODE fc
 0084           ;            ptr -> R16
                        .even
 0084           _DISPLAY_CODE::
 0084                   .dbline -1
 0084                   .dbline 36
 0084           ; }
 0084           ; 
 0084           ; 
 0084           ; uint8 DISPLAY_CODE(uint8 ptr)
 0084           ; {
 0084                   .dbline 37
 0084           ;       return (dis[ptr]);
 0084 80E0              ldi R24,<_dis
 0086 90E0              ldi R25,>_dis
 0088 E02F              mov R30,R16
 008A FF27              clr R31
 008C E80F              add R30,R24
 008E F91F              adc R31,R25
 0090 0081              ldd R16,z+0
 0092                   .dbline -2
 0092           L11:
 0092                   .dbline 0 ; func end
 0092 0895              ret
 0094                   .dbsym r ptr 16 c
 0094                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\DISPLAY.C
 0000           _dis::
 0000                   .blkb 2
 0002                   .dbsym e dis _dis A[2:2]c
 0002           ; }

⌨️ 快捷键说明

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