📄 ad.lis
字号:
00E2 ; SEND(0x03,0x0f);
00E2 2FE0 ldi R18,15
00E4 03E0 ldi R16,3
00E6 8CDF xcall _SEND
00E8 .dbline 73
00E8 ; SEND(0x04,0x0f);
00E8 2FE0 ldi R18,15
00EA 04E0 ldi R16,4
00EC 89DF xcall _SEND
00EE .dbline 74
00EE ; SEND(0x05,0x0f);
00EE 2FE0 ldi R18,15
00F0 05E0 ldi R16,5
00F2 86DF xcall _SEND
00F4 .dbline 75
00F4 ; SEND(0x06,0x0f);
00F4 2FE0 ldi R18,15
00F6 06E0 ldi R16,6
00F8 83DF xcall _SEND
00FA .dbline 76
00FA ; SEND(0x07,0x0f);
00FA 2FE0 ldi R18,15
00FC 07E0 ldi R16,7
00FE 80DF xcall _SEND
0100 .dbline 77
0100 ; SEND(0x08,0x0f);
0100 2FE0 ldi R18,15
0102 08E0 ldi R16,8
0104 7DDF xcall _SEND
0106 .dbline 78
0106 ; }break;
0106 .dbline 78
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 84
010C ; }
010C ; }
010C ;
010C ; //==============SEG初始化=============
010C ; void SEG_INIT(void)
010C ; {
010C .dbline 85
010C ; MAX7219_OUT_DDR|=(1<<MAX7219_CLK_PORT)|(1<<MAX7219_DIN_PORT)|(1<<MAX7219_LOAD_PORT);
010C 87B3 in R24,0x17
010E 806B ori R24,176
0110 87BB out 0x17,R24
0112 .dbline 86
0112 ; MAX7219_OUT_PORT|=(1<<MAX7219_CLK_PORT)|(1<<MAX7219_DIN_PORT)|(1<<MAX7219_LOAD_PORT);
0112 88B3 in R24,0x18
0114 806B ori R24,176
0116 88BB out 0x18,R24
0118 .dbline 87
0118 ; SEND(0x0c,0x01);
0118 21E0 ldi R18,1
011A 0CE0 ldi R16,12
011C 71DF xcall _SEND
011E .dbline 88
011E ; SEND(0x0b,0x07);
011E 27E0 ldi R18,7
0120 0BE0 ldi R16,11
0122 6EDF xcall _SEND
0124 .dbline 89
0124 ; SEND(0x0a,0x05);
0124 25E0 ldi R18,5
0126 0AE0 ldi R16,10
0128 6BDF xcall _SEND
012A .dbline 90
012A ; SEND(0x09,0xff);
012A 2FEF ldi R18,255
012C 09E0 ldi R16,9
012E 68DF xcall _SEND
0130 .dbline 91
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,R13
0136 ; number -> R10,R11
.even
0136 _SEG_L::
0136 0E940000 xcall push_xgset003C
013A 5801 movw R10,R16
013C .dbline -1
013C .dbline 97
013C ; }
013C ;
013C ;
013C ; //=============SEG左四显示数字==============
013C ; void SEG_L(int number)
013C ; {
013C .dbline 98
013C ; int i=4;
013C 84E0 ldi R24,4
013E 90E0 ldi R25,0
0140 6C01 movw R12,R24
0142 .dbline 99
0142 ; SEND(0x01,0x0f); //先清除左四位,左四位黑屏
0142 2FE0 ldi R18,15
0144 01E0 ldi R16,1
0146 5CDF xcall _SEND
0148 .dbline 100
0148 ; SEND(0x02,0x0f);
0148 2FE0 ldi R18,15
014A 02E0 ldi R16,2
014C 59DF xcall _SEND
014E .dbline 101
014E ; SEND(0x03,0x0f);
014E 2FE0 ldi R18,15
0150 03E0 ldi R16,3
0152 56DF xcall _SEND
0154 .dbline 102
0154 ; SEND(0x04,0x0f);
0154 2FE0 ldi R18,15
0156 04E0 ldi R16,4
0158 53DF xcall _SEND
015A .dbline 104
015A ;
015A ; if(number>9999)//要显示的数值超过4位,则显示4个H
015A 8FE0 ldi R24,9999
015C 97E2 ldi R25,39
015E 8A15 cp R24,R10
0160 9B05 cpc R25,R11
0162 6CF4 brge L24
0164 X6:
0164 .dbline 105
0164 ; {
0164 .dbline 106
0164 ; SEND(0x01,0x0c);
0164 2CE0 ldi R18,12
0166 01E0 ldi R16,1
0168 4BDF xcall _SEND
016A .dbline 107
016A ; SEND(0x02,0x0c);
016A 2CE0 ldi R18,12
016C 02E0 ldi R16,2
016E 48DF xcall _SEND
0170 .dbline 108
0170 ; SEND(0x03,0x0c);
0170 2CE0 ldi R18,12
0172 03E0 ldi R16,3
0174 45DF xcall _SEND
0176 .dbline 109
0176 ; SEND(0x04,0x0c);
0176 2CE0 ldi R18,12
0178 04E0 ldi R16,4
017A 42DF xcall _SEND
017C .dbline 110
017C ; }
017C 1EC0 xjmp L25
017E L24:
017E .dbline 112
017E ; else//小于四位可以显示
017E ; {
017E L26:
017E .dbline 114
017E ; do
017E ; {
017E .dbline 115
017E ; SEND(i,number%10);
017E 2AE0 ldi R18,10
0180 30E0 ldi R19,0
0182 8501 movw R16,R10
0184 0E940000 xcall mod16s
0188 202F mov R18,R16
018A 0C2D mov R16,R12
018C 39DF xcall _SEND
018E .dbline 116
018E ; number=(number-number%10)/10;
018E 2AE0 ldi R18,10
0190 30E0 ldi R19,0
0192 8501 movw R16,R10
0194 0E940000 xcall mod16s
0198 1801 movw R2,R16
019A 8501 movw R16,R10
019C 0219 sub R16,R2
019E 1309 sbc R17,R3
01A0 2AE0 ldi R18,10
01A2 30E0 ldi R19,0
01A4 0E940000 xcall div16s
01A8 5801 movw R10,R16
01AA .dbline 117
01AA ; i--;
01AA C601 movw R24,R12
01AC 0197 sbiw R24,1
01AE 6C01 movw R12,R24
01B0 .dbline 118
01B0 ; }while(number>=1);
01B0 L27:
01B0 .dbline 118
01B0 C501 movw R24,R10
01B2 8130 cpi R24,1
01B4 E0E0 ldi R30,0
01B6 9E07 cpc R25,R30
01B8 14F7 brge L26
01BA X7:
01BA .dbline 119
01BA ; }
01BA L25:
01BA .dbline -2
01BA L23:
01BA .dbline 0 ; func end
01BA 0C940000 xjmp pop_xgset003C
01BE .dbsym r i 12 I
01BE .dbsym r number 10 I
01BE .dbend
01BE .dbfunc e SEG_R _SEG_R fV
01BE ; i -> R12,R13
01BE ; number -> R10,R11
.even
01BE _SEG_R::
01BE 0E940000 xcall push_xgset003C
01C2 5801 movw R10,R16
01C4 .dbline -1
01C4 .dbline 125
01C4 ; }
01C4 ; //=====================================
01C4 ;
01C4 ; //=============SEG右四显示数字==============
01C4 ; void SEG_R(int number)
01C4 ; {
01C4 .dbline 126
01C4 ; int i=8;
01C4 88E0 ldi R24,8
01C6 90E0 ldi R25,0
01C8 6C01 movw R12,R24
01CA .dbline 128
01CA ;
01CA ; SEND(0x05,0x0f); //先清除右四位,右四位黑屏
01CA 2FE0 ldi R18,15
01CC 05E0 ldi R16,5
01CE 18DF xcall _SEND
01D0 .dbline 129
01D0 ; SEND(0x06,0x0f);
01D0 2FE0 ldi R18,15
01D2 06E0 ldi R16,6
01D4 15DF xcall _SEND
01D6 .dbline 130
01D6 ; SEND(0x07,0x0f);
01D6 2FE0 ldi R18,15
01D8 07E0 ldi R16,7
01DA 12DF xcall _SEND
01DC .dbline 131
01DC ; SEND(0x08,0x0f);
01DC 2FE0 ldi R18,15
01DE 08E0 ldi R16,8
01E0 0FDF xcall _SEND
01E2 .dbline 133
01E2 ;
01E2 ; if(number>9999)//要显示的数值超过4位,则显示4个H
01E2 8FE0 ldi R24,9999
01E4 97E2 ldi R25,39
01E6 8A15 cp R24,R10
01E8 9B05 cpc R25,R11
01EA 6CF4 brge L30
01EC X8:
01EC .dbline 134
01EC ; {
01EC .dbline 135
01EC ; SEND(0x05,0x0c);
01EC 2CE0 ldi R18,12
01EE 05E0 ldi R16,5
01F0 07DF xcall _SEND
01F2 .dbline 136
01F2 ; SEND(0x06,0x0c);
01F2 2CE0 ldi R18,12
01F4 06E0 ldi R16,6
01F6 04DF xcall _SEND
01F8 .dbline 137
01F8 ; SEND(0x07,0x0c);
01F8 2CE0 ldi R18,12
01FA 07E0 ldi R16,7
01FC 01DF xcall _SEND
01FE .dbline 138
01FE ; SEND(0x08,0x0c);
01FE 2CE0 ldi R18,12
0200 08E0 ldi R16,8
0202 FEDE xcall _SEND
0204 .dbline 139
0204 ; }
0204 1EC0 xjmp L31
0206 L30:
0206 .dbline 141
0206 ; else//小于四位可以显示
0206 ; {
0206 L32:
0206 .dbline 143
0206 ; do
0206 ; {
0206 .dbline 144
0206 ; SEND(i,number%10);
0206 2AE0 ldi R18,10
0208 30E0 ldi R19,0
020A 8501 movw R16,R10
020C 0E940000 xcall mod16s
0210 202F mov R18,R16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -