📄 attest.lst
字号:
03A6 E900 LDI R16,0x90
03A7 E010 LDI R17,0
03A8 D03E RCALL _SdCmd
03A9 D075 RCALL _LCD_ChkBusy
(0158) SdCmd(0xf1,0x0f); LCD_ChkBusy(); //设置字型大小
03AA E02F LDI R18,0xF
03AB E030 LDI R19,0
03AC EF01 LDI R16,0xF1
03AD E010 LDI R17,0
03AE D038 RCALL _SdCmd
03AF D06F RCALL _LCD_ChkBusy
(0159) SdCmd(0x20,0x27); LCD_ChkBusy(); //Active Window Right Reg
03B0 E227 LDI R18,0x27
03B1 E030 LDI R19,0
03B2 E200 LDI R16,0x20
03B3 E010 LDI R17,0
03B4 D032 RCALL _SdCmd
03B5 D069 RCALL _LCD_ChkBusy
(0160) SdCmd(0xf0,0xa0); LCD_ChkBusy(); //Font Control Reg
03B6 EA20 LDI R18,0xA0
03B7 E030 LDI R19,0
03B8 EF00 LDI R16,0xF0
03B9 E010 LDI R17,0
03BA D02C RCALL _SdCmd
03BB D063 RCALL _LCD_ChkBusy
(0161) SdCmd(0x30,0xef); LCD_ChkBusy(); //Active Window Bottom Reg(240 duty)
03BC EE2F LDI R18,0xEF
03BD E030 LDI R19,0
03BE E300 LDI R16,0x30
03BF E010 LDI R17,0
03C0 D026 RCALL _SdCmd
03C1 D05D RCALL _LCD_ChkBusy
(0162) SdCmd(0x40,0x00); LCD_ChkBusy(); //Active Window Left Reg
03C2 2722 CLR R18
03C3 2733 CLR R19
03C4 E400 LDI R16,0x40
03C5 E010 LDI R17,0
03C6 D020 RCALL _SdCmd
03C7 D057 RCALL _LCD_ChkBusy
(0163) SdCmd(0x50,0x00); LCD_ChkBusy(); //Active Window Top Reg
03C8 2722 CLR R18
03C9 2733 CLR R19
03CA E500 LDI R16,0x50
03CB E010 LDI R17,0
03CC D01A RCALL _SdCmd
03CD D051 RCALL _LCD_ChkBusy
(0164) SdCmd(0x21,0x27); LCD_ChkBusy(); //Display Window Right Reg
03CE E227 LDI R18,0x27
03CF E030 LDI R19,0
03D0 E201 LDI R16,0x21
03D1 E010 LDI R17,0
03D2 D014 RCALL _SdCmd
03D3 D04B RCALL _LCD_ChkBusy
(0165) SdCmd(0x30,0xef); LCD_ChkBusy(); // Display Window Bottom Reg(240 duty)
03D4 EE2F LDI R18,0xEF
03D5 E030 LDI R19,0
03D6 E300 LDI R16,0x30
03D7 E010 LDI R17,0
03D8 D00E RCALL _SdCmd
03D9 D045 RCALL _LCD_ChkBusy
(0166) SdCmd(0x41,0x00); LCD_ChkBusy(); //Display Window Left Reg
03DA 2722 CLR R18
03DB 2733 CLR R19
03DC E401 LDI R16,0x41
03DD E010 LDI R17,0
03DE D008 RCALL _SdCmd
03DF D03F RCALL _LCD_ChkBusy
(0167) SdCmd(0x51,0x00); LCD_ChkBusy(); // Display Window Top Reg
03E0 2722 CLR R18
03E1 2733 CLR R19
03E2 E501 LDI R16,0x51
03E3 E010 LDI R17,0
03E4 D002 RCALL _SdCmd
03E5 D039 RCALL _LCD_ChkBusy
03E6 9508 RET
(0168) }
(0169) //====================================
(0170) //-----------------------------------
(0171) void SdCmd(uchar Command,uchar Com_Data) //send command
(0172) {
(0173) SetWR;
_SdCmd:
Com_Data --> R18
Command --> R16
03E7 9A97 SBI 0x12,7
(0174) SetRD;
03E8 9A95 SBI 0x12,5
(0175) ClrRS; //RS = 0 输入命令
03E9 B183 IN R24,0x03
03EA 7F8E ANDI R24,0xFE
03EB B983 OUT 0x03,R24
(0176) ClrCS;
03EC B382 IN R24,0x12
03ED 7B8F ANDI R24,0xBF
03EE BB82 OUT 0x12,R24
(0177) PORTF = Command;
03EF 93000062 STS 0x62,R16
(0178) asm(" nop ");
03F1 0000 NOP
(0179) ClrWR; //写使能
03F2 B382 IN R24,0x12
03F3 778F ANDI R24,0x7F
03F4 BB82 OUT 0x12,R24
(0180) asm(" nop "); // 8MHZ 执行一条指令大约125ns
03F5 0000 NOP
(0181) asm(" nop ");
03F6 0000 NOP
(0182) SetWR;
03F7 9A97 SBI 0x12,7
(0183) SetCS;
03F8 9A96 SBI 0x12,6
(0184) //====================================
(0185) asm(" nop "); // 8MHZ 执行一条指令大约125ns
03F9 0000 NOP
(0186) asm(" nop ");
03FA 0000 NOP
(0187) SetWR;
03FB 9A97 SBI 0x12,7
(0188) SetRD;
03FC 9A95 SBI 0x12,5
(0189) ClrRS; //RS = 0 输入命令
03FD B183 IN R24,0x03
03FE 7F8E ANDI R24,0xFE
03FF B983 OUT 0x03,R24
(0190) ClrCS;
0400 B382 IN R24,0x12
0401 7B8F ANDI R24,0xBF
0402 BB82 OUT 0x12,R24
(0191) PORTF = Com_Data;
0403 93200062 STS 0x62,R18
(0192) asm(" nop ");
0405 0000 NOP
(0193) ClrWR; //写使能
0406 B382 IN R24,0x12
0407 778F ANDI R24,0x7F
0408 BB82 OUT 0x12,R24
(0194) asm(" nop "); // 8MHZ 执行一条指令大约125ns
0409 0000 NOP
(0195) asm(" nop ");
040A 0000 NOP
(0196) SetWR;
040B 9A97 SBI 0x12,7
(0197) SetCS;
040C 9A96 SBI 0x12,6
040D 9508 RET
(0198) }
(0199) //===============================================
(0200) void SdData(uchar DData) //send display data
(0201) {
(0202) SetWR;
_SdData:
DData --> R16
040E 9A97 SBI 0x12,7
(0203) SetRD;
040F 9A95 SBI 0x12,5
(0204) SetRS; //RS = 1 输入数据
0410 9A18 SBI 0x03,0
(0205) ClrCS;
0411 B382 IN R24,0x12
0412 7B8F ANDI R24,0xBF
0413 BB82 OUT 0x12,R24
(0206) PORTF = DData;
0414 93000062 STS 0x62,R16
(0207) asm(" nop ");
0416 0000 NOP
(0208) ClrWR; //写使能
0417 B382 IN R24,0x12
0418 778F ANDI R24,0x7F
0419 BB82 OUT 0x12,R24
(0209) asm(" nop "); // 8MHZ 执行一条指令大约125ns
041A 0000 NOP
(0210) asm(" nop ");
041B 0000 NOP
(0211) SetWR;
041C 9A97 SBI 0x12,7
(0212) SetCS;
041D 9A96 SBI 0x12,6
041E 9508 RET
(0213) }
(0214) //====================================
(0215) //=================================
(0216) void LCD_ChkBusy(void)
(0217) {
(0218) uchar TempM = 0x08;
_LCD_ChkBusy:
TempM --> R16
041F E008 LDI R16,0x8
(0219) DDRG = 0X00; //将端口设为输入
0420 2422 CLR R2
0421 92200064 STS 0x64,R2
0423 C003 RJMP 0x0427
(0220) while(TempM)
(0221) {
(0222) TempM = PING;
0424 91000063 LDS R16,0x63
(0223) TempM &= 0x08; //读取DB.3位
0426 7008 ANDI R16,0x8
0427 2300 TST R16
0428 F7D9 BNE 0x0424
(0224) }
(0225) DDRG = 0XFF; //将端口设为输出
0429 EF8F LDI R24,0xFF
042A 93800064 STS 0x64,R24
042C 9508 RET
_Welcome_interface:
042D 9722 SBIW R28,2
(0226) }
(0227) //====================================
(0228) void Welcome_interface(void)
(0229) {
(0230) SdCmd(0x12,0x95);LCD_ChkBusy(); //操作图层1
042E E925 LDI R18,0x95
042F E102 LDI R16,0x12
0430 DFB6 RCALL _SdCmd
0431 DFED RCALL _LCD_ChkBusy
(0231) CleanScreen();
0432 D031 RCALL _CleanScreen
(0232) SdCmd(0xf1,0x1f);LCD_ChkBusy(); //设置字型大小
0433 E12F LDI R18,0x1F
0434 EF01 LDI R16,0xF1
0435 DFB1 RCALL _SdCmd
0436 DFE8 RCALL _LCD_ChkBusy
(0233) //SdCmd(0x60,0x0a);LCD_ChkBusy(); //设置光标X坐标
(0234) //SdCmd(0x70,0x4b);LCD_ChkBusy(); //设置光标Y坐标
(0235) ShowText(10,75,"金特维");
0437 E18C LDI R24,0x1C
0438 E091 LDI R25,1
0439 8399 STD Y+1,R25
043A 8388 STD Y+0,R24
043B E42B LDI R18,0x4B
043C E030 LDI R19,0
043D E00A LDI R16,0xA
043E E010 LDI R17,0
043F D040 RCALL _ShowText
(0236) SdCmd(0xf1,0x0f);LCD_ChkBusy(); //设置字型大小
0440 E02F LDI R18,0xF
0441 EF01 LDI R16,0xF1
0442 DFA4 RCALL _SdCmd
0443 DFDB RCALL _LCD_ChkBusy
(0237) //SdCmd(0x60,0x10);LCD_ChkBusy(); //设置光标X坐标
(0238) //SdCmd(0x70,0x55);LCD_ChkBusy(); //设置光标Y坐标
(0239) ShowText(16,85,"技术有限公司");
0444 E08F LDI R24,0xF
0445 E091 LDI R25,1
0446 8399 STD Y+1,R25
0447 8388 STD Y+0,R24
0448 E525 LDI R18,0x55
0449 E030 LDI R19,0
044A E100 LDI R16,0x10
044B E010 LDI R17,0
044C D033 RCALL _ShowText
(0240) SdCmd(0xf0,0xa0);LCD_ChkBusy(); //设置为简体字型
044D EA20 LDI R18,0xA0
044E EF00 LDI R16,0xF0
044F DF97 RCALL _SdCmd
0450 DFCE RCALL _LCD_ChkBusy
(0241) SdCmd(0xf1,0x5f);LCD_ChkBusy(); //设置字型大小
0451 E52F LDI R18,0x5F
0452 EF01 LDI R16,0xF1
0453 DF93 RCALL _SdCmd
0454 DFCA RCALL _LCD_ChkBusy
(0242) SdCmd(0x10,0x79);LCD_ChkBusy(); //设置光标及粗体显示
0455 E729 LDI R18,0x79
0456 E100 LDI R16,0x10
0457 DF8F RCALL _SdCmd
0458 DFC6 RCALL _LCD_ChkBusy
(0243) //SdCmd(0x60,0x09);LCD_ChkBusy(); //设置光标X坐标
(0244) //SdCmd(0x70,0x72);LCD_ChkBusy(); //设置光标Y坐标
(0245) ShowText(9,114,"GTW - 2008");
0459 E084 LDI R24,4
045A E091 LDI R25,1
045B 8399 STD Y+1,R25
045C 8388 STD Y+0,R24
045D E722 LDI R18,0x72
045E E030 LDI R19,0
045F E009 LDI R16,0x9
0460 E010 LDI R17,0
0461 D01E RCALL _ShowText
0462 9622 ADIW R28,2
0463 9508 RET
_CleanScreen:
i --> R20
j --> R22
0464 940E0667 CALL push_gset2
(0246)
(0247) }
(0248) //==================================
(0249) void CleanScreen()
(0250) {
(0251) uchar i,j;
(0252) asm(" cli "); //加入禁止中断,以免人为的外界的中断频繁产生从而使显示屏无反应,即死屏现象
0466 94F8 BCLR 7
(0253) SdCmd(0x60,0x00); LCD_ChkBusy(); //set cursor X location
0467 2722 CLR R18
0468 E600 LDI R16,0x60
0469 DF7D RCALL _SdCmd
046A DFB4 RCALL _LCD_ChkBusy
(0254) SdCmd(0x70,0x00); LCD_ChkBusy(); //set cursor Y location
046B 2722 CLR R18
046C E700 LDI R16,0x70
046D DF79 RCALL _SdCmd
046E DFB0 RCALL _LCD_ChkBusy
(0255) for(i=0;i<40;i++)
046F 2744 CLR R20
0470 C009 RJMP 0x047A
(0256) {
(0257) for(j=0;j<240;j++)
0471 2766 CLR R22
0472 C004 RJMP 0x0477
(0258) {
(0259) SdData(0x00);
0473 2700 CLR R16
0474 DF99 RCALL _SdData
(0260) LCD_ChkBusy();
0475 DFA9 RCALL _LCD_ChkBusy
0476 9563 INC R22
0477 3F60 CPI R22,0xF0
0478 F3D0 BCS 0x0473
0479 9543 INC R20
047A 3248 CPI R20,0x28
047B F3A8 BCS 0x0471
(0261) }
(0262) }
(0263) asm(" sei "); //开户中断
047C 9478 BSET 7
047D 940E0647 CALL pop_gset2
047F 9508 RET
_ShowText:
text --> R20
y --> R22
x --> R10
0480 940E066B CALL push_gset3
0482 2F62 MOV R22,R18
0483 2EA0 MOV R10,R16
0484 814E LDD R20,Y+6
0485 815F LDD R21,Y+7
(0264) }
(0265) //---------------------------------
(0266) void ShowText(uchar x, uchar y,uchar *text)
(0267) {
(0268) SdCmd(0x00,0xCD);LCD_ChkBusy(); //send command normal power mode, Char mode display on, normal display
0486 EC2D LDI R18,0xCD
0487 2700 CLR R16
0488 DF5E RCALL _SdCmd
0489 DF95 RCALL _LCD_ChkBusy
(0269) SdCmd(0x60,0x00+x);LCD_ChkBusy(); //set cursor X location to 0
048A 2D2A MOV R18,R10
048B E600 LDI R16,0x60
048C DF5A RCALL _SdCmd
048D DF91 RCALL _LCD_ChkBusy
(0270) SdCmd(0x70,0x00+y);LCD_ChkBusy(); //set cursor Y location to 0
048E 2F26 MOV R18,R22
048F E700 LDI R16,0x70
0490 DF56 RCALL _SdCmd
0491 DF8D RCALL _LCD_ChkBusy
0492 C006 RJMP 0x0499
(0271) while(*text>0)
(0272) {
(0273) SdData(*text);
0493 01FA MOVW R30,R20
0494 8100 LDD R16,Z+0
0495 DF78 RCALL _SdData
(0274) text++;
0496 5F4F SUBI R20,0xFF
0497 4F5F SBCI R21,0xFF
(0275) LCD_ChkBusy();
0498 DF86 RCALL _LCD_ChkBusy
0499 2422 CLR R2
049A 01FA MOVW R30,R20
049B 8030 LDD R3,Z+0
049C 1423 CP R2,R3
049D F3A8 BCS 0x0493
049E 940E064A CALL pop_gset3
04A0 9508 RET
_ShowNumber:
showNum5 --> Y+2
showNum4 --> Y+0
showNum3 --> R10
showNum2 --> R12
showNum1 --> R14
i --> Y+8
showNum6 --> Y+6
number --> Y+4
number7 --> Y+22
n --> Y+20
y --> R10
x --> R12
04A1 940E0673 CALL push_gset5
04A3 2EA2 MOV R10,R18
04A4 2EC0 MOV R12,R16
04A5 972A SBIW R28,0xA
(0276) }
(0277) }
(0278) //====================================
(0279) // 显示数字
(0280) //====================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -