📄 lcd1602new.lis
字号:
0068 ; { //设定显示位置
0068 .dbline 101
0068 ; write_command(pos | 0x80);
0068 042F mov R16,R20
006A 0068 ori R16,128
006C ECDF xcall _write_command
006E .dbline -2
006E L14:
006E 0E940000 xcall pop_gset1
0072 .dbline 0 ; func end
0072 0895 ret
0074 .dbsym r pos 20 c
0074 .dbend
0074 .dbfunc e write_data _write_data fV
0074 ; dat -> R20
.even
0074 _write_data::
0074 0E940000 xcall push_gset1
0078 402F mov R20,R16
007A .dbline -1
007A .dbline 112
007A ; }
007A ;
007A ; /****************************************************************************
007A ; 函数功能:写入显示数据到LCD
007A ; 作 者:沈建良
007A ; 时 间:2006年4月25日
007A ; 入口参数:dat
007A ; 出口参数:
007A ; ****************************************************************************/
007A ; void write_data(unsigned char dat)
007A ; {
007A .dbline 113
007A ; LCD_wait();
007A D9DF xcall _LCD_wait
007C .dbline 116
007C ; //delay(100);
007C ; //DDRC=0xff;
007C ; Dion;
007C C59A sbi 0x18,5
007E .dbline 116
007E .dbline 117
007E ; RWoff;
007E C498 cbi 0x18,4
0080 .dbline 117
0080 .dbline 118
0080 ; Enableoff;
0080 C398 cbi 0x18,3
0082 .dbline 118
0082 .dbline 120
0082 ; //delay(10);
0082 ; NOP();
0082 0000 nop
0084 .dbline 121
0084 ; Enableon;
0084 C39A sbi 0x18,3
0086 .dbline 121
0086 .dbline 124
0086 ; //delay(10);
0086 ;
0086 ; PORTC=dat;
0086 45BB out 0x15,R20
0088 .dbline 128
0088 ; //delay(10);
0088 ; //Enableon;
0088 ; //delay(10);
0088 ; Enableoff;
0088 C398 cbi 0x18,3
008A .dbline 128
008A .dbline -2
008A L15:
008A 0E940000 xcall pop_gset1
008E .dbline 0 ; func end
008E 0895 ret
0090 .dbsym r dat 20 c
0090 .dbend
0090 .dbfunc e lcd_init _lcd_init fV
.even
0090 _lcd_init::
0090 .dbline -1
0090 .dbline 139
0090 ; }
0090 ;
0090 ; /****************************************************************************
0090 ; 函数功能:LCD初始化
0090 ; 作 者:沈建良
0090 ; 时 间:2006年4月25日
0090 ; 入口参数:
0090 ; 出口参数:
0090 ; ****************************************************************************/
0090 ; void lcd_init(void)
0090 ; {
0090 .dbline 140
0090 ; delay(15); //LCD初始化设定
0090 0FE0 ldi R16,15
0092 B6DF xcall _delay
0094 .dbline 141
0094 ; write_command(0x38); //
0094 08E3 ldi R16,56
0096 D7DF xcall _write_command
0098 .dbline 142
0098 ; delay(100);
0098 04E6 ldi R16,100
009A B2DF xcall _delay
009C .dbline 143
009C ; write_command(0x01); //清除LCD的显示内容
009C 01E0 ldi R16,1
009E D3DF xcall _write_command
00A0 .dbline 144
00A0 ; write_command(0x06); //
00A0 06E0 ldi R16,6
00A2 D1DF xcall _write_command
00A4 .dbline 145
00A4 ; write_command(0x0c); //
00A4 0CE0 ldi R16,12
00A6 CFDF xcall _write_command
00A8 .dbline -2
00A8 L16:
00A8 .dbline 0 ; func end
00A8 0895 ret
00AA .dbend
00AA .dbfunc e main _main fV
00AA ; i -> R20
.even
00AA _main::
00AA .dbline -1
00AA .dbline 156
00AA ; }
00AA ;
00AA ; /****************************************************************************
00AA ; 函数功能:主程序
00AA ; 作 者:沈建良
00AA ; 时 间:2006年4月25日
00AA ; 入口参数:
00AA ; 出口参数:
00AA ; ****************************************************************************/
00AA ; void main(void)
00AA ; {
00AA .dbline 158
00AA ; char i;
00AA ; DDRC=0xff;
00AA 8FEF ldi R24,255
00AC 84BB out 0x14,R24
00AE .dbline 159
00AE ; DDRB=0xff;
00AE 87BB out 0x17,R24
00B0 .dbline 160
00B0 ; lcd_init(); // 初始化LCD
00B0 EFDF xcall _lcd_init
00B2 .dbline 161
00B2 ; delay(100);
00B2 04E6 ldi R16,100
00B4 A5DF xcall _delay
00B6 .dbline 162
00B6 ; lcd_pos(1); // 设置显示位置为第一行的第5个字符
00B6 01E0 ldi R16,1
00B8 D4DF xcall _lcd_pos
00BA .dbline 163
00BA ; i = 0;
00BA 4427 clr R20
00BC 28C0 xjmp L19
00BE X0:
00BE .dbline 164
00BE ; while(1){
00BE L21:
00BE .dbline 167
00BE .dbline 168
00BE 80E0 ldi R24,<_dis1
00C0 90E0 ldi R25,>_dis1
00C2 E42F mov R30,R20
00C4 FF27 clr R31
00C6 E80F add R30,R24
00C8 F91F adc R31,R25
00CA 0491 lpm R16,Z
00CC D3DF xcall _write_data
00CE .dbline 169
00CE 4395 inc R20
00D0 .dbline 170
00D0 L22:
00D0 .dbline 166
00D0 ;
00D0 ; while(dis1[i] != '\0')
00D0 80E0 ldi R24,<_dis1
00D2 90E0 ldi R25,>_dis1
00D4 E42F mov R30,R20
00D6 FF27 clr R31
00D8 E80F add R30,R24
00DA F91F adc R31,R25
00DC E491 lpm R30,Z
00DE EE23 tst R30
00E0 71F7 brne L21
00E2 .dbline 171
00E2 ; { // 显示字符hificat.com
00E2 ; write_data(dis1[i]);
00E2 ; i++;
00E2 ; }
00E2 ; lcd_pos(0x41); // 设置显示位置为第二行第二个字符
00E2 01E4 ldi R16,65
00E4 BEDF xcall _lcd_pos
00E6 .dbline 172
00E6 ; i = 0;
00E6 4427 clr R20
00E8 09C0 xjmp L25
00EA L24:
00EA .dbline 174
00EA .dbline 175
00EA 80E0 ldi R24,<_dis2
00EC 90E0 ldi R25,>_dis2
00EE E42F mov R30,R20
00F0 FF27 clr R31
00F2 E80F add R30,R24
00F4 F91F adc R31,R25
00F6 0491 lpm R16,Z
00F8 BDDF xcall _write_data
00FA .dbline 176
00FA 4395 inc R20
00FC .dbline 177
00FC L25:
00FC .dbline 173
00FC 80E0 ldi R24,<_dis2
00FE 90E0 ldi R25,>_dis2
0100 E42F mov R30,R20
0102 FF27 clr R31
0104 E80F add R30,R24
0106 F91F adc R31,R25
0108 E491 lpm R30,Z
010A EE23 tst R30
010C 71F7 brne L24
010E .dbline 178
010E L19:
010E .dbline 164
010E E0CF xjmp L22
0110 X1:
0110 .dbline -2
0110 L17:
0110 .dbline 0 ; func end
0110 0895 ret
0112 .dbsym r i 20 c
0112 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -