?? 洗衣機.lis
字號:
00DA 8057 subi R24,112 ; addi 144
00DC 8883 std y+0,R24
00DE 2227 clr R18
00E0 0027 clr R16
00E2 47D0 xcall _W_1byte
00E4 .dbline 92
00E4 0DC0 xjmp L15
00E6 L19:
00E6 .dbline 93
00E6 ; case 2:W_1byte(0,0,(0x88+x));break;
00E6 842F mov R24,R20
00E8 8857 subi R24,120 ; addi 136
00EA 8883 std y+0,R24
00EC 2227 clr R18
00EE 0027 clr R16
00F0 40D0 xcall _W_1byte
00F2 .dbline 93
00F2 06C0 xjmp L15
00F4 L20:
00F4 .dbline 94
00F4 ; case 3:W_1byte(0,0,(0x98+x));break;
00F4 842F mov R24,R20
00F6 8856 subi R24,104 ; addi 152
00F8 8883 std y+0,R24
00FA 2227 clr R18
00FC 0027 clr R16
00FE 39D0 xcall _W_1byte
0100 .dbline 94
0100 .dbline 95
0100 ; default:break;
0100 L15:
0100 .dbline 97
0100 ; }
0100 ; nop();
0100 0000 nop
0102 .dbline -2
0102 L13:
0102 .dbline 0 ; func end
0102 2196 adiw R28,1
0104 0C940000 xjmp pop_xgsetF00C
0108 .dbsym r y 10 c
0108 .dbsym r x 20 c
0108 .dbend
0108 .dbfunc e Display_init _Display_init fV
.even
0108 _Display_init::
0108 .dbline -1
0108 .dbline 101
0108 ; }
0108 ;
0108 ; void Display_init(void)
0108 ; {
0108 .dbline 102
0108 ; Clr_CS();
0108 D09A sbi 0x1a,0
010A .dbline 102
010A D898 cbi 0x1b,0
010C .dbline 103
010C ; Clr_SID();
010C D19A sbi 0x1a,1
010E .dbline 103
010E D998 cbi 0x1b,1
0110 .dbline 104
0110 ; Clr_SCLK();
0110 D29A sbi 0x1a,2
0112 .dbline 104
0112 DA98 cbi 0x1b,2
0114 .dbline 105
0114 ; LCD_Init();
0114 01D0 xcall _LCD_Init
0116 .dbline -2
0116 L21:
0116 .dbline 0 ; func end
0116 0895 ret
0118 .dbend
0118 .dbfunc e LCD_Init _LCD_Init fV
0118 ; cmd -> R20
.even
0118 _LCD_Init::
0118 4A93 st -y,R20
011A 2197 sbiw R28,1
011C .dbline -1
011C .dbline 140
011C ; /* //while(1){
011C ; nop();
011C ; nop();
011C ; W_1byte(0,0,0x80); //顯示的地址0x80
011C ; nop();
011C ; for(i=0;mynew1[i]!='\0';i++)
011C ; {
011C ; W_1byte(0,1,mynew1[i]);
011C ; }
011C ; W_1byte(0,0,0x90); //顯示的地址0x90
011C ; for(i=0;mynew2[i]!='\0';i++)
011C ; {
011C ; W_1byte(0,1,mynew2[i]);
011C ; }
011C ; W_1byte(0,0,0x88); //顯示的地址0x88
011C ; for(i=0;mynew3[i]!='\0';i++)
011C ; {
011C ; W_1byte(0,1,mynew3[i]);
011C ; }
011C ; W_1byte(0,0,0x98); //顯示的地址0x98
011C ; for(i=0;mynew4[i]!='\0';i++)
011C ; {
011C ; W_1byte(0,1,mynew4[i]);
011C ; }
011C ; nop();
011C ; // for(;;)
011C ; // {
011C ; // continue;
011C ; // }
011C ; // }
011C ; */
011C ; }
011C ; /******************************************************************/
011C ; void LCD_Init(void)
011C ; {
011C .dbline 142
011C ; uchar cmd;
011C ; cmd=0x30; //功能設置 8位數(shù)據(jù),基本指令
011C 40E3 ldi R20,48
011E .dbline 143
011E ; W_1byte(0,0,cmd);
011E 4883 std y+0,R20
0120 2227 clr R18
0122 0027 clr R16
0124 26D0 xcall _W_1byte
0126 .dbline 144
0126 ; Delay(2);
0126 02E0 ldi R16,2
0128 10E0 ldi R17,0
012A 9AD0 xcall _Delay
012C .dbline 145
012C ; cmd=0x0C; //顯示狀態(tài) ON,游標OFF,反白OFF
012C 4CE0 ldi R20,12
012E .dbline 146
012E ; W_1byte(0,0,cmd); //寫指令
012E 4883 std y+0,R20
0130 2227 clr R18
0132 0027 clr R16
0134 1ED0 xcall _W_1byte
0136 .dbline 147
0136 ; Delay(2);
0136 02E0 ldi R16,2
0138 10E0 ldi R17,0
013A 92D0 xcall _Delay
013C .dbline 148
013C ; cmd=0x01; //清除顯示
013C 41E0 ldi R20,1
013E .dbline 149
013E ; W_1byte(0,0,cmd); //寫指令
013E 4883 std y+0,R20
0140 2227 clr R18
0142 0027 clr R16
0144 16D0 xcall _W_1byte
0146 .dbline 150
0146 ; Delay(2);
0146 02E0 ldi R16,2
0148 10E0 ldi R17,0
014A 8AD0 xcall _Delay
014C .dbline 151
014C ; cmd=0x02; //地址歸位
014C 42E0 ldi R20,2
014E .dbline 152
014E ; W_1byte(0,0,cmd); //寫指令
014E 4883 std y+0,R20
0150 2227 clr R18
0152 0027 clr R16
0154 0ED0 xcall _W_1byte
0156 .dbline 153
0156 ; Delay(2);
0156 02E0 ldi R16,2
0158 10E0 ldi R17,0
015A 82D0 xcall _Delay
015C .dbline 154
015C ; cmd=0x80; //設置DDRAM地址
015C 40E8 ldi R20,128
015E .dbline 155
015E ; W_1byte(0,0,cmd); //寫指令
015E 4883 std y+0,R20
0160 2227 clr R18
0162 0027 clr R16
0164 06D0 xcall _W_1byte
0166 .dbline 156
0166 ; Delay(2); //延時
0166 02E0 ldi R16,2
0168 10E0 ldi R17,0
016A 7AD0 xcall _Delay
016C .dbline -2
016C L22:
016C .dbline 0 ; func end
016C 2196 adiw R28,1
016E 4991 ld R20,y+
0170 0895 ret
0172 .dbsym r cmd 20 c
0172 .dbend
0172 .dbfunc e W_1byte _W_1byte fV
0172 ; H_data -> R22,R23
0172 ; S_ID -> R10,R11
0172 ; L_data -> R20,R21
0172 ; W_data -> R12
0172 ; RS -> R14
0172 ; RW -> R20
.even
0172 _W_1byte::
0172 0E940000 xcall push_xgsetF0FC
0176 E22E mov R14,R18
0178 402F mov R20,R16
017A CA84 ldd R12,y+10
017C .dbline -1
017C .dbline 172
017C ; }
017C ; /*******************************************************************
017C ; 函 數(shù) 名:W_1byte
017C ; 入口參數(shù):RW、RS、W_data
017C ; 出口參數(shù):無
017C ; 建立日期:2007年3月3日
017C ; 修改日期:
017C ; 函數(shù)作用:寫一個字節(jié)的數(shù)據(jù)到12864液晶,包括指令和數(shù)據(jù)
017C ; 說 明:RW=1,從液晶讀數(shù)據(jù)到MCU;RW=0,寫一個數(shù)據(jù)到液晶;
017C ; (一般RW都設為0,即只向液晶寫數(shù)據(jù),不讀數(shù)據(jù))
017C ; RS=1,寫入的是數(shù)據(jù);RS=0,寫入的是指令;
017C ; 一般模式:RW=0,RS=1;寫數(shù)據(jù)
017C ; RW=0,RS=0;寫指令
017C ; ********************************************************************/
017C ; void W_1byte(uchar RW, uchar RS, uchar W_data)
017C ; {
017C .dbline 173
017C ; uint H_data,L_data,S_ID = 0xf8; //11111RWRS0
017C 88EF ldi R24,248
017E 90E0 ldi R25,0
0180 5C01 movw R10,R24
0182 .dbline 174
0182 ; nop();
0182 0000 nop
0184 .dbline 175
0184 ; if(RW == 0)
0184 4423 tst R20
0186 19F4 brne L24
0188 X9:
0188 .dbline 176
0188 ; {
0188 .dbline 177
0188 ; S_ID &=~ 0x04;
0188 8B7F andi R24,251
018A 5C01 movw R10,R24
018C .dbline 178
018C ; }
018C 03C0 xjmp L25
018E L24:
018E .dbline 180
018E ; else //if(RW==1)
018E ; {
018E .dbline 181
018E ; S_ID |= 0X04;
018E C501 movw R24,R10
0190 8460 ori R24,4
0192 5C01 movw R10,R24
0194 .dbline 182
0194 ; }
0194 L25:
0194 .dbline 183
0194 ; if(RS == 0)
0194 EE20 tst R14
0196 21F4 brne L26
0198 X10:
0198 .dbline 184
0198 ; {
0198 .dbline 185
0198 ; S_ID &=~ 0x02;
0198 C501 movw R24,R10
019A 8D7F andi R24,253
019C 5C01 movw R10,R24
019E .dbline 186
019E ; }
019E 03C0 xjmp L27
01A0 L26:
01A0 .dbline 188
01A0 ; else //if(RS==1)
01A0 ; {
01A0 .dbline 189
01A0 ; S_ID |= 0X02;
01A0 C501 movw R24,R10
01A2 8260 ori R24,2
01A4 5C01 movw R10,R24
01A6 .dbline 190
01A6 ; }
01A6 L27:
01A6 .dbline 191
01A6 ; H_data = W_data;
01A6 6C2D mov R22,R12
01A8 7727 clr R23
01AA .dbline 192
01AA ; H_data &= 0xf0; //屏蔽低4位的數(shù)據(jù)
01AA 607F andi R22,240
01AC 7070 andi R23,0
01AE .dbline 193
01AE ; L_data = W_data; //xxxx0000格式
01AE 4C2D mov R20,R12
01B0 5527 clr R21
01B2 .dbline 194
01B2 ; L_data &= 0x0f; //屏蔽高4位的數(shù)據(jù)
01B2 4F70 andi R20,15
01B4 5070 andi R21,0
01B6 .dbline 195
01B6 ; L_data <<= 4; //xxxx0000格式
01B6 440F lsl R20
01B8 551F rol R21
01BA 440F lsl R20
01BC 551F rol R21
01BE 440F lsl R20
01C0 551F rol R21
01C2 440F lsl R20
01C4 551F rol R21
01C6 .dbline 196
01C6 ; Set_CS();
01C6 D09A sbi 0x1a,0
01C8 .dbline 196
01C8 D89A sbi 0x1b,0
01CA .dbline 197
01CA ; Write_8bits(S_ID); //發(fā)送S_ID
01CA 8501 movw R16,R10
01CC 08D0 xcall _Write_8bits
01CE .dbline 198
01CE ; Write_8bits(H_data); //發(fā)送H_data
01CE 8B01 movw R16,R22
01D0 06D0 xcall _Write_8bits
01D2 .dbline 199
01D2 ; Write_8bits(L_data); //發(fā)送L_data
01D2 8A01 movw R16,R20
01D4 04D0 xcall _Write_8bits
01D6 .dbline 200
01D6 ; Clr_CS();
01D6 D09A sbi 0x1a,0
01D8 .dbline 200
01D8 D898 cbi 0x1b,0
01DA .dbline -2
01DA L23:
01DA .dbline 0 ; func end
01DA 0C940000 xjmp pop_xgsetF0FC
01DE .dbsym r H_data 22 i
01DE .dbsym r S_ID 10 i
01DE .dbsym r L_data 20 i
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -