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

📄 3310.lis

📁 LED条屏显示程序,但是对初学者
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0098 80E0              ldi R24,<L3
 009A 90E0              ldi R25,>L3
 009C 9B83              std y+3,R25
 009E 8A83              std y+2,R24
 00A0 8EE0              ldi R24,14
 00A2 8883              std y+0,R24
 00A4 23E0              ldi R18,3
 00A6 0027              clr R16
 00A8 61D0              xcall _LCD_write_String
 00AA                   .dbline 259
 00AA           ;  LCD_write_String(0,4,14,"              ",0);
 00AA 2224              clr R2
 00AC 2C82              std y+4,R2
 00AE 80E0              ldi R24,<L3
 00B0 90E0              ldi R25,>L3
 00B2 9B83              std y+3,R25
 00B4 8A83              std y+2,R24
 00B6 8EE0              ldi R24,14
 00B8 8883              std y+0,R24
 00BA 24E0              ldi R18,4
 00BC 0027              clr R16
 00BE 56D0              xcall _LCD_write_String
 00C0                   .dbline 260
 00C0           ;  LCD_write_String(0,5,14,"              ",0);
 00C0 2224              clr R2
 00C2 2C82              std y+4,R2
 00C4 80E0              ldi R24,<L3
 00C6 90E0              ldi R25,>L3
 00C8 9B83              std y+3,R25
 00CA 8A83              std y+2,R24
 00CC 8EE0              ldi R24,14
 00CE 8883              std y+0,R24
 00D0 25E0              ldi R18,5
 00D2 0027              clr R16
 00D4 4BD0              xcall _LCD_write_String
 00D6                   .dbline 261
 00D6           ;  LCD_write_String(0,6,14,"              ",0);
 00D6 2224              clr R2
 00D8 2C82              std y+4,R2
 00DA 80E0              ldi R24,<L3
 00DC 90E0              ldi R25,>L3
 00DE 9B83              std y+3,R25
 00E0 8A83              std y+2,R24
 00E2 8EE0              ldi R24,14
 00E4 8883              std y+0,R24
 00E6 26E0              ldi R18,6
 00E8 0027              clr R16
 00EA 40D0              xcall _LCD_write_String
 00EC                   .dbline -2
 00EC           L2:
 00EC 2596              adiw R28,5
 00EE                   .dbline 0 ; func end
 00EE 0895              ret
 00F0                   .dbend
 00F0                   .dbfunc e LCD_set_XY _LCD_set_XY fV
 00F0           ;              Y -> R22
 00F0           ;              X -> R20
                        .even
 00F0           _LCD_set_XY::
 00F0 0E940000          xcall push_gset2
 00F4 622F              mov R22,R18
 00F6 402F              mov R20,R16
 00F8                   .dbline -1
 00F8                   .dbline 281
 00F8           ; /*
 00F8           ; uint16 i;
 00F8           ; LCD_write_byte(0x0c, 0);  // 设定显示模式,正常显示
 00F8           ; LCD_write_byte(0x80, 0);  
 00F8           ; for (i=0; i<504; i++)
 00F8           ;  {
 00F8           ;   LCD_write_byte(0x00, 1);
 00F8           ;  }
 00F8           ;  */
 00F8           ; }
 00F8           ; 
 00F8           ; //=======================================================================
 00F8           ; //LCD_set_XY: 设置LCD坐标函数
 00F8           ; //输入参数:X:0-83
 00F8           ; //Y:0-5
 00F8           ; 
 00F8           ; 
 00F8           ; void LCD_set_XY(uint8 X, uint8 Y)
 00F8           ; 
 00F8           ; {
 00F8                   .dbline 282
 00F8           ; LCD_write_byte(0x40|Y, 0);   // row
 00F8 2227              clr R18
 00FA 062F              mov R16,R22
 00FC 0064              ori R16,64
 00FE 52D0              xcall _LCD_write_byte
 0100                   .dbline 283
 0100           ; LCD_write_byte(0x80|X, 0);   // cloumn
 0100 2227              clr R18
 0102 042F              mov R16,R20
 0104 0068              ori R16,128
 0106 4ED0              xcall _LCD_write_byte
 0108                   .dbline -2
 0108           L4:
 0108 0E940000          xcall pop_gset2
 010C                   .dbline 0 ; func end
 010C 0895              ret
 010E                   .dbsym r Y 22 c
 010E                   .dbsym r X 20 c
 010E                   .dbend
 010E                   .dbfunc e LCD_write_char _LCD_write_char fV
 010E           ;           line -> R20
 010E           ;              N -> R22
 010E           ;              c -> R10
                        .even
 010E           _LCD_write_char::
 010E 0E940000          xcall push_gset3
 0112 622F              mov R22,R18
 0114 A02E              mov R10,R16
 0116                   .dbline -1
 0116                   .dbline 291
 0116           ; }
 0116           ; 
 0116           ; //=======================================================================
 0116           ; //LCD_write_char: 显示英文字符
 0116           ; //输入参数:c:显示的字符;
 0116           ; 
 0116           ; void LCD_write_char(uint8 c,uint8 N)
 0116           ; {
 0116                   .dbline 293
 0116           ; uint8 line;
 0116           ; c -= 32;
 0116 8A2D              mov R24,R10
 0118 8052              subi R24,32
 011A A82E              mov R10,R24
 011C                   .dbline 294
 011C           ; for (line=0; line<6; line++)
 011C 4427              clr R20
 011E 21C0              xjmp L9
 0120           L6:
 0120                   .dbline 295
 0120           ;  {if(N)
 0120                   .dbline 295
 0120 6623              tst R22
 0122 81F0              breq L10
 0124                   .dbline 296
 0124           ;   LCD_write_byte(~font6x8[c][line], 1);
 0124 21E0              ldi R18,1
 0126 86E0              ldi R24,6
 0128 8A9D              mul R24,R10
 012A 1001              movw R2,R0
 012C 80E0              ldi R24,<_font6x8
 012E 90E0              ldi R25,>_font6x8
 0130 280E              add R2,R24
 0132 391E              adc R3,R25
 0134 E42F              mov R30,R20
 0136 FF27              clr R31
 0138 E20D              add R30,R2
 013A F31D              adc R31,R3
 013C 0491              lpm R16,Z
 013E 0095              com R16
 0140 31D0              xcall _LCD_write_byte
 0142 0EC0              xjmp L11
 0144           L10:
 0144                   .dbline 298
 0144           ;   else
 0144           ;   LCD_write_byte(font6x8[c][line], 1);
 0144 21E0              ldi R18,1
 0146 86E0              ldi R24,6
 0148 8A9D              mul R24,R10
 014A 1001              movw R2,R0
 014C 80E0              ldi R24,<_font6x8
 014E 90E0              ldi R25,>_font6x8
 0150 280E              add R2,R24
 0152 391E              adc R3,R25
 0154 E42F              mov R30,R20
 0156 FF27              clr R31
 0158 E20D              add R30,R2
 015A F31D              adc R31,R3
 015C 0491              lpm R16,Z
 015E 22D0              xcall _LCD_write_byte
 0160           L11:
 0160                   .dbline 299
 0160           L7:
 0160                   .dbline 294
 0160 4395              inc R20
 0162           L9:
 0162                   .dbline 294
 0162 4630              cpi R20,6
 0164 E8F2              brlo L6
 0166                   .dbline -2
 0166           L5:
 0166 0E940000          xcall pop_gset3
 016A                   .dbline 0 ; func end
 016A 0895              ret
 016C                   .dbsym r line 20 c
 016C                   .dbsym r N 22 c
 016C                   .dbsym r c 10 c
 016C                   .dbend
 016C                   .dbfunc e LCD_write_String _LCD_write_String fV
 016C           ;              N -> R20
 016C           ;              s -> R22,R23
 016C           ;              l -> R10
 016C           ;              Y -> R14
 016C           ;              X -> R12
                        .even
 016C           _LCD_write_String::
 016C 0E940000          xcall push_gset5
 0170 E22E              mov R14,R18
 0172 C02E              mov R12,R16
 0174 AA84              ldd R10,y+10
 0176 6C85              ldd R22,y+12
 0178 7D85              ldd R23,y+13
 017A 4E85              ldd R20,y+14
 017C                   .dbline -1
 017C                   .dbline 308
 017C           ;  }
 017C           ; }
 017C           ; 
 017C           ; //=======================================================================
 017C           ; //LCD_write_char: 英文字符串显示函数
 017C           ; //输入参数:*s:英文字符串指针;l:显示字符串的长度 ;X、Y: 显示字符串的位置
 017C           ; 
 017C           ; void LCD_write_String(uint8 X,uint8 Y,uint8 l,uint8 *s,uint8 N)
 017C           ; 
 017C           ; {
 017C                   .dbline 309
 017C           ; LCD_set_XY(X,Y);
 017C 2E2D              mov R18,R14
 017E 0C2D              mov R16,R12
 0180 B7DF              xcall _LCD_set_XY
 0182 06C0              xjmp L14
 0184           L13:
 0184                   .dbline 311
 0184                   .dbline 312
 0184 242F              mov R18,R20
 0186 FB01              movw R30,R22
 0188 0081              ldd R16,z+0
 018A C1DF              xcall _LCD_write_char
 018C                   .dbline 313
 018C 6F5F              subi R22,255  ; offset = 1
 018E 7F4F              sbci R23,255
 0190                   .dbline 314
 0190           L14:
 0190                   .dbline 310
 0190           ; while (l--) 
 0190 2A2C              mov R2,R10
 0192 3324              clr R3
 0194 822D              mov R24,R2
 0196 8150              subi R24,1
 0198 A82E              mov R10,R24
 019A 2220              tst R2
 019C 99F7              brne L13
 019E                   .dbline -2
 019E           L12:
 019E 0E940000          xcall pop_gset5
 01A2                   .dbline 0 ; func end
 01A2 0895              ret
 01A4                   .dbsym r N 20 c
 01A4                   .dbsym r s 22 pc
 01A4                   .dbsym r l 10 c
 01A4                   .dbsym r Y 14 c
 01A4                   .dbsym r X 12 c
 01A4                   .dbend
 01A4                   .dbfunc e LCD_write_byte _LCD_write_byte fV
 01A4           ;        command -> R18
 01A4           ;           data -> R16
                        .even
 01A4           _LCD_write_byte::
 01A4                   .dbline -1
 01A4                   .dbline 324
 01A4           ; {
 01A4           ; LCD_write_char(*s,N);
 01A4           ; s++;
 01A4           ; }
 01A4           ; }
 01A4           ; 
 01A4           ; 
 01A4           ; //=======================================================================
 01A4           ; //LCD_write_byte: 使用SPI接口写数据到LCD
 01A4           ; //输入参数:data:写入的数据;command :写数据/命令选择;
 01A4           ; 
 01A4           ; void LCD_write_byte(uint8 data, uint8 command)
 01A4           ; 
 01A4           ; {
 01A4                   .dbline 326
 01A4           ; 
 01A4           ; LCD_port &= ~LCD_CS ;// 使能LCD
 01A4 DE98              cbi 0x1b,6
 01A6                   .dbline 328
 01A6           ; 
 01A6           ; if (command == 1)
 01A6 2130              cpi R18,1
 01A8 11F4              brne L17
 01AA                   .dbline 330
 01AA           ; 
 01AA           ; LCD_port |= LCD_DC ;// 传送数据
 01AA DF9A              sbi 0x1b,7
 01AC 01C0              xjmp L18
 01AE           L17:
 01AE                   .dbline 334
 01AE           ; 
 01AE           ; else
 01AE           ; 
 01AE           ; LCD_port &= ~LCD_DC ;// 传送命令
 01AE DF98              cbi 0x1b,7
 01B0           L18:
 01B0                   .dbline 336
 01B0           ; 
 01B0           ; SPDR = data;// 传送数据到SPI寄存器
 01B0 0FB9              out 0xf,R16
 01B2           L19:
 01B2                   .dbline 339
 01B2                   .dbline 340
 01B2           L20:
 01B2                   .dbline 338
 01B2           ; 
 01B2           ; while ((SPSR & 0x80) == 0)
 01B2 779B              sbis 0xe,7
 01B4 FECF              rjmp L19
 01B6                   .dbline 342
 01B6           ; {
 01B6           ;  }// 等待数据传送完毕
 01B6           ; 
 01B6           ; LCD_port |= LCD_CS ;// 关闭LCD
 01B6 DE9A              sbi 0x1b,6
 01B8                   .dbline -2
 01B8           L16:
 01B8                   .dbline 0 ; func end
 01B8 0895              ret
 01BA                   .dbsym r command 18 c
 01BA                   .dbsym r data 16 c
 01BA                   .dbend
 01BA                   .dbfunc e LCD_write_tubiao _LCD_write_tubiao fV

⌨️ 快捷键说明

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