📄 salve.lis
字号:
00FA 2FE0 ldi R18,15
00FC 07E0 ldi R16,7
00FE 80DF xcall _SEND
0100 .dbline 79
0100 ; SEND(0x08,0x0f);
0100 2FE0 ldi R18,15
0102 08E0 ldi R16,8
0104 7DDF xcall _SEND
0106 .dbline 80
0106 ; }break;
0106 .dbline 80
0106 L18:
0106 .dbline -2
0106 L16:
0106 .dbline 0 ; func end
0106 B990 ld R11,y+
0108 A990 ld R10,y+
010A 0895 ret
010C .dbsym r part 10 c
010C .dbend
010C .dbfunc e SEG_INIT _SEG_INIT fV
.even
010C _SEG_INIT::
010C .dbline -1
010C .dbline 86
010C ; }
010C ; }
010C ;
010C ; //==============SEG初始化=============
010C ; void SEG_INIT(void)
010C ; {
010C .dbline 87
010C ; MAX7219_OUT_DDR|=(1<<MAX7219_CLK_PORT)|(1<<MAX7219_DIN_PORT)|(1<<MAX7219_LOAD_PORT);
010C 87B3 in R24,0x17
010E 8760 ori R24,7
0110 87BB out 0x17,R24
0112 .dbline 88
0112 ; MAX7219_OUT_PORT|=(1<<MAX7219_CLK_PORT)|(1<<MAX7219_DIN_PORT)|(1<<MAX7219_LOAD_PORT);
0112 88B3 in R24,0x18
0114 8760 ori R24,7
0116 88BB out 0x18,R24
0118 .dbline 89
0118 ; SEND(0x0c,0x01);
0118 21E0 ldi R18,1
011A 0CE0 ldi R16,12
011C 71DF xcall _SEND
011E .dbline 90
011E ; SEND(0x0b,0x07);
011E 27E0 ldi R18,7
0120 0BE0 ldi R16,11
0122 6EDF xcall _SEND
0124 .dbline 91
0124 ; SEND(0x0a,0x05);
0124 25E0 ldi R18,5
0126 0AE0 ldi R16,10
0128 6BDF xcall _SEND
012A .dbline 92
012A ; SEND(0x09,0xff);
012A 2FEF ldi R18,255
012C 09E0 ldi R16,9
012E 68DF xcall _SEND
0130 .dbline 93
0130 ; SEG_CLEAR(3);
0130 03E0 ldi R16,3
0132 A9DF xcall _SEG_CLEAR
0134 .dbline -2
0134 L22:
0134 .dbline 0 ; func end
0134 0895 ret
0136 .dbend
0136 .dbfunc e SEG_L _SEG_L fV
0136 ; i -> R12
0136 ; number -> R10,R11
.even
0136 _SEG_L::
0136 0E940000 xcall push_xgset003C
013A 5801 movw R10,R16
013C .dbline -1
013C .dbline 99
013C ; }
013C ;
013C ;
013C ; //=============SEG左四显示数字==============
013C ; void SEG_L(unsigned int number)
013C ; {
013C .dbline 100
013C ; unsigned char i=4;
013C 84E0 ldi R24,4
013E C82E mov R12,R24
0140 .dbline 101
0140 ; SEND(0x01,0x0f); //先清除左四位,左四位黑屏
0140 2FE0 ldi R18,15
0142 01E0 ldi R16,1
0144 5DDF xcall _SEND
0146 .dbline 102
0146 ; SEND(0x02,0x0f);
0146 2FE0 ldi R18,15
0148 02E0 ldi R16,2
014A 5ADF xcall _SEND
014C .dbline 103
014C ; SEND(0x03,0x0f);
014C 2FE0 ldi R18,15
014E 03E0 ldi R16,3
0150 57DF xcall _SEND
0152 .dbline 104
0152 ; SEND(0x04,0x0f);
0152 2FE0 ldi R18,15
0154 04E0 ldi R16,4
0156 54DF xcall _SEND
0158 .dbline 106
0158 ;
0158 ; if(number>9999)//要显示的数值超过4位,则显示4个H
0158 8FE0 ldi R24,9999
015A 97E2 ldi R25,39
015C 8A15 cp R24,R10
015E 9B05 cpc R25,R11
0160 68F4 brsh L24
0162 X6:
0162 .dbline 107
0162 ; {
0162 .dbline 108
0162 ; SEND(0x01,0x0c);
0162 2CE0 ldi R18,12
0164 01E0 ldi R16,1
0166 4CDF xcall _SEND
0168 .dbline 109
0168 ; SEND(0x02,0x0c);
0168 2CE0 ldi R18,12
016A 02E0 ldi R16,2
016C 49DF xcall _SEND
016E .dbline 110
016E ; SEND(0x03,0x0c);
016E 2CE0 ldi R18,12
0170 03E0 ldi R16,3
0172 46DF xcall _SEND
0174 .dbline 111
0174 ; SEND(0x04,0x0c);
0174 2CE0 ldi R18,12
0176 04E0 ldi R16,4
0178 43DF xcall _SEND
017A .dbline 112
017A ; }
017A 1CC0 xjmp L25
017C L24:
017C .dbline 114
017C ; else//小于四位可以显示
017C ; {
017C L26:
017C .dbline 121
017C ; /* for(i=4;i>0;i--)
017C ; {
017C ; SEND(i,number%10);
017C ; number=(number-number%10)/10;
017C ; } */
017C ; do
017C ; {
017C .dbline 122
017C ; SEND(i,number%10);
017C 2AE0 ldi R18,10
017E 30E0 ldi R19,0
0180 8501 movw R16,R10
0182 0E940000 xcall mod16u
0186 202F mov R18,R16
0188 0C2D mov R16,R12
018A 3ADF xcall _SEND
018C .dbline 123
018C ; number=(number-number%10)/10;
018C 2AE0 ldi R18,10
018E 30E0 ldi R19,0
0190 8501 movw R16,R10
0192 0E940000 xcall mod16u
0196 1801 movw R2,R16
0198 8501 movw R16,R10
019A 0219 sub R16,R2
019C 1309 sbc R17,R3
019E 2AE0 ldi R18,10
01A0 30E0 ldi R19,0
01A2 0E940000 xcall div16u
01A6 5801 movw R10,R16
01A8 .dbline 124
01A8 ; i--;
01A8 CA94 dec R12
01AA .dbline 125
01AA ; }while(number>=1);
01AA L27:
01AA .dbline 125
01AA C501 movw R24,R10
01AC 8130 cpi R24,1
01AE E0E0 ldi R30,0
01B0 9E07 cpc R25,R30
01B2 20F7 brsh L26
01B4 X7:
01B4 .dbline 126
01B4 ; }
01B4 L25:
01B4 .dbline -2
01B4 L23:
01B4 .dbline 0 ; func end
01B4 0C940000 xjmp pop_xgset003C
01B8 .dbsym r i 12 c
01B8 .dbsym r number 10 i
01B8 .dbend
01B8 .dbfunc e SEG_R _SEG_R fV
01B8 ; i -> R12
01B8 ; number -> R10,R11
.even
01B8 _SEG_R::
01B8 0E940000 xcall push_xgset003C
01BC 5801 movw R10,R16
01BE .dbline -1
01BE .dbline 132
01BE ; }
01BE ; //=====================================
01BE ;
01BE ; //=============SEG右四显示数字==============
01BE ; void SEG_R(unsigned int number)
01BE ; {
01BE .dbline 133
01BE ; unsigned char i=8;
01BE 88E0 ldi R24,8
01C0 C82E mov R12,R24
01C2 .dbline 135
01C2 ;
01C2 ; SEND(0x05,0x0f); //先清除右四位,右四位黑屏
01C2 2FE0 ldi R18,15
01C4 05E0 ldi R16,5
01C6 1CDF xcall _SEND
01C8 .dbline 136
01C8 ; SEND(0x06,0x0f);
01C8 2FE0 ldi R18,15
01CA 06E0 ldi R16,6
01CC 19DF xcall _SEND
01CE .dbline 137
01CE ; SEND(0x07,0x0f);
01CE 2FE0 ldi R18,15
01D0 07E0 ldi R16,7
01D2 16DF xcall _SEND
01D4 .dbline 138
01D4 ; SEND(0x08,0x0f);
01D4 2FE0 ldi R18,15
01D6 08E0 ldi R16,8
01D8 13DF xcall _SEND
01DA .dbline 140
01DA ;
01DA ; if(number>9999)//要显示的数值超过4位,则显示4个H
01DA 8FE0 ldi R24,9999
01DC 97E2 ldi R25,39
01DE 8A15 cp R24,R10
01E0 9B05 cpc R25,R11
01E2 68F4 brsh L30
01E4 X8:
01E4 .dbline 141
01E4 ; {
01E4 .dbline 142
01E4 ; SEND(0x05,0x0c);
01E4 2CE0 ldi R18,12
01E6 05E0 ldi R16,5
01E8 0BDF xcall _SEND
01EA .dbline 143
01EA ; SEND(0x06,0x0c);
01EA 2CE0 ldi R18,12
01EC 06E0 ldi R16,6
01EE 08DF xcall _SEND
01F0 .dbline 144
01F0 ; SEND(0x07,0x0c);
01F0 2CE0 ldi R18,12
01F2 07E0 ldi R16,7
01F4 05DF xcall _SEND
01F6 .dbline 145
01F6 ; SEND(0x08,0x0c);
01F6 2CE0 ldi R18,12
01F8 08E0 ldi R16,8
01FA 02DF xcall _SEND
01FC .dbline 146
01FC ; }
01FC 1CC0 xjmp L31
01FE L30:
01FE .dbline 148
01FE ; else//小于四位可以显示
01FE ; {
01FE L32:
01FE .dbline 156
01FE ; /* for(i=8;i>4;i--)
01FE ; {
01FE ; SEND(i,number%10);
01FE ; number=(number-number%10)/10;
01FE ; } */
01FE ;
01FE ; do
01FE ; {
01FE .dbline 157
01FE ; SEND(i,number%10);
01FE 2AE0 ldi R18,10
0200 30E0 ldi R19,0
0202 8501 movw R16,R10
0204 0E940000 xcall mod16u
0208 202F mov R18,R16
020A 0C2D mov R16,R12
020C F9DE xcall _SEND
020E .dbline 158
020E ; number=(number-number%10)/10;
020E 2AE0 ldi R18,10
0210 30E0 ldi R19,0
0212 8501 movw R16,R10
0214 0E940000 xcall mod16u
0218 1801 movw R2,R16
021A 8501 movw R16,R10
021C 0219 sub R16,R2
021E 1309 sbc R17,R3
0220 2AE0 ldi R18,10
0222 30E0 ldi R19,0
0224 0E940000 xcall div16u
0228 5801 movw R10,R16
022A .dbline 159
022A ; i--;
022A CA94 dec R12
022C .dbline 160
022C ; }while(number>=1);
022C L33:
022C .dbline 160
022C C501 movw R24,R10
022E 8130 cpi R24,1
0230 E0E0 ldi R30,0
0232 9E07 cpc R25,R30
0234 20F7 brsh L32
0236 X9:
0236 .dbline 161
0236 ; }
0236 L31:
0236 .dbline -2
0236 L29:
0236 .dbline 0 ; func end
0236 0C940000 xjmp pop_xgset003C
023A .dbsym r i 12 c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -