📄 project.lst
字号:
(0055) // Description : Display Initialization
(0056) //***************************************************************
(0057) void Display_Init(void)
(0058) {
(0059) INT8U Index = 0;
0120 2744 CLR R20
(0060) for(Index = 0;Index < 8;Index++)
0121 C009 RJMP 0x012B
(0061) {
(0062) Buffer[Index] = 0;
0122 E683 LDI R24,0x63
0123 E090 LDI R25,0
0124 2FE4 MOV R30,R20
0125 27FF CLR R31
0126 0FE8 ADD R30,R24
0127 1FF9 ADC R31,R25
0128 2422 CLR R2
0129 8220 STD Z+0,R2
012A 9543 INC R20
012B 3048 CPI R20,0x8
012C F3A8 BCS 0x0122
(0063) }
(0064) pBufStr = String1;
012D EA8C LDI R24,0xAC
012E E090 LDI R25,0
012F 9390006D STS _pBufStr+1,R25
0131 9380006C STS _pBufStr,R24
(0065) DisplayCnt = 0;
0133 2422 CLR R2
0134 9220006B STS _DisplayCnt,R2
(0066) Length_of_DataBase = Search_DataBase_Length();
0136 D04B RCALL _Search_DataBase_Length
0137 93000062 STS _Length_of_DataBase,R16
(0067) }
0139 940E01EF CALL pop_gset1
013B 9508 RET
_Buffer_IN:
pdata --> R20
Count --> R22
Index --> R10
013C 940E0207 CALL push_gset3
013E 2EA0 MOV R10,R16
(0068)
(0069) //***************************************************************
(0070) // Function : DotTest
(0071) // Input : none
(0072) // Output : none
(0073) // Description : LED Display Test
(0074) //***************************************************************
(0075) void Buffer_IN(INT8U Index)
(0076) {
(0077) const INT8U *pdata;
(0078) INT8U Count = 0;
013F 2766 CLR R22
(0079) pdata = SearchCharIndex(*pBufStr);
0140 91E0006C LDS R30,_pBufStr
0142 91F0006D LDS R31,_pBufStr+1
0144 9104 LPM R16,0(Z)
0145 D021 RCALL _SearchCharIndex
0146 01A8 MOVW R20,R16
(0080) if(pdata != (INT8U *)0)
0147 3000 CPI R16,0
0148 0701 CPC R16,R17
0149 F0D1 BEQ 0x0164
(0081) {
(0082) for(Count = 0;Count < 7;Count++)
014A 2766 CLR R22
014B C00F RJMP 0x015B
(0083) {
(0084) Buffer[Count] = Buffer[Count+1];
014C E684 LDI R24,0x64
014D E090 LDI R25,0
014E 2FE6 MOV R30,R22
014F 27FF CLR R31
0150 0FE8 ADD R30,R24
0151 1FF9 ADC R31,R25
0152 8020 LDD R2,Z+0
0153 E683 LDI R24,0x63
0154 E090 LDI R25,0
0155 2FE6 MOV R30,R22
0156 27FF CLR R31
0157 0FE8 ADD R30,R24
0158 1FF9 ADC R31,R25
0159 8220 STD Z+0,R2
015A 9563 INC R22
015B 3067 CPI R22,7
015C F378 BCS 0x014C
(0085) }
(0086) Buffer[7] = *(pdata + Index);
015D 2DEA MOV R30,R10
015E 27FF CLR R31
015F 0FE4 ADD R30,R20
0160 1FF5 ADC R31,R21
0161 91E4 LPM R30,0(Z)
0162 93E0006A STS 0x6A,R30
(0087) }
(0088) }
0164 940E01E6 CALL pop_gset3
0166 9508 RET
_SearchCharIndex:
pDataBasePtr --> R20
Index --> R22
CharCode --> R16
0167 940E0203 CALL push_gset2
(0089)
(0090) //***************************************************************
(0091) // Function : SearchCharIndex
(0092) // Input : CharCode - Char to be displayed
(0093) // Output : Pointer to the display code of the input char
(0094) // Description : Get the pointer of the display char code
(0095) //***************************************************************
(0096) const INT8U *SearchCharIndex(INT8U CharCode)
(0097) {
(0098) INT8U Index;
(0099) const struct DataBaseIndex *pDataBasePtr;
(0100) pDataBasePtr = DataBaseIndexList;
0169 E944 LDI R20,0x94
016A E050 LDI R21,0
(0101) for(Index = 0;Index <= Length_of_DataBase;Index++)
016B 2766 CLR R22
016C C00C RJMP 0x0179
(0102) {
(0103) if(pDataBasePtr->Code == CharCode)
016D 01FA MOVW R30,R20
016E 91E4 LPM R30,0(Z)
016F 17E0 CP R30,R16
0170 F429 BNE 0x0176
(0104) {
(0105) return(pDataBasePtr->Ptr);
0171 01FA MOVW R30,R20
0172 9631 ADIW R30,1
0173 9105 LPM R16,Z+
0174 9114 LPM R17,0(Z)
0175 C009 RJMP 0x017F
(0106) }
(0107) else
(0108) {
(0109) pDataBasePtr++ ;
0176 5F4D SUBI R20,0xFD
0177 4F5F SBCI R21,0xFF
0178 9563 INC R22
0179 90200062 LDS R2,_Length_of_DataBase
017B 1626 CP R2,R22
017C F780 BCC 0x016D
(0110) }
(0111) }
(0112) return(0);
017D 2700 CLR R16
017E 2711 CLR R17
017F 940E01E3 CALL pop_gset2
0181 9508 RET
(0113) }
(0114)
(0115) //***************************************************************
(0116) // Function : Search_DataBase_Length
(0117) // Input : none
(0118) // Output : Length of database list
(0119) // Description : Search DataBase Length
(0120) //***************************************************************
(0121) INT8U Search_DataBase_Length(void)
(0122) {
(0123) INT8U Index = 0;
_Search_DataBase_Length:
Index --> R16
pDataBasePtr --> R18
0182 2700 CLR R16
(0124) const struct DataBaseIndex *pDataBasePtr;
(0125) pDataBasePtr = DataBaseIndexList;
0183 E924 LDI R18,0x94
0184 E030 LDI R19,0
0185 C003 RJMP 0x0189
(0126) while(pDataBasePtr->Code != 0)
(0127) {
(0128) Index++;
0186 9503 INC R16
(0129) pDataBasePtr++;
0187 5F2D SUBI R18,0xFD
0188 4F3F SBCI R19,0xFF
0189 01F9 MOVW R30,R18
018A 91E4 LPM R30,0(Z)
018B 23EE TST R30
018C F7C9 BNE 0x0186
(0130) }
(0131) return(Index);
018D 9508 RET
_DotTest:
Select --> R10
Index --> R12
wDelayCnt --> Y+0
018E 940E020B CALL push_gset4
0190 9724 SBIW R28,4
(0132) }
(0133)
(0134) //***************************************************************
(0135) // Function : DotTest
(0136) // Input : none
(0137) // Output : none
(0138) // Description : LED Display Test
(0139) //***************************************************************
(0140) void DotTest(void)
(0141) {
(0142) INT8U Select = 0;
0191 24AA CLR R10
(0143) INT8U Index = 0;
0192 24CC CLR R12
(0144) INT32U wDelayCnt = 0;
0193 E040 LDI R20,0
0194 E050 LDI R21,0
0195 E060 LDI R22,0
0196 E070 LDI R23,0
0197 01FE MOVW R30,R28
0198 8340 STD Z+0,R20
0199 8351 STD Z+1,R21
019A 8362 STD Z+2,R22
019B 8373 STD Z+3,R23
(0145) for(Select = 0;Select < 8;Select++)
019C C03E RJMP 0x01DB
(0146) {
(0147) for(Index = 0;Index < 8;Index++)
019D 24CC CLR R12
019E C037 RJMP 0x01D6
(0148) {
(0149) PORTA = 1 << Index;
019F E001 LDI R16,1
01A0 2D1C MOV R17,R12
01A1 940E023D CALL lsl8
01A3 BB0B OUT 0x1B,R16
(0150) PORTD = ~(1 << Select);
01A4 E001 LDI R16,1
01A5 2D1A MOV R17,R10
01A6 940E023D CALL lsl8
01A8 2E20 MOV R2,R16
01A9 9420 COM R2
01AA BA22 OUT 0x12,R2
(0151) for(wDelayCnt = 0;wDelayCnt < 90000;wDelayCnt++) {;}
01AB E040 LDI R20,0
01AC E050 LDI R21,0
01AD E060 LDI R22,0
01AE E070 LDI R23,0
01AF 01FE MOVW R30,R28
01B0 8340 STD Z+0,R20
01B1 8351 STD Z+1,R21
01B2 8362 STD Z+2,R22
01B3 8373 STD Z+3,R23
01B4 C012 RJMP 0x01C7
01B5 E041 LDI R20,1
01B6 E050 LDI R21,0
01B7 E060 LDI R22,0
01B8 E070 LDI R23,0
01B9 01FE MOVW R30,R28
01BA 8020 LDD R2,Z+0
01BB 8031 LDD R3,Z+1
01BC 8042 LDD R4,Z+2
01BD 8053 LDD R5,Z+3
01BE 0E24 ADD R2,R20
01BF 1E35 ADC R3,R21
01C0 1E46 ADC R4,R22
01C1 1E57 ADC R5,R23
01C2 01FE MOVW R30,R28
01C3 8220 STD Z+0,R2
01C4 8231 STD Z+1,R3
01C5 8242 STD Z+2,R4
01C6 8253 STD Z+3,R5
01C7 E940 LDI R20,0x90
01C8 E55F LDI R21,0x5F
01C9 E061 LDI R22,1
01CA E070 LDI R23,0
01CB 01FE MOVW R30,R28
01CC 8020 LDD R2,Z+0
01CD 8031 LDD R3,Z+1
01CE 8042 LDD R4,Z+2
01CF 8053 LDD R5,Z+3
01D0 1624 CP R2,R20
01D1 0635 CPC R3,R21
01D2 0646 CPC R4,R22
01D3 0657 CPC R5,R23
01D4 F300 BCS 0x01B5
01D5 94C3 INC R12
01D6 2D8C MOV R24,R12
01D7 3088 CPI R24,0x8
01D8 F408 BCC 0x01DA
01D9 CFC5 RJMP 0x019F
01DA 94A3 INC R10
01DB 2D8A MOV R24,R10
01DC 3088 CPI R24,0x8
01DD F408 BCC 0x01DF
01DE CFBE RJMP 0x019D
(0152) }
(0153) }
(0154) }
FILE: <library>
01DF 9624 ADIW R28,4
01E0 940E01E9 CALL pop_gset4
01E2 9508 RET
pop_gset2:
01E3 E0E2 LDI R30,2
01E4 940C01F0 JMP pop
pop_gset3:
01E6 E0E4 LDI R30,4
01E7 940C01F0 JMP pop
pop_gset4:
01E9 E0E8 LDI R30,0x8
01EA 940C01F0 JMP pop
push_gset1:
01EC 935A ST R21,-Y
01ED 934A ST R20,-Y
01EE 9508 RET
pop_gset1:
01EF E0E1 LDI R30,1
pop:
01F0 9149 LD R20,Y+
01F1 9159 LD R21,Y+
01F2 FDE0 SBRC R30,0
01F3 9508 RET
01F4 9169 LD R22,Y+
01F5 9179 LD R23,Y+
01F6 FDE1 SBRC R30,1
01F7 9508 RET
01F8 90A9 LD R10,Y+
01F9 90B9 LD R11,Y+
01FA FDE2 SBRC R30,2
01FB 9508 RET
01FC 90C9 LD R12,Y+
01FD 90D9 LD R13,Y+
01FE FDE3 SBRC R30,3
01FF 9508 RET
0200 90E9 LD R14,Y+
0201 90F9 LD R15,Y+
0202 9508 RET
push_gset2:
0203 937A ST R23,-Y
0204 936A ST R22,-Y
0205 940C01EC JMP push_gset1
push_gset3:
0207 92BA ST R11,-Y
0208 92AA ST R10,-Y
0209 940C0203 JMP push_gset2
push_gset4:
020B 92DA ST R13,-Y
020C 92CA ST R12,-Y
020D 940C0207 JMP push_gset3
push_lset:
020F 93FA ST R31,-Y
0210 93EA ST R30,-Y
0211 93BA ST R27,-Y
0212 93AA ST R26,-Y
0213 939A ST R25,-Y
0214 938A ST R24,-Y
0215 933A ST R19,-Y
0216 932A ST R18,-Y
0217 931A ST R17,-Y
0218 930A ST R16,-Y
0219 929A ST R9,-Y
021A 928A ST R8,-Y
021B 927A ST R7,-Y
021C 926A ST R6,-Y
021D 925A ST R5,-Y
021E 924A ST R4,-Y
021F 923A ST R3,-Y
0220 922A ST R2,-Y
0221 921A ST R1,-Y
0222 920A ST R0,-Y
0223 B60F IN R0,0x3F
0224 920A ST R0,-Y
0225 9508 RET
pop_lset:
0226 9009 LD R0,Y+
0227 BE0F OUT 0x3F,R0
0228 9009 LD R0,Y+
0229 9019 LD R1,Y+
022A 9029 LD R2,Y+
022B 9039 LD R3,Y+
022C 9049 LD R4,Y+
022D 9059 LD R5,Y+
022E 9069 LD R6,Y+
022F 9079 LD R7,Y+
0230 9089 LD R8,Y+
0231 9099 LD R9,Y+
0232 9109 LD R16,Y+
0233 9119 LD R17,Y+
0234 9129 LD R18,Y+
0235 9139 LD R19,Y+
0236 9189 LD R24,Y+
0237 9199 LD R25,Y+
0238 91A9 LD R26,Y+
0239 91B9 LD R27,Y+
023A 91E9 LD R30,Y+
023B 91F9 LD R31,Y+
023C 9508 RET
lsl8:
023D 2311 TST R17
023E F019 BEQ 0x0242
023F 0F00 LSL R16
0240 951A DEC R17
0241 CFFB RJMP lsl8
0242 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -