📄 led.lis
字号:
0096 ; //***************************************************************
0096 ; // Function : SearchCharIndex
0096 ; // Input : CharCode - Char to be displayed
0096 ; // Output : Pointer to the display code of the input char
0096 ; // Description : Get the pointer of the display char code
0096 ; //***************************************************************
0096 ; const INT8U *SearchCharIndex(INT8U CharCode)
0096 ; {
0096 .dbline 100
0096 ; INT8U Index;
0096 ; const struct DataBaseIndex *pDataBasePtr;
0096 ; pDataBasePtr = DataBaseIndexList;
0096 40E0 ldi R20,<_DataBaseIndexList
0098 50E0 ldi R21,>_DataBaseIndexList
009A .dbline 101
009A ; for(Index = 0;Index <= Length_of_DataBase;Index++)
009A 6627 clr R22
009C 0CC0 xjmp L19
009E L16:
009E .dbline 102
009E ; {
009E .dbline 103
009E ; if(pDataBasePtr->Code == CharCode)
009E FA01 movw R30,R20
00A0 E491 lpm R30,Z
00A2 E017 cp R30,R16
00A4 29F4 brne L20
00A6 .dbline 104
00A6 ; {
00A6 .dbline 105
00A6 ; return(pDataBasePtr->Ptr);
00A6 FA01 movw R30,R20
00A8 3196 adiw R30,1
00AA 0591 lpm R16,Z+
00AC 1491 lpm R17,Z
00AE 09C0 xjmp L15
00B0 L20:
00B0 .dbline 108
00B0 .dbline 109
00B0 4D5F subi R20,253 ; offset = 3
00B2 5F4F sbci R21,255
00B4 .dbline 110
00B4 .dbline 111
00B4 L17:
00B4 .dbline 101
00B4 6395 inc R22
00B6 L19:
00B6 .dbline 101
00B6 20900000 lds R2,_Length_of_DataBase
00BA 2616 cp R2,R22
00BC 80F7 brsh L16
00BE .dbline 112
00BE ; }
00BE ; else
00BE ; {
00BE ; pDataBasePtr++ ;
00BE ; }
00BE ; }
00BE ; return(0);
00BE 0027 clr R16
00C0 1127 clr R17
00C2 .dbline -2
00C2 L15:
00C2 0E940000 xcall pop_gset2
00C6 .dbline 0 ; func end
00C6 0895 ret
00C8 .dbsym r pDataBasePtr 20 pkX
00C8 .dbsym r Index 22 c
00C8 .dbsym r CharCode 16 c
00C8 .dbend
00C8 .dbfunc e Search_DataBase_Length _Search_DataBase_Length fc
00C8 ; Index -> R16
00C8 ; pDataBasePtr -> R18,R19
.even
00C8 _Search_DataBase_Length::
00C8 .dbline -1
00C8 .dbline 122
00C8 ; }
00C8 ;
00C8 ; //***************************************************************
00C8 ; // Function : Search_DataBase_Length
00C8 ; // Input : none
00C8 ; // Output : Length of database list
00C8 ; // Description : Search DataBase Length
00C8 ; //***************************************************************
00C8 ; INT8U Search_DataBase_Length(void)
00C8 ; {
00C8 .dbline 123
00C8 ; INT8U Index = 0;
00C8 0027 clr R16
00CA .dbline 125
00CA ; const struct DataBaseIndex *pDataBasePtr;
00CA ; pDataBasePtr = DataBaseIndexList;
00CA 20E0 ldi R18,<_DataBaseIndexList
00CC 30E0 ldi R19,>_DataBaseIndexList
00CE 03C0 xjmp L24
00D0 L23:
00D0 .dbline 127
00D0 .dbline 128
00D0 0395 inc R16
00D2 .dbline 129
00D2 2D5F subi R18,253 ; offset = 3
00D4 3F4F sbci R19,255
00D6 .dbline 130
00D6 L24:
00D6 .dbline 126
00D6 ; while(pDataBasePtr->Code != 0)
00D6 F901 movw R30,R18
00D8 E491 lpm R30,Z
00DA EE23 tst R30
00DC C9F7 brne L23
00DE .dbline 131
00DE ; {
00DE ; Index++;
00DE ; pDataBasePtr++;
00DE ; }
00DE ; return(Index);
00DE .dbline -2
00DE L22:
00DE .dbline 0 ; func end
00DE 0895 ret
00E0 .dbsym r Index 16 c
00E0 .dbsym r pDataBasePtr 18 pkX
00E0 .dbend
00E0 .dbfunc e DotTest _DotTest fV
00E0 ; Select -> R10
00E0 ; Index -> R12
00E0 ; wDelayCnt -> y+0
.even
00E0 _DotTest::
00E0 0E940000 xcall push_gset4
00E4 2497 sbiw R28,4
00E6 .dbline -1
00E6 .dbline 141
00E6 ; }
00E6 ;
00E6 ; //***************************************************************
00E6 ; // Function : DotTest
00E6 ; // Input : none
00E6 ; // Output : none
00E6 ; // Description : LED Display Test
00E6 ; //***************************************************************
00E6 ; void DotTest(void)
00E6 ; {
00E6 .dbline 142
00E6 ; INT8U Select = 0;
00E6 AA24 clr R10
00E8 .dbline 143
00E8 ; INT8U Index = 0;
00E8 CC24 clr R12
00EA .dbline 144
00EA ; INT32U wDelayCnt = 0;
00EA 40E0 ldi R20,0
00EC 50E0 ldi R21,0
00EE 60E0 ldi R22,0
00F0 70E0 ldi R23,0
00F2 FE01 movw R30,R28
00F4 4083 std z+0,R20
00F6 5183 std z+1,R21
00F8 6283 std z+2,R22
00FA 7383 std z+3,R23
00FC .dbline 145
00FC ; for(Select = 0;Select < 8;Select++)
00FC 3EC0 xjmp L30
00FE L27:
00FE .dbline 146
00FE ; {
00FE .dbline 147
00FE ; for(Index = 0;Index < 8;Index++)
00FE CC24 clr R12
0100 37C0 xjmp L34
0102 L31:
0102 .dbline 148
0102 ; {
0102 .dbline 149
0102 ; PORTA = 1 << Index;
0102 01E0 ldi R16,1
0104 1C2D mov R17,R12
0106 0E940000 xcall lsl8
010A 0BBB out 0x1b,R16
010C .dbline 150
010C ; PORTD = ~(1 << Select);
010C 01E0 ldi R16,1
010E 1A2D mov R17,R10
0110 0E940000 xcall lsl8
0114 202E mov R2,R16
0116 2094 com R2
0118 22BA out 0x12,R2
011A .dbline 151
011A 40E0 ldi R20,0
011C 50E0 ldi R21,0
011E 60E0 ldi R22,0
0120 70E0 ldi R23,0
0122 FE01 movw R30,R28
0124 4083 std z+0,R20
0126 5183 std z+1,R21
0128 6283 std z+2,R22
012A 7383 std z+3,R23
012C 12C0 xjmp L38
012E L35:
012E .dbline 151
012E .dbline 151
012E .dbline 151
012E L36:
012E .dbline 151
012E 41E0 ldi R20,1
0130 50E0 ldi R21,0
0132 60E0 ldi R22,0
0134 70E0 ldi R23,0
0136 FE01 movw R30,R28
0138 2080 ldd R2,z+0
013A 3180 ldd R3,z+1
013C 4280 ldd R4,z+2
013E 5380 ldd R5,z+3
0140 240E add R2,R20
0142 351E adc R3,R21
0144 461E adc R4,R22
0146 571E adc R5,R23
0148 FE01 movw R30,R28
014A 2082 std z+0,R2
014C 3182 std z+1,R3
014E 4282 std z+2,R4
0150 5382 std z+3,R5
0152 L38:
0152 .dbline 151
0152 40E9 ldi R20,144
0154 5FE5 ldi R21,95
0156 61E0 ldi R22,1
0158 70E0 ldi R23,0
015A FE01 movw R30,R28
015C 2080 ldd R2,z+0
015E 3180 ldd R3,z+1
0160 4280 ldd R4,z+2
0162 5380 ldd R5,z+3
0164 2416 cp R2,R20
0166 3506 cpc R3,R21
0168 4606 cpc R4,R22
016A 5706 cpc R5,R23
016C 00F3 brlo L35
016E .dbline 152
016E L32:
016E .dbline 147
016E C394 inc R12
0170 L34:
0170 .dbline 147
0170 8C2D mov R24,R12
0172 8830 cpi R24,8
0174 08F4 brsh X1
0176 C5CF xjmp L31
0178 X1:
0178 .dbline 153
0178 L28:
0178 .dbline 145
0178 A394 inc R10
017A L30:
017A .dbline 145
017A 8A2D mov R24,R10
017C 8830 cpi R24,8
017E 08F4 brsh X2
0180 BECF xjmp L27
0182 X2:
0182 .dbline -2
0182 .dbline 154
0182 ; for(wDelayCnt = 0;wDelayCnt < 90000;wDelayCnt++) {;}
0182 ; }
0182 ; }
0182 ; }
0182 L26:
0182 2496 adiw R28,4
0184 0E940000 xcall pop_gset4
0188 .dbline 0 ; func end
0188 0895 ret
018A .dbsym r Select 10 c
018A .dbsym r Index 12 c
018A .dbsym l wDelayCnt 0 l
018A .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LED大屏幕显示系统设计\LED.c
0000 _Length_of_DataBase::
0000 .blkb 1
0001 .dbsym e Length_of_DataBase _Length_of_DataBase c
0001 _Buffer::
0001 .blkb 8
0009 .dbsym e Buffer _Buffer A[8:8]c
0009 _DisplayCnt::
0009 .blkb 1
000A .dbsym e DisplayCnt _DisplayCnt c
000A _pBufStr::
000A .blkb 2
000C .dbsym e pBufStr _pBufStr pkc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -