⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.lis

📁 AVR单片机C语言程序设计实例精粹
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -