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

📄 lcd1602.lis

📁 用AVR单片机做的一些程序,包括跑马灯显示,PWM产生,ADC转换等
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 006C           ;       LCD_write_com(0x01);
 006C 01E0              ldi R16,1
 006E E2DF              xcall _LCD_write_com
 0070                   .dbline 70
 0070           ;       delay_ms(5);
 0070 05E0              ldi R16,5
 0072 D1DF              xcall _delay_ms
 0074                   .dbline -2
 0074           L18:
 0074                   .dbline 0 ; func end
 0074 0895              ret
 0076                   .dbend
 0076                   .dbfunc e LCD_write_str _LCD_write_str fV
 0076           ;              s -> R20,R21
 0076           ;              y -> R10
 0076           ;              x -> R22
                        .even
 0076           _LCD_write_str::
 0076 0E940000          xcall push_gset3
 007A A22E              mov R10,R18
 007C 602F              mov R22,R16
 007E 4E81              ldd R20,y+6
 0080 5F81              ldd R21,y+7
 0082                   .dbline -1
 0082                   .dbline 74
 0082           ; }
 0082           ; 
 0082           ; /*显示屏字符串写入函数*/
 0082           ; void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s) {
 0082                   .dbline 76
 0082           ;       
 0082           ;     if (y == 0) {
 0082 AA20              tst R10
 0084 21F4              brne L20
 0086                   .dbline 76
 0086                   .dbline 77
 0086           ;       LCD_write_com(0x80 + x);
 0086 062F              mov R16,R22
 0088 0058              subi R16,128    ; addi 128
 008A D4DF              xcall _LCD_write_com
 008C                   .dbline 78
 008C           ;       }
 008C 09C0              xjmp L23
 008E           L20:
 008E                   .dbline 79
 008E           ;     else {
 008E                   .dbline 80
 008E           ;       LCD_write_com(0xC0 + x);
 008E 062F              mov R16,R22
 0090 0054              subi R16,64    ; addi 192
 0092 D0DF              xcall _LCD_write_com
 0094                   .dbline 81
 0094           ;       }
 0094 05C0              xjmp L23
 0096           L22:
 0096                   .dbline 83
 0096                   .dbline 84
 0096 FA01              movw R30,R20
 0098 0081              ldd R16,z+0
 009A DADF              xcall _LCD_write_data
 009C                   .dbline 85
 009C 4F5F              subi R20,255  ; offset = 1
 009E 5F4F              sbci R21,255
 00A0                   .dbline 86
 00A0           L23:
 00A0                   .dbline 83
 00A0           ;     
 00A0           ;     while (*s) {
 00A0 FA01              movw R30,R20
 00A2 2080              ldd R2,z+0
 00A4 2220              tst R2
 00A6 B9F7              brne L22
 00A8                   .dbline -2
 00A8           L19:
 00A8 0E940000          xcall pop_gset3
 00AC                   .dbline 0 ; func end
 00AC 0895              ret
 00AE                   .dbsym r s 20 pc
 00AE                   .dbsym r y 10 c
 00AE                   .dbsym r x 22 c
 00AE                   .dbend
 00AE                   .dbfunc e LCD_write_char _LCD_write_char fV
 00AE           ;           data -> y+4
 00AE           ;              y -> R22
 00AE           ;              x -> R20
                        .even
 00AE           _LCD_write_char::
 00AE 0E940000          xcall push_gset2
 00B2 622F              mov R22,R18
 00B4 402F              mov R20,R16
 00B6                   .dbline -1
 00B6                   .dbline 90
 00B6           ;       LCD_write_data( *s);
 00B6           ;       s ++;
 00B6           ;       }
 00B6           ; }
 00B6           ; 
 00B6           ; /*显示屏单字符写入函数*/
 00B6           ; void LCD_write_char(unsigned char x,unsigned char y,unsigned char data) {
 00B6                   .dbline 92
 00B6           ;       
 00B6           ;     if (y == 0) {
 00B6 6623              tst R22
 00B8 21F4              brne L26
 00BA                   .dbline 92
 00BA                   .dbline 93
 00BA           ;       LCD_write_com(0x80 + x);
 00BA 042F              mov R16,R20
 00BC 0058              subi R16,128    ; addi 128
 00BE BADF              xcall _LCD_write_com
 00C0                   .dbline 94
 00C0           ;       }
 00C0 03C0              xjmp L27
 00C2           L26:
 00C2                   .dbline 95
 00C2           ;     else {
 00C2                   .dbline 96
 00C2           ;       LCD_write_com(0xC0 + x);
 00C2 042F              mov R16,R20
 00C4 0054              subi R16,64    ; addi 192
 00C6 B6DF              xcall _LCD_write_com
 00C8                   .dbline 97
 00C8           ;       }
 00C8           L27:
 00C8                   .dbline 99
 00C8           ;     
 00C8           ;     LCD_write_data( data);  
 00C8 0C81              ldd R16,y+4
 00CA C2DF              xcall _LCD_write_data
 00CC                   .dbline -2
 00CC           L25:
 00CC 0E940000          xcall pop_gset2
 00D0                   .dbline 0 ; func end
 00D0 0895              ret
 00D2                   .dbsym l data 4 c
 00D2                   .dbsym r y 22 c
 00D2                   .dbsym r x 20 c
 00D2                   .dbend
 00D2                   .dbfunc e LCD_init _LCD_init fV
                        .even
 00D2           _LCD_init::
 00D2                   .dbline -1
 00D2                   .dbline 103
 00D2           ; }
 00D2           ; 
 00D2           ; /*显示屏初始化函数*/
 00D2           ; void LCD_init(void) {
 00D2                   .dbline 105
 00D2           ;       
 00D2           ;       DDRA = 0xFF;                                            /*I/O口方向设置*/
 00D2 8FEF              ldi R24,255
 00D4 8ABB              out 0x1a,R24
 00D6                   .dbline 106
 00D6           ;       DDRC = 0xFF;
 00D6 84BB              out 0x14,R24
 00D8                   .dbline 107
 00D8           ;       LCD_write_com(0x38);                            /*显示模式设置*/
 00D8 08E3              ldi R16,56
 00DA ACDF              xcall _LCD_write_com
 00DC                   .dbline 108
 00DC           ;       delay_ms(5);
 00DC 05E0              ldi R16,5
 00DE 9BDF              xcall _delay_ms
 00E0                   .dbline 109
 00E0           ;       LCD_write_com(0x38);
 00E0 08E3              ldi R16,56
 00E2 A8DF              xcall _LCD_write_com
 00E4                   .dbline 110
 00E4           ;       delay_ms(5);
 00E4 05E0              ldi R16,5
 00E6 97DF              xcall _delay_ms
 00E8                   .dbline 111
 00E8           ;       LCD_write_com(0x38);
 00E8 08E3              ldi R16,56
 00EA A4DF              xcall _LCD_write_com
 00EC                   .dbline 112
 00EC           ;       delay_ms(5);
 00EC 05E0              ldi R16,5
 00EE 93DF              xcall _delay_ms
 00F0                   .dbline 113
 00F0           ;       LCD_write_com(0x38);
 00F0 08E3              ldi R16,56
 00F2 A0DF              xcall _LCD_write_com
 00F4                   .dbline 115
 00F4           ;       
 00F4           ;       LCD_write_com(0x08);                            /*显示关闭*/
 00F4 08E0              ldi R16,8
 00F6 9EDF              xcall _LCD_write_com
 00F8                   .dbline 116
 00F8           ;       LCD_write_com(0x01);                            /*显示清屏*/
 00F8 01E0              ldi R16,1
 00FA 9CDF              xcall _LCD_write_com
 00FC                   .dbline 117
 00FC           ;       LCD_write_com(0x06);                            /*显示光标移动设置*/
 00FC 06E0              ldi R16,6
 00FE 9ADF              xcall _LCD_write_com
 0100                   .dbline 118
 0100           ;       delay_ms(5);
 0100 05E0              ldi R16,5
 0102 89DF              xcall _delay_ms
 0104                   .dbline 119
 0104           ;       LCD_write_com(0x0C);                            /*显示开及光标设置*/
 0104 0CE0              ldi R16,12
 0106 96DF              xcall _LCD_write_com
 0108                   .dbline -2
 0108           L28:
 0108                   .dbline 0 ; func end
 0108 0895              ret
 010A                   .dbend

⌨️ 快捷键说明

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