📄 ledtest.lis
字号:
0116 90E0 ldi R25,0
0118 8417 cp R24,R20
011A 9507 cpc R25,R21
011C 44F7 brge L9
011E .dbline 96
011E ; {
011E ; PORTG &= 0x04;
011E ; PORTG ^= 0X01;
011E ; PORTG ^= 0x02;
011E ; }
011E ; //=============================
011E ;
011E ; df_init(); //端口初始化
011E 0E940000 xcall _df_init
0122 .dbline 97
0122 ; j=0;
0122 6627 clr R22
0124 7727 clr R23
0126 .dbline 119
0126 ; /*kl:
0126 ; for(i=0;i<512;i++)
0126 ; xx[i]=3; //初始化
0126 ;
0126 ; //测试写
0126 ; df_write_open(4099*Field);
0126 ; //for(i=0;i<5;i++)
0126 ; // {
0126 ; df_write(xx,512);
0126 ; // }
0126 ; df_write_close();
0126 ; j++;
0126 ;
0126 ; if(j<10)
0126 ; {
0126 ; goto kl;
0126 ; }
0126 ;
0126 ; */
0126 ; // Write_page(2049,0,xx,512); //读页 一 页地址, 二页内地址, 三 数组存放取出来的数, 四 取多少个字节
0126 ; //=============================================
0126 ; df_read_open(4099*Field);
0126 20910200 lds R18,_Field
012A 30910300 lds R19,_Field+1
012E 03E0 ldi R16,4099
0130 10E1 ldi R17,16
0132 0E940000 xcall empy16s
0136 0E940000 xcall _df_read_open
013A .dbline 122
013A ; // for(j=0;j<5;j++)
013A ; // {
013A ; df_read(xx,512);
013A 20E0 ldi R18,512
013C 32E0 ldi R19,2
013E 00E0 ldi R16,<_xx
0140 10E0 ldi R17,>_xx
0142 0E940000 xcall _df_read
0146 .dbline 129
0146 ; // }
0146 ; // df_read_close();
0146 ; // Page_Scrape(2049); //页擦除
0146 ; // Read_Page(2049,0,xx,512); //读页 一 页地址, 二页内地址, 三 数组存放取出来的数, 四 取多少个字节
0146 ; // df_read(1,1,xx,128);
0146 ;
0146 ; ShowNumber(0,0,512,xx);
0146 80E0 ldi R24,<_xx
0148 90E0 ldi R25,>_xx
014A 9B83 std y+3,R25
014C 8A83 std y+2,R24
014E 80E0 ldi R24,512
0150 92E0 ldi R25,2
0152 9983 std y+1,R25
0154 8883 std y+0,R24
0156 2227 clr R18
0158 3327 clr R19
015A 0027 clr R16
015C 1127 clr R17
015E 2DD1 xcall _ShowNumber
0160 L13:
0160 .dbline 133
0160 .dbline 134
0160 .dbline 135
0160 L14:
0160 .dbline 132
0160 FFCF xjmp L13
0162 X0:
0162 .dbline -2
0162 L7:
0162 2496 adiw R28,4
0164 .dbline 0 ; func end
0164 0895 ret
0166 .dbsym l readXDIV 5 c
0166 .dbsym r j 22 I
0166 .dbsym r i 20 I
0166 .dbend
0166 .dbfunc e initLCDM _initLCDM fV
.even
0166 _initLCDM::
0166 .dbline -1
0166 .dbline 139
0166 ;
0166 ; //=========================
0166 ; while(1)
0166 ; {
0166 ; ;// portout = 0xaa;
0166 ; }
0166 ; }
0166 ; //============================
0166 ; void initLCDM(void)
0166 ; {
0166 .dbline 140
0166 ; PORTF |= 0XFF;
0166 80916200 lds R24,98
016A 8F6F ori R24,255
016C 80936200 sts 98,R24
0170 .dbline 141
0170 ; SetCS;
0170 969A sbi 0x12,6
0172 .dbline 141
0172 .dbline 142
0172 ; SetRD;
0172 959A sbi 0x12,5
0174 .dbline 142
0174 .dbline 143
0174 ; SetWR;
0174 979A sbi 0x12,7
0176 .dbline 143
0176 .dbline 144
0176 ; SetRS;
0176 189A sbi 0x3,0
0178 .dbline 144
0178 .dbline 151
0178 ; // SetRST;
0178 ; //delay_ms(30);
0178 ; //ClrRST;
0178 ; //delay_ms(800);
0178 ; // SetRST;
0178 ; //delay_ms(10);//
0178 ; SdCmd(0xa0,0x07); LCD_ChkBusy(); //使能 BUSY 输出
0178 27E0 ldi R18,7
017A 30E0 ldi R19,0
017C 00EA ldi R16,160
017E 10E0 ldi R17,0
0180 62D0 xcall _SdCmd
0182 .dbline 151
0182 99D0 xcall _LCD_ChkBusy
0184 .dbline 152
0184 ; SdCmd(0x81,0x40); LCD_ChkBusy(); //by default
0184 20E4 ldi R18,64
0186 30E0 ldi R19,0
0188 01E8 ldi R16,129
018A 10E0 ldi R17,0
018C 5CD0 xcall _SdCmd
018E .dbline 152
018E 93D0 xcall _LCD_ChkBusy
0190 .dbline 153
0190 ; SdCmd(0x00,0xCD); LCD_ChkBusy(); //Whole Chip LCD Controller Reg(Char Mode)
0190 2DEC ldi R18,205
0192 30E0 ldi R19,0
0194 0027 clr R16
0196 1127 clr R17
0198 56D0 xcall _SdCmd
019A .dbline 153
019A 8DD0 xcall _LCD_ChkBusy
019C .dbline 154
019C ; SdCmd(0x01,0xf2); LCD_ChkBusy(); //BUSY=HiPolity, ClockOut=enable, InternalFreq=4MHz
019C 22EF ldi R18,242
019E 30E0 ldi R19,0
01A0 01E0 ldi R16,1
01A2 10E0 ldi R17,0
01A4 50D0 xcall _SdCmd
01A6 .dbline 154
01A6 87D0 xcall _LCD_ChkBusy
01A8 .dbline 155
01A8 ; SdCmd(0x10,0x29); LCD_ChkBusy(); //Whole Chip Cursor Control Reg(disable cursor)
01A8 29E2 ldi R18,41
01AA 30E0 ldi R19,0
01AC 00E1 ldi R16,16
01AE 10E0 ldi R17,0
01B0 4AD0 xcall _SdCmd
01B2 .dbline 155
01B2 81D0 xcall _LCD_ChkBusy
01B4 .dbline 156
01B4 ; SdCmd(0x11,0x10); LCD_ChkBusy(); //Distance of Words or Lines Reg(cursor=1,gap=0)
01B4 20E1 ldi R18,16
01B6 30E0 ldi R19,0
01B8 01E1 ldi R16,17
01BA 10E0 ldi R17,0
01BC 44D0 xcall _SdCmd
01BE .dbline 156
01BE 7BD0 xcall _LCD_ChkBusy
01C0 .dbline 157
01C0 ; SdCmd(0x90,0x05); LCD_ChkBusy(); //Shift Clock Control Reg(320x240,69Hz)
01C0 25E0 ldi R18,5
01C2 30E0 ldi R19,0
01C4 00E9 ldi R16,144
01C6 10E0 ldi R17,0
01C8 3ED0 xcall _SdCmd
01CA .dbline 157
01CA 75D0 xcall _LCD_ChkBusy
01CC .dbline 158
01CC ; SdCmd(0xf1,0x0f); LCD_ChkBusy(); //设置字型大小
01CC 2FE0 ldi R18,15
01CE 30E0 ldi R19,0
01D0 01EF ldi R16,241
01D2 10E0 ldi R17,0
01D4 38D0 xcall _SdCmd
01D6 .dbline 158
01D6 6FD0 xcall _LCD_ChkBusy
01D8 .dbline 159
01D8 ; SdCmd(0x20,0x27); LCD_ChkBusy(); //Active Window Right Reg
01D8 27E2 ldi R18,39
01DA 30E0 ldi R19,0
01DC 00E2 ldi R16,32
01DE 10E0 ldi R17,0
01E0 32D0 xcall _SdCmd
01E2 .dbline 159
01E2 69D0 xcall _LCD_ChkBusy
01E4 .dbline 160
01E4 ; SdCmd(0xf0,0xa0); LCD_ChkBusy(); //Font Control Reg
01E4 20EA ldi R18,160
01E6 30E0 ldi R19,0
01E8 00EF ldi R16,240
01EA 10E0 ldi R17,0
01EC 2CD0 xcall _SdCmd
01EE .dbline 160
01EE 63D0 xcall _LCD_ChkBusy
01F0 .dbline 161
01F0 ; SdCmd(0x30,0xef); LCD_ChkBusy(); //Active Window Bottom Reg(240 duty)
01F0 2FEE ldi R18,239
01F2 30E0 ldi R19,0
01F4 00E3 ldi R16,48
01F6 10E0 ldi R17,0
01F8 26D0 xcall _SdCmd
01FA .dbline 161
01FA 5DD0 xcall _LCD_ChkBusy
01FC .dbline 162
01FC ; SdCmd(0x40,0x00); LCD_ChkBusy(); //Active Window Left Reg
01FC 2227 clr R18
01FE 3327 clr R19
0200 00E4 ldi R16,64
0202 10E0 ldi R17,0
0204 20D0 xcall _SdCmd
0206 .dbline 162
0206 57D0 xcall _LCD_ChkBusy
0208 .dbline 163
0208 ; SdCmd(0x50,0x00); LCD_ChkBusy(); //Active Window Top Reg
0208 2227 clr R18
020A 3327 clr R19
020C 00E5 ldi R16,80
020E 10E0 ldi R17,0
0210 1AD0 xcall _SdCmd
0212 .dbline 163
0212 51D0 xcall _LCD_ChkBusy
0214 .dbline 164
0214 ; SdCmd(0x21,0x27); LCD_ChkBusy(); //Display Window Right Reg
0214 27E2 ldi R18,39
0216 30E0 ldi R19,0
0218 01E2 ldi R16,33
021A 10E0 ldi R17,0
021C 14D0 xcall _SdCmd
021E .dbline 164
021E 4BD0 xcall _LCD_ChkBusy
0220 .dbline 165
0220 ; SdCmd(0x30,0xef); LCD_ChkBusy(); // Display Window Bottom Reg(240 duty)
0220 2FEE ldi R18,239
0222 30E0 ldi R19,0
0224 00E3 ldi R16,48
0226 10E0 ldi R17,0
0228 0ED0 xcall _SdCmd
022A .dbline 165
022A 45D0 xcall _LCD_ChkBusy
022C .dbline 166
022C ; SdCmd(0x41,0x00); LCD_ChkBusy(); //Display Window Left Reg
022C 2227 clr R18
022E 3327 clr R19
0230 01E4 ldi R16,65
0232 10E0 ldi R17,0
0234 08D0 xcall _SdCmd
0236 .dbline 166
0236 3FD0 xcall _LCD_ChkBusy
0238 .dbline 167
0238 ; SdCmd(0x51,0x00); LCD_ChkBusy(); // Display Window Top Reg
0238 2227 clr R18
023A 3327 clr R19
023C 01E5 ldi R16,81
023E 10E0 ldi R17,0
0240 02D0 xcall _SdCmd
0242 .dbline 167
0242 39D0 xcall _LCD_ChkBusy
0244 .dbline -2
0244 L16:
0244 .dbline 0 ; func end
0244 0895 ret
0246 .dbend
0246 .dbfunc e SdCmd _SdCmd fV
0246 ; Com_Data -> R18
0246 ; Command -> R16
.even
0246 _SdCmd::
0246 .dbline -1
0246 .dbline 172
0246 ; }
0246 ; //====================================
0246 ; //-----------------------------------
0246 ; void SdCmd(uchar Command,uchar Com_Data) //send command
0246 ; {
0246 .dbline 173
0246 ; SetWR;
0246 979A sbi 0x12,7
0248 .dbline 173
0248 .dbline 174
0248 ; SetRD;
0248 959A sbi 0x12,5
024A .dbline 174
024A .dbline 175
024A ; ClrRS; //RS = 0 输入命令
024A 83B1 in R24,0x3
024C 8E7F andi R24,254
024E 83B9 out 0x3,R24
0250 .dbline 175
0250 .dbline 176
0250 ; ClrCS;
0250 82B3 in R24,0x12
0252 8F7B andi R24,191
0254 82BB out 0x12,R24
0256 .dbline 176
0256 .dbline 177
0256 ; PORTF = Command;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -