⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 attest.lst

📁 使用atmel128对45db161读写程序加LM2009R大液晶显示
💻 LST
📖 第 1 页 / 共 5 页
字号:
    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 + -