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

📄 main.lis

📁 一个关于AVR单片机的例程
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 004A 00E8              ldi R16,128
 004C 1ED0              xcall _LcdSend
 004E                   .dbline 180
 004E           ; 
 004E           ; for (i=0; i<504; i++)
 004E 4427              clr R20
 0050 5527              clr R21
 0052 05C0              xjmp L6
 0054           L3:
 0054                   .dbline 181
 0054 21E0              ldi R18,1
 0056 0027              clr R16
 0058 18D0              xcall _LcdSend
 005A           L4:
 005A                   .dbline 180
 005A 4F5F              subi R20,255  ; offset = 1
 005C 5F4F              sbci R21,255
 005E           L6:
 005E                   .dbline 180
 005E 483F              cpi R20,248
 0060 E1E0              ldi R30,1
 0062 5E07              cpc R21,R30
 0064 B8F3              brlo L3
 0066                   .dbline -2
 0066           L2:
 0066 0E940000          xcall pop_gset1
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbsym r i 20 i
 006C                   .dbend
 006C                   .dbfunc e LcdGotoXY _LcdGotoXY fV
 006C           ;              Y -> R22
 006C           ;              X -> R20
                        .even
 006C           _LcdGotoXY::
 006C 0E940000          xcall push_gset2
 0070 622F              mov R22,R18
 0072 402F              mov R20,R16
 0074                   .dbline -1
 0074                   .dbline 191
 0074           ; LcdSend(0, 1); 
 0074           ; }
 0074           ; 
 0074           ; /*--------------------------------------------------------------------------------------------------
 0074           ;   Name         :  LcdGotoXY 设置块坐标
 0074           ;   Description  :  Sets cursor location to xy location corresponding to basic font size.
 0074           ;   Argument(s)  :  x, y -> Coordinate for new cursor position. Range: 1,1 .. 14,6
 0074           ;   Return value :  None.
 0074           ; --------------------------------------------------------------------------------------------------*/
 0074           ; void LcdGotoXY(unsigned char X, unsigned char Y)
 0074           ; {
 0074                   .dbline 192
 0074           ; LcdSend(0x40 | Y, 0); // column
 0074 2227              clr R18
 0076 062F              mov R16,R22
 0078 0064              ori R16,64
 007A 07D0              xcall _LcdSend
 007C                   .dbline 193
 007C           ; LcdSend(0x80 | X, 0); // row
 007C 2227              clr R18
 007E 042F              mov R16,R20
 0080 0068              ori R16,128
 0082 03D0              xcall _LcdSend
 0084                   .dbline -2
 0084           L7:
 0084 0E940000          xcall pop_gset2
 0088                   .dbline 0 ; func end
 0088 0895              ret
 008A                   .dbsym r Y 22 c
 008A                   .dbsym r X 20 c
 008A                   .dbend
 008A                   .dbfunc s LcdSend _LcdSend fV
 008A           ;        command -> R18
 008A           ;           data -> R16
                        .even
 008A           _LcdSend:
 008A                   .dbline -1
 008A                   .dbline 204
 008A           ; }
 008A           ; 
 008A           ; /*--------------------------------------------------------------------------------------------------
 008A           ;   Name         :  LcdSend
 008A           ;   Description  :  Sends data to display controller.
 008A           ;   Argument(s)  :  data -> Data to be sent
 008A           ;                   cd   -> Command or data (see/use enum)
 008A           ;   Return value :  None.
 008A           ; --------------------------------------------------------------------------------------------------*/
 008A           ; static void LcdSend (unsigned char data, unsigned char command)
 008A           ; {
 008A                   .dbline 205
 008A           ; PORTB &= ~LCD_CE_PIN ; // 使能LCD
 008A C198              cbi 0x18,1
 008C                   .dbline 206
 008C           ; if (command == 0)
 008C 2223              tst R18
 008E 11F4              brne L9
 0090                   .dbline 207
 0090           ; PORTB &= ~LCD_DC_PIN ; // 传送命令
 0090 C298              cbi 0x18,2
 0092 01C0              xjmp L10
 0094           L9:
 0094                   .dbline 209
 0094           ; else
 0094           ; PORTB |= LCD_DC_PIN ; // 传送数据
 0094 C29A              sbi 0x18,2
 0096           L10:
 0096                   .dbline 211
 0096           ; 
 0096           ; SPDR = data; // 传送数据到SPI寄存器
 0096 0FB9              out 0xf,R16
 0098           L11:
 0098                   .dbline 213
 0098           L12:
 0098                   .dbline 213
 0098           ; 
 0098           ; while ((SPSR & 0x80) == 0); // 等待数据传送完毕
 0098 779B              sbis 0xe,7
 009A FECF              rjmp L11
 009C                   .dbline 215
 009C           ; 
 009C           ; PORTB |= LCD_CE_PIN ; // 关闭LCD
 009C C19A              sbi 0x18,1
 009E                   .dbline -2
 009E           L8:
 009E                   .dbline 0 ; func end
 009E 0895              ret
 00A0                   .dbsym r command 18 c
 00A0                   .dbsym r data 16 c
 00A0                   .dbend
 00A0                   .dbfunc s Delay _Delay fV
 00A0           ;              i -> R16,R17
                        .even
 00A0           _Delay:
 00A0                   .dbline -1
 00A0                   .dbline 225
 00A0           ; }
 00A0           ; 
 00A0           ; /*--------------------------------------------------------------------------------------------------
 00A0           ;   Name         :  Delay
 00A0           ;   Description  :  Uncalibrated delay for LCD init routine.
 00A0           ;   Argument(s)  :  None.
 00A0           ;   Return value :  None.
 00A0           ; --------------------------------------------------------------------------------------------------*/
 00A0           ; static void Delay ( void )
 00A0           ; {
 00A0                   .dbline 227
 00A0 00E2              ldi R16,-12000
 00A2 11ED              ldi R17,-47
 00A4           L15:
 00A4                   .dbline 227
 00A4           L16:
 00A4                   .dbline 227
 00A4           ;     int i;
 00A4           ;     for ( i = -12000; i < 12000; i++ );
 00A4 0F5F              subi R16,255  ; offset = 1
 00A6 1F4F              sbci R17,255
 00A8                   .dbline 227
 00A8 003E              cpi R16,224
 00AA EEE2              ldi R30,46
 00AC 1E07              cpc R17,R30
 00AE D4F3              brlt L15
 00B0                   .dbline -2
 00B0           L14:
 00B0                   .dbline 0 ; func end
 00B0 0895              ret
 00B2                   .dbsym r i 16 I
 00B2                   .dbend
 00B2                   .dbfunc e main _main fV
 00B2           ;              i -> R20
 00B2           ;              X -> R22
                        .even
 00B2           _main::
 00B2                   .dbline -1
 00B2                   .dbline 238
 00B2           ; }
 00B2           ; 
 00B2           ; /*--------------------------------------------------------------------------------------------------
 00B2           ;   Name         :  main
 00B2           ;   Description  :  
 00B2           ;   Argument(s)  :  
 00B2           ;   Return value :  None.
 00B2           ; --------------------------------------------------------------------------------------------------*/
 00B2           ; 
 00B2           ; void main(void)
 00B2           ; {
 00B2                   .dbline 239
 00B2           ;   unsigned char X=0,i=0;  //v=0,按行显示,x对应某个bank(0~83)
 00B2 6627              clr R22
 00B4                   .dbline 239
 00B4 4427              clr R20
 00B6                   .dbline 240
 00B6           ;   LcdInit();
 00B6 A4DF              xcall _LcdInit
 00B8 1BC0              xjmp L21
 00BA           L20:
 00BA                   .dbline 243
 00BA           ;   
 00BA           ;   while(1)
 00BA           ;   {
 00BA                   .dbline 244
 00BA           ;     LcdGotoXY(X_Init,Y_Init);
 00BA 2227              clr R18
 00BC 0027              clr R16
 00BE D6DF              xcall _LcdGotoXY
 00C0                   .dbline 246
 00C0           ;    // for(X=0;X<X_Length;X++)LcdSend(X_TAB[X],1);
 00C0           ;    for(i=0;i<100;i++)
 00C0 4427              clr R20
 00C2 14C0              xjmp L26
 00C4           L23:
 00C4                   .dbline 247
 00C4           ;    {
 00C4                   .dbline 248
 00C4           ;     for(X=0;X<5;X++)
 00C4 6627              clr R22
 00C6 0FC0              xjmp L30
 00C8           L27:
 00C8                   .dbline 249
 00C8                   .dbline 250
 00C8 21E0              ldi R18,1
 00CA 85E0              ldi R24,5
 00CC 849F              mul R24,R20
 00CE 1001              movw R2,R0
 00D0 80E0              ldi R24,<_FontLookup
 00D2 90E0              ldi R25,>_FontLookup
 00D4 280E              add R2,R24
 00D6 391E              adc R3,R25
 00D8 E62F              mov R30,R22
 00DA FF27              clr R31
 00DC E20D              add R30,R2
 00DE F31D              adc R31,R3
 00E0 0491              lpm R16,Z
 00E2 D3DF              xcall _LcdSend
 00E4                   .dbline 251
 00E4           L28:
 00E4                   .dbline 248
 00E4 6395              inc R22
 00E6           L30:
 00E6                   .dbline 248
 00E6 6530              cpi R22,5
 00E8 78F3              brlo L27
 00EA                   .dbline 252
 00EA           L24:
 00EA                   .dbline 246
 00EA 4395              inc R20
 00EC           L26:
 00EC                   .dbline 246
 00EC 4436              cpi R20,100
 00EE 50F3              brlo L23
 00F0                   .dbline 253
 00F0           L21:
 00F0                   .dbline 242
 00F0 E4CF              xjmp L20
 00F2           X0:
 00F2                   .dbline -2
 00F2           L19:
 00F2                   .dbline 0 ; func end
 00F2 0895              ret
 00F4                   .dbsym r i 20 c
 00F4                   .dbsym r X 22 c
 00F4                   .dbend

⌨️ 快捷键说明

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