📄 display.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 + -