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

📄 lcd.lis

📁 使用iccavr的例子
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0266 0081              ldd R16,z+0
 0268 1127              clr R17
 026A 0E948201          call _WriteToDevice
 026E                   .dbline 128
                       ;   
                       ;   if ( i>15 )                 /* finished line */               
 026E 8FE0              ldi R24,15
 0270 20900000          lds R2,L32
 0274 8215              cp R24,R2
 0276 10F0              brlo X0
 0278 0C948101          jmp L47
 027C                 X0:
 027C                   .dbline 129
                       ;   {
 027C                   .dbline 130
                       ;     CheckIfBusy();          /* check is lcd is connected */
 027C 0E949201          call _CheckIfBusy
 0280                   .dbline 131
                       ;     if ( LCDLine == LINE2 )
 0280 80914500          lds R24,_LCDLine
 0284 8230              cpi R24,2
 0286 41F4              brne L49
 0288                   .dbline 132
                       ;       WriteToDevice( SECOND_LINE, INSTRUCTION );
 0288 2227              clr R18
 028A 3327              clr R19
 028C 00EC              ldi R16,192
 028E 10E0              ldi R17,0
 0290 0E948201          call _WriteToDevice
 0294 0C945201          jmp L50
 0298                 L49:
 0298                   .dbline 134
                       ;     else
                       ;       WriteToDevice( FIRST_LINE, INSTRUCTION );
 0298 2227              clr R18
 029A 3327              clr R19
 029C 00E8              ldi R16,128
 029E 10E0              ldi R17,0
 02A0 0E948201          call _WriteToDevice
 02A4                 L50:
 02A4                   .dbline 136
                       ; 
                       ;     CheckIfBusy();                /* check if first character is correct */
 02A4 0E949201          call _CheckIfBusy
 02A8                   .dbline 137
                       ;     if ( ReadDevice( DATA ) != LCDStr1[0] )
 02A8 01E0              ldi R16,1
 02AA 10E0              ldi R17,0
 02AC 0E949901          call _ReadDevice
 02B0 20903400          lds R2,_LCDStr1
 02B4 0215              cp R16,R2
 02B6 11F0              breq L51
 02B8                   .dbline 138
                       ;       LCDInitialise();                    /* reinitialise lcd otherwise */    
 02B8 0E940000          call _LCDInitialise
 02BC                 L51:
 02BC                   .dbline 140
                       ; 
                       ;     if ( LCDLine == LINE1_AND_LINE2 )
 02BC 80914500          lds R24,_LCDLine
 02C0 8330              cpi R24,3
 02C2 59F4              brne L53
 02C4                   .dbline 141
                       ;     {
 02C4                   .dbline 142
                       ;       strcpy( LCDStr1, LCDStr2 );       /* load str2 into str1 and update line 2 */
 02C4 20E0              ldi R18,<_LCDStr2
 02C6 30E0              ldi R19,>_LCDStr2
 02C8 00E0              ldi R16,<_LCDStr1
 02CA 10E0              ldi R17,>_LCDStr1
 02CC 0E940000          call _strcpy
 02D0                   .dbline 143
                       ;       LCDLine = LINE2;
 02D0 82E0              ldi R24,2
 02D2 80934500          sts _LCDLine,R24
 02D6                   .dbline 144
                       ;     }
 02D6 0C947C01          jmp L54
 02DA                 L53:
 02DA                   .dbline 146
                       ;     else
                       ;     {
 02DA                   .dbline 147
                       ;       if ( CHECKBIT( LCDStatus, LCD_QUEUE ) )
 02DA 20900000          lds R2,_LCDStatus
 02DE 24FE              sbrs R2,4
 02E0 06C0              rjmp L55
 02E2                   .dbline 148
                       ;         LCDPrintf( LCDQueueStr1, LCDQueueStr2 );
 02E2 20E0              ldi R18,<_LCDQueueStr2
 02E4 30E0              ldi R19,>_LCDQueueStr2
 02E6 00E0              ldi R16,<_LCDQueueStr1
 02E8 10E0              ldi R17,>_LCDQueueStr1
 02EA 0E940A00          call _LCDPrintf
 02EE                 L55:
 02EE                   .dbline 150
                       ;           
                       ;       CLEARBIT( LCDStatus, LCD_UPDATE );
 02EE 80910000          lds R24,_LCDStatus
 02F2 8D7F              andi R24,253
 02F4 80930000          sts _LCDStatus,R24
 02F8                   .dbline 151
                       ;     }
 02F8                 L54:
 02F8                   .dbline 153
                       ;    
                       ;    CLEARBIT( LCDStatus, LCD_BUSY );
 02F8 80910000          lds R24,_LCDStatus
 02FC 8B7F              andi R24,251
 02FE 80930000          sts _LCDStatus,R24
 0302                   .dbline 154
                       ;   }
 0302                 L47:
 0302                   .dbline 155}
                       ; }
 0302                 L31:
 0302 0895              ret
 0304                   .dbfunc s WriteToDevice _WriteToDevice fI
                       ;         LCD_IO -> R20,R21
                       ;         select -> R18
                       ;           data -> R16
                         .even
 0304                 _WriteToDevice::
 0304 0E940000          call push_gset1
 0308                   .dbline 159{
                       ; 
                       ; /* writes to lcd */
                       ; void WriteToDevice( char data, unsigned char select )
                       ; {
 0308                   .dbline 162
                       ;   char *LCD_IO;
                       ;   
                       ;   if ( select == INSTRUCTION )          /* set RS */
 0308 2223              tst R18
 030A 21F4              brne L58
 030C                   .dbline 163
                       ;     LCD_IO = ( char * ) 0x8000;        
 030C 40E0              ldi R20,0
 030E 50E8              ldi R21,128
 0310 0C948C01          jmp L59
 0314                 L58:
 0314                   .dbline 165
                       ;   else
                       ;     LCD_IO = ( char * ) 0xC000;        
 0314 40E0              ldi R20,0
 0316 50EC              ldi R21,192
 0318                 L59:
 0318                   .dbline 167
                       ; 
                       ;   *LCD_IO = data;
 0318 E42F              mov R30,R20
 031A F52F              mov R31,R21
 031C 0083              std z+0,R16
 031E                   .dbline 168}
                       ; }
 031E                 L57:
 031E 0E940000          call pop_gset1
 0322 0895              ret
 0324                   .dbsym r LCD_IO 20 pc
 0324                   .dbsym r select 18 c
 0324                   .dbsym r data 16 c
 0324                   .dbfunc s CheckIfBusy _CheckIfBusy fI
                         .even
 0324                 _CheckIfBusy::
 0324                   .dbline 171{
                       ; 
                       ; void CheckIfBusy( void )
                       ; {
 0324                 L61:
 0324                   .dbline 172
 0324                 L62:
 0324                   .dbline 172
                       ;   while ( ReadDevice( INSTRUCTION ) & BUSY_FLAG );
 0324 0027              clr R16
 0326 1127              clr R17
 0328 0E949901          call _ReadDevice
 032C 07FD              sbrc R16,7
 032E FACF              rjmp L61
 0330                   .dbline 173}
                       ; }
 0330                 L60:
 0330 0895              ret
 0332                   .dbfunc s ReadDevice _ReadDevice fI
                       ;         LCD_IO -> R20,R21
                       ;         select -> R16
                         .even
 0332                 _ReadDevice::
 0332 0E940000          call push_gset1
 0336                   .dbline 177{
                       ; 
                       ; /* reads from lcd */
                       ; char ReadDevice( unsigned char select )
                       ; {
 0336                   .dbline 180
                       ;   char *LCD_IO;
                       ;   
                       ;   if ( select == INSTRUCTION )          /* set RS */
 0336 0023              tst R16
 0338 21F4              brne L65
 033A                   .dbline 181
                       ;     LCD_IO = ( char * ) 0x8000;           
 033A 40E0              ldi R20,0
 033C 50E8              ldi R21,128
 033E 0C94A301          jmp L66
 0342                 L65:
 0342                   .dbline 183
                       ;   else
                       ;     LCD_IO = ( char * ) 0xC000;           
 0342 40E0              ldi R20,0
 0344 50EC              ldi R21,192
 0346                 L66:
 0346                   .dbline 185
                       ;   
                       ;   return *LCD_IO;
 0346 E42F              mov R30,R20
 0348 F52F              mov R31,R21
 034A 0081              ldd R16,z+0
 034C 1127              clr R17
 034E                 L64:
 034E 0E940000          call pop_gset1
 0352 0895              ret
 0354                   .dbline 186}
 0354                   .dbsym r LCD_IO 20 pc
 0354                   .dbsym r select 16 c
                         .area bss
 0001                   .dbfile C:\Documents\Software\AVR\lcd16x2\code\lcd.c
 0001                 _LCDQueueStr2:
 0001                   .blkb 17
 0012                   .dbfile c:/documents/software/avr/lcd16x2/include/lcd.h
 0012                   .dbsym s LCDQueueStr2 _LCDQueueStr2 Ac[17:17]
 0012                 _LCDQueueStr1:
 0012                   .blkb 17
 0023                   .dbsym s LCDQueueStr1 _LCDQueueStr1 Ac[17:17]
 0023                 _LCDStr2:
 0023                   .blkb 17
 0034                   .dbsym s LCDStr2 _LCDStr2 Ac[17:17]
 0034                 _LCDStr1:
 0034                   .blkb 17
 0045                   .dbsym s LCDStr1 _LCDStr1 Ac[17:17]
 0045                 _LCDLine:
 0045                   .blkb 1
 0046                   .dbsym s LCDLine _LCDLine c
 0046                 _LCDCounter:
 0046                   .blkb 1
 0047                   .dbsym s LCDCounter _LCDCounter c
                         .area data
 0000                   .dbfile c:/documents/software/avr/lcd16x2/include/lcd.h
 0000                 L17:
 0000                   .blkb 3
                         .area idata
 0000 257300            .byte 37,'s,0
                         .area data
 0003                   .dbfile c:/documents/software/avr/lcd16x2/include/lcd.h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -