📄 main.lis
字号:
0094 .dbline 78
0094 ;
0094 ; wait();
0094 E9DF rcall _wait
0096 .dbline 79
0096 ; PORTB = ((0<<PB0)|(0<<PB1)); //RW = 0 WRITE RS =0 INSTRUCTION
0096 2224 clr R2
0098 28BA out 0x18,R2
009A .dbline 80
009A ; DDRD = 0xff;
009A 8FEF ldi R24,255
009C 81BB out 0x11,R24
009E .dbline 81
009E ; PORTD = i;
009E 42BB out 0x12,R20
00A0 .dbline 85
00A0 ; //setbit(PORTC,PC1);
00A0 ; //NOP();
00A0 ; //clrbit(PORTC,PC1);
00A0 ; PORTC = (1<<PC1); //E = 1
00A0 82E0 ldi R24,2
00A2 85BB out 0x15,R24
00A4 .dbline 86
00A4 ; NOP();
00A4 0000 nop
00A6 .dbline 87
00A6 ; PORTC = (0<<PC1); //E = 0
00A6 25BA out 0x15,R2
00A8 .dbline -2
00A8 .dbline 88
00A8 ; }
00A8 L25:
00A8 00D0 rcall pop_gset1
00AA .dbline 0 ; func end
00AA 0895 ret
00AC .dbsym r i 20 c
00AC .dbend
00AC .dbfunc e send_d _send_d fV
00AC ; d -> R20
.even
00AC _send_d::
00AC 00D0 rcall push_gset1
00AE 402F mov R20,R16
00B0 .dbline -1
00B0 .dbline 91
00B0 ;
00B0 ; void send_d(uchar d)
00B0 ; {
00B0 .dbline 92
00B0 ; DDRB = ((1<<PB0)|(1<<PB1));
00B0 83E0 ldi R24,3
00B2 87BB out 0x17,R24
00B4 .dbline 93
00B4 ; DDRC = 1<<PC1;
00B4 82E0 ldi R24,2
00B6 84BB out 0x14,R24
00B8 .dbline 95
00B8 ;
00B8 ; wait();
00B8 D7DF rcall _wait
00BA .dbline 96
00BA ; PORTB = ((0<<PB0)|(1<<PB1)); //RW = 0 WRITE RS =1 DATA
00BA 82E0 ldi R24,2
00BC 88BB out 0x18,R24
00BE .dbline 97
00BE ; DDRD = 0xff;
00BE 8FEF ldi R24,255
00C0 81BB out 0x11,R24
00C2 .dbline 98
00C2 ; PORTD = d;
00C2 42BB out 0x12,R20
00C4 .dbline 99
00C4 ; PORTC = (1<<PC1); //E = 1
00C4 82E0 ldi R24,2
00C6 85BB out 0x15,R24
00C8 .dbline 100
00C8 ; NOP();
00C8 0000 nop
00CA .dbline 101
00CA ; PORTC = (0<<PC1); //E = 0
00CA 2224 clr R2
00CC 25BA out 0x15,R2
00CE .dbline -2
00CE .dbline 105
00CE ; //setbit(PORTC,PC1);
00CE ; //NOP();
00CE ; //clrbit(PORTC,PC1);
00CE ; }
00CE L26:
00CE 00D0 rcall pop_gset1
00D0 .dbline 0 ; func end
00D0 0895 ret
00D2 .dbsym r d 20 c
00D2 .dbend
00D2 .dbfunc e lw _lw fV
00D2 ; d -> y+4
00D2 ; y -> R22
00D2 ; x -> R20
.even
00D2 _lw::
00D2 00D0 rcall push_gset2
00D4 622F mov R22,R18
00D6 402F mov R20,R16
00D8 .dbline -1
00D8 .dbline 108
00D8 ;
00D8 ; void lw(uchar x,uchar y,uchar d)
00D8 ; {
00D8 .dbline 109
00D8 ; send_i(0xB8|y);
00D8 062F mov R16,R22
00DA 086B ori R16,184
00DC D5DF rcall _send_i
00DE .dbline 110
00DE ; send_i(0x40|x);
00DE 042F mov R16,R20
00E0 0064 ori R16,64
00E2 D2DF rcall _send_i
00E4 .dbline 111
00E4 ; send_d(d);
00E4 0C81 ldd R16,y+4
00E6 E2DF rcall _send_d
00E8 .dbline -2
00E8 .dbline 113
00E8 ; //PORTD = 0xff;
00E8 ; }
00E8 L27:
00E8 00D0 rcall pop_gset2
00EA .dbline 0 ; func end
00EA 0895 ret
00EC .dbsym l d 4 c
00EC .dbsym r y 22 c
00EC .dbsym r x 20 c
00EC .dbend
00EC .dbfunc e lcd_init _lcd_init fV
00EC ; y -> <dead>
00EC ; x -> <dead>
.even
00EC _lcd_init::
00EC .dbline -1
00EC .dbline 116
00EC ;
00EC ; void lcd_init(void)
00EC ; {
00EC .dbline 118
00EC ; uchar x,y;
00EC ; delay(100); //>40ms 800
00EC 04E6 ldi R16,100
00EE 10E0 ldi R17,0
00F0 90DF rcall _delay
00F2 .dbline 120
00F2 ;
00F2 ; send_i(0x30); //select basic instruction
00F2 00E3 ldi R16,48
00F4 C9DF rcall _send_i
00F6 .dbline 121
00F6 ; delay(10); //>100us
00F6 0AE0 ldi R16,10
00F8 10E0 ldi R17,0
00FA 8BDF rcall _delay
00FC .dbline 122
00FC ; send_i(0x30); //set basic mode
00FC 00E3 ldi R16,48
00FE C4DF rcall _send_i
0100 .dbline 123
0100 ; delay(10); //>37us
0100 0AE0 ldi R16,10
0102 10E0 ldi R17,0
0104 86DF rcall _delay
0106 .dbline 124
0106 ; send_i(0x0c); //turn on lcd 0c
0106 0CE0 ldi R16,12
0108 BFDF rcall _send_i
010A .dbline 125
010A ; delay(10); //>100us
010A 0AE0 ldi R16,10
010C 10E0 ldi R17,0
010E 81DF rcall _delay
0110 .dbline 126
0110 ; send_i(0x01); //clr screen text
0110 01E0 ldi R16,1
0112 BADF rcall _send_i
0114 .dbline 127
0114 ; delay(20); //>10ms
0114 04E1 ldi R16,20
0116 10E0 ldi R17,0
0118 7CDF rcall _delay
011A .dbline 128
011A ; send_i(0x06); //enter dot setup 06
011A 06E0 ldi R16,6
011C .dbline -2
011C .dbline 129
011C ; }
011C L28:
011C .dbline 0 ; func end
011C B5CF rjmp _send_i
011E .dbsym l y 1 c
011E .dbsym l x 1 c
011E .dbend
011E .dbfunc e putstring _putstring fV
011E ; j -> R20
011E ; str -> R20,R21
011E ; addr -> R22
.even
011E _putstring::
011E 00D0 rcall push_gset2
0120 A901 movw R20,R18
0122 602F mov R22,R16
0124 .dbline -1
0124 .dbline 132
0124 ;
0124 ; void putstring(uchar addr,uchar *str)
0124 ; {
0124 .dbline 134
0124 ; uchar j;
0124 ; send_i(addr|0x80);
0124 062F mov R16,R22
0126 0068 ori R16,128
0128 AFDF rcall _send_i
012A .dbline 135
012A ; for(j=0;j<3;j++)
012A 4427 clr R20
012C 09C0 rjmp L33
012E L30:
012E .dbline 136
012E .dbline 137
012E 80E0 ldi R24,<_exampl
0130 90E0 ldi R25,>_exampl
0132 E42F mov R30,R20
0134 FF27 clr R31
0136 E80F add R30,R24
0138 F91F adc R31,R25
013A 0081 ldd R16,z+0
013C B7DF rcall _send_d
013E .dbline 138
013E L31:
013E .dbline 135
013E 4395 inc R20
0140 L33:
0140 .dbline 135
0140 4330 cpi R20,3
0142 A8F3 brlo L30
0144 .dbline -2
0144 .dbline 139
0144 ; {
0144 ; send_d(exampl[j]);
0144 ; }
0144 ; }
0144 L29:
0144 00D0 rcall pop_gset2
0146 .dbline 0 ; func end
0146 0895 ret
0148 .dbsym r j 20 c
0148 .dbsym r str 20 pc
0148 .dbsym r addr 22 c
0148 .dbend
0148 .dbfunc e locateXY _locateXY fV
0148 ; temp -> R20
0148 ; posy -> R22
0148 ; posx -> R20
.even
0148 _locateXY::
0148 00D0 rcall push_gset2
014A 622F mov R22,R18
014C 402F mov R20,R16
014E .dbline -1
014E .dbline 145
014E ;
014E ; /*=======================================================
014E ; 显示光标定位
014E ; =======================================================*/
014E ;
014E ; void locateXY( uchar posx,uchar posy) {
014E .dbline 149
014E ;
014E ; uchar temp;
014E ;
014E ; temp = posx & 0xf;
014E 4F70 andi R20,15
0150 .dbline 150
0150 ; posy &= 0x1;
0150 6170 andi R22,1
0152 .dbline 151
0152 ; if ( posy )temp |= 0x40;
0152 09F0 breq L35
0154 .dbline 151
0154 4064 ori R20,64
0156 L35:
0156 .dbline 152
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -