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

📄 ks0108_12864lcd_m16.lst

📁 ks0108 avr单片机1284显示
💻 LST
📖 第 1 页 / 共 4 页
字号:
_KS0108_12864LCD_Update:
  i                    --> R20
  j                    --> R22
     470 940E 06FA CALL	push_xgsetF000
     472 972B      SBIW	R28,0xB
(0131)    }
(0132)    
(0133) /*----------------------------------------------------------------------------*-
(0134) 
(0135)    PCD8544_LCD_Update()        
(0136) 
(0137)    This function updates data on the LCD panel (if it requires update).
(0138) 
(0139) -*----------------------------------------------------------------------------*/
(0140) void KS0108_12864LCD_Update(void)
(0141)    {
(0142)    uInt16 i, j;
(0143)    
(0144)    LCD_Disp_an_Image(0, 0, Image_Test, 64, 128, NORMAL);
     473 2422      CLR	R2
     474 822E      STD	Y+6,R2
     475 E880      LDI	R24,0x80
     476 838C      STD	Y+4,R24
     477 E480      LDI	R24,0x40
     478 838A      STD	Y+2,R24
     479 EC88      LDI	R24,0xC8
     47A E093      LDI	R25,3
     47B 8399      STD	Y+1,R25
     47C 8388      STD	Y+0,R24
     47D 2722      CLR	R18
     47E 2700      CLR	R16
     47F D1CC      RCALL	KS0108_12864LCD.C:LCD_Disp_an_Image
(0145)    for(i = 0; i < 1000; i++)
     480 2744      CLR	R20
     481 2755      CLR	R21
     482 C00B      RJMP	0x048E
(0146) 	  for(j = 0; j < 400; j++);
     483 2766      CLR	R22
     484 2777      CLR	R23
     485 C002      RJMP	0x0488
     486 5F6F      SUBI	R22,0xFF
     487 4F7F      SBCI	R23,0xFF
     488 3960      CPI	R22,0x90
     489 E0E1      LDI	R30,1
     48A 077E      CPC	R23,R30
     48B F3D0      BCS	0x0486
     48C 5F4F      SUBI	R20,0xFF
     48D 4F5F      SBCI	R21,0xFF
     48E 3E48      CPI	R20,0xE8
     48F E0E3      LDI	R30,3
     490 075E      CPC	R21,R30
     491 F388      BCS	0x0483
(0147) 
(0148)    Clear_Screen(NORMAL);  
     492 2700      CLR	R16
     493 D0AA      RCALL	KS0108_12864LCD.C:Clear_Screen
(0149)    LCD_Disp_String(0, 1, WELCOME, NORMAL); 
     494 2422      CLR	R2
     495 822A      STD	Y+2,R2
     496 E584      LDI	R24,0x54
     497 E090      LDI	R25,0
     498 8399      STD	Y+1,R25
     499 8388      STD	Y+0,R24
     49A E021      LDI	R18,1
     49B 2700      CLR	R16
     49C D158      RCALL	KS0108_12864LCD.C:LCD_Disp_String
(0150)    LCD_Disp_String(7, 1, WEBSITE, NORMAL); 
     49D 2422      CLR	R2
     49E 822A      STD	Y+2,R2
     49F E68A      LDI	R24,0x6A
     4A0 E090      LDI	R25,0
     4A1 8399      STD	Y+1,R25
     4A2 8388      STD	Y+0,R24
     4A3 E021      LDI	R18,1
     4A4 E007      LDI	R16,7
     4A5 D14F      RCALL	KS0108_12864LCD.C:LCD_Disp_String
(0151)    LCD_Disp_Chinese_String(2, 32, 16, 4, 0, 0, CN_WELCOME, NORMAL);
     4A6 2422      CLR	R2
     4A7 862A      STD	Y+10,R2
     4A8 EA88      LDI	R24,0xA8
     4A9 E092      LDI	R25,2
     4AA 8799      STD	Y+9,R25
     4AB 8788      STD	Y+8,R24
     4AC 822E      STD	Y+6,R2
     4AD 822C      STD	Y+4,R2
     4AE E084      LDI	R24,4
     4AF 838A      STD	Y+2,R24
     4B0 E180      LDI	R24,0x10
     4B1 8388      STD	Y+0,R24
     4B2 E220      LDI	R18,0x20
     4B3 E002      LDI	R16,2
     4B4 D15A      RCALL	_LCD_Disp_Chinese_String
(0152)    LCD_Disp_Chinese_String(4, 24, 16, 5, 0, 0, CN_EMBEDDED, NORMAL);     
     4B5 2422      CLR	R2
     4B6 862A      STD	Y+10,R2
     4B7 E288      LDI	R24,0x28
     4B8 E093      LDI	R25,3
     4B9 8799      STD	Y+9,R25
     4BA 8788      STD	Y+8,R24
     4BB 822E      STD	Y+6,R2
     4BC 822C      STD	Y+4,R2
     4BD E085      LDI	R24,5
     4BE 838A      STD	Y+2,R24
     4BF E180      LDI	R24,0x10
     4C0 8388      STD	Y+0,R24
     4C1 E128      LDI	R18,0x18
     4C2 E004      LDI	R16,4
     4C3 D14B      RCALL	_LCD_Disp_Chinese_String
(0153)    for(i = 0; i < 1000; i++)
     4C4 2744      CLR	R20
     4C5 2755      CLR	R21
     4C6 C00B      RJMP	0x04D2
(0154) 	  for(j = 0; j < 400; j++);
     4C7 2766      CLR	R22
     4C8 2777      CLR	R23
     4C9 C002      RJMP	0x04CC
     4CA 5F6F      SUBI	R22,0xFF
     4CB 4F7F      SBCI	R23,0xFF
     4CC 3960      CPI	R22,0x90
     4CD E0E1      LDI	R30,1
     4CE 077E      CPC	R23,R30
     4CF F3D0      BCS	0x04CA
     4D0 5F4F      SUBI	R20,0xFF
     4D1 4F5F      SBCI	R21,0xFF
     4D2 3E48      CPI	R20,0xE8
     4D3 E0E3      LDI	R30,3
     4D4 075E      CPC	R21,R30
     4D5 F388      BCS	0x04C7
(0155) 	  
(0156)    LCD_Disp_an_Image(0, 0, Image_Test, 64, 128, INVERSE);
     4D6 E081      LDI	R24,1
     4D7 838E      STD	Y+6,R24
     4D8 E880      LDI	R24,0x80
     4D9 838C      STD	Y+4,R24
     4DA E480      LDI	R24,0x40
     4DB 838A      STD	Y+2,R24
     4DC EC88      LDI	R24,0xC8
     4DD E093      LDI	R25,3
     4DE 8399      STD	Y+1,R25
     4DF 8388      STD	Y+0,R24
     4E0 2722      CLR	R18
     4E1 2700      CLR	R16
     4E2 D169      RCALL	KS0108_12864LCD.C:LCD_Disp_an_Image
(0157)    for(i = 0; i < 1000; i++)
     4E3 2744      CLR	R20
     4E4 2755      CLR	R21
     4E5 C00B      RJMP	0x04F1
(0158) 	  for(j = 0; j < 400; j++);
     4E6 2766      CLR	R22
     4E7 2777      CLR	R23
     4E8 C002      RJMP	0x04EB
     4E9 5F6F      SUBI	R22,0xFF
     4EA 4F7F      SBCI	R23,0xFF
     4EB 3960      CPI	R22,0x90
     4EC E0E1      LDI	R30,1
     4ED 077E      CPC	R23,R30
     4EE F3D0      BCS	0x04E9
     4EF 5F4F      SUBI	R20,0xFF
     4F0 4F5F      SBCI	R21,0xFF
     4F1 3E48      CPI	R20,0xE8
     4F2 E0E3      LDI	R30,3
     4F3 075E      CPC	R21,R30
     4F4 F388      BCS	0x04E6
(0159) 
(0160)    Clear_Screen(INVERSE);  
     4F5 E001      LDI	R16,1
     4F6 D047      RCALL	KS0108_12864LCD.C:Clear_Screen
(0161)    LCD_Disp_String(0, 1, WELCOME, INVERSE); 
     4F7 E081      LDI	R24,1
     4F8 838A      STD	Y+2,R24
     4F9 E584      LDI	R24,0x54
     4FA E090      LDI	R25,0
     4FB 8399      STD	Y+1,R25
     4FC 8388      STD	Y+0,R24
     4FD E021      LDI	R18,1
     4FE 2700      CLR	R16
     4FF D0F5      RCALL	KS0108_12864LCD.C:LCD_Disp_String
(0162)    LCD_Disp_String(7, 1, WEBSITE, INVERSE); 
     500 E081      LDI	R24,1
     501 838A      STD	Y+2,R24
     502 E68A      LDI	R24,0x6A
     503 E090      LDI	R25,0
     504 8399      STD	Y+1,R25
     505 8388      STD	Y+0,R24
     506 E021      LDI	R18,1
     507 E007      LDI	R16,7
     508 D0EC      RCALL	KS0108_12864LCD.C:LCD_Disp_String
(0163)    LCD_Disp_Chinese_String(2, 32, 16, 4, 0, 0, CN_WELCOME, INVERSE);
     509 E081      LDI	R24,1
     50A 878A      STD	Y+10,R24
     50B EA88      LDI	R24,0xA8
     50C E092      LDI	R25,2
     50D 8799      STD	Y+9,R25
     50E 8788      STD	Y+8,R24
     50F 2422      CLR	R2
     510 822E      STD	Y+6,R2
     511 822C      STD	Y+4,R2
     512 E084      LDI	R24,4
     513 838A      STD	Y+2,R24
     514 E180      LDI	R24,0x10
     515 8388      STD	Y+0,R24
     516 E220      LDI	R18,0x20
     517 E002      LDI	R16,2
     518 D0F6      RCALL	_LCD_Disp_Chinese_String
(0164)    LCD_Disp_Chinese_String(4, 24, 16, 5, 0, 0, CN_EMBEDDED, INVERSE); 
     519 E081      LDI	R24,1
     51A 878A      STD	Y+10,R24
     51B E288      LDI	R24,0x28
     51C E093      LDI	R25,3
     51D 8799      STD	Y+9,R25
     51E 8788      STD	Y+8,R24
     51F 2422      CLR	R2
     520 822E      STD	Y+6,R2
     521 822C      STD	Y+4,R2
     522 E085      LDI	R24,5
     523 838A      STD	Y+2,R24
     524 E180      LDI	R24,0x10
     525 8388      STD	Y+0,R24
     526 E128      LDI	R18,0x18
     527 E004      LDI	R16,4
     528 D0E6      RCALL	_LCD_Disp_Chinese_String
(0165)    for(i = 0; i < 1000; i++)
     529 2744      CLR	R20
     52A 2755      CLR	R21
     52B C00B      RJMP	0x0537
(0166) 	  for(j = 0; j < 400; j++); 
     52C 2766      CLR	R22
     52D 2777      CLR	R23
     52E C002      RJMP	0x0531
     52F 5F6F      SUBI	R22,0xFF
     530 4F7F      SBCI	R23,0xFF
     531 3960      CPI	R22,0x90
     532 E0E1      LDI	R30,1
     533 077E      CPC	R23,R30
     534 F3D0      BCS	0x052F
     535 5F4F      SUBI	R20,0xFF
     536 4F5F      SBCI	R21,0xFF
     537 3E48      CPI	R20,0xE8
     538 E0E3      LDI	R30,3
     539 075E      CPC	R21,R30
     53A F388      BCS	0x052C
     53B 962B      ADIW	R28,0xB
     53C 940C 06FF JMP	pop_xgsetF000
KS0108_12864LCD.C:Clear_Screen:
_Clear_Screen:
  Page                 --> R20
  Column               --> R22
  Vedio_Mode           --> R10
     53E 940E 0704 CALL	push_xgsetF00C
     540 2EA0      MOV	R10,R16
     541 9721      SBIW	R28,1
(0167)    }
(0168) 
(0169) /*----------------------------------------------------------------------------*-
(0170) 
(0171)    Clear_Screen()
(0172) 
(0173)    This function clears the LCD screen.
(0174) 
(0175) -*----------------------------------------------------------------------------*/    
(0176) static void Clear_Screen(uInt8 Vedio_Mode)
(0177)    {   
(0178)    uInt8 Page, Column;
(0179)    
(0180)    for (Page = 0; Page < 8; Page++) // Clear left side
     542 2744      CLR	R20
     543 C026      RJMP	0x056A
(0181)       {
(0182)       LCD_INSTR_PORT |=  LCD_CS1; // Select left side
     544 9A94      SBI	0x12,4
(0183)       LCD_INSTR_PORT &= ~LCD_CS2;
     545 9895      CBI	0x12,5
(0184) 
(0185)       LCD_Send_Byte(DISPLAY_PAGE_SET + Page, COMMAND, NORMAL); // Sweep pages
     546 2422      CLR	R2
     547 8228      STD	Y+0,R2
     548 2722      CLR	R18
     549 2F04      MOV	R16,R20
     54A 5408      SUBI	R16,0x48
     54B D042      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
(0186)       LCD_Send_Byte(DISPLAY_COLUMN_SET, COMMAND, NORMAL);
     54C 2422      CLR	R2
     54D 8228      STD	Y+0,R2
     54E 2722      CLR	R18
     54F E400      LDI	R16,0x40
     550 D03D      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
(0187) 	  
(0188)       for (Column = 0; Column < 128; Column++)
     551 2766      CLR	R22
     552 C014      RJMP	0x0567
(0189)          { 
(0190) 		 // Clear right side
(0191)          if(Column == 64)
     553 3460      CPI	R22,0x40
     554 F469      BNE	0x0562
(0192)             {
(0193)             LCD_INSTR_PORT &= ~LCD_CS1; // Select right side
     555 9894      CBI	0x12,4
(0194)             LCD_INSTR_PORT |=  LCD_CS2;
     556 9A95      SBI	0x12,5
(0195) 			
(0196) 			// Sweep pages
(0197)             LCD_Send_Byte(DISPLAY_PAGE_SET + Page, COMMAND, NORMAL); 
     557 2422      CLR	R2
     558 8228      STD	Y+0,R2
     559 2722      CLR	R18
     55A 2F04      MOV	R16,R20
     55B 5408      SUBI	R16,0x48
     55C D031      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
(0198)             LCD_Send_Byte(DISPLAY_COLUMN_SET, COMMAND, NORMAL);
     55D 2422      CLR	R2
     55E 8228      STD	Y+0,R2
     55F 2722      CLR	R18
     560 E400      LDI	R16,0x40
     561 D02C      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
(0199)             }
(0200) 		 // For each set of 8 pixels, write 0x00 or 0xFF(depend on Vedio_Mode)
(0201)          LCD_Send_Byte(0x00, D_DATA, Vedio_Mode); 
     562 82A8      STD	Y+0,R10
     563 E021      LDI	R18,1
     564 2700      CLR	R16
     565 D028      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
     566 9563      INC	R22
     567 3860      CPI	R22,0x80
     568 F350      BCS	0x0553
     569 9543      INC	R20
     56A 3048      CPI	R20,0x8
     56B F2C0      BCS	0x0544
     56C 9621      ADIW	R28,1
     56D 940C 070B JMP	pop_xgsetF00C
(0202)          }
(0203)       }
(0204)    }
(0205) 
(0206) /*----------------------------------------------------------------------------*-
(0207) 
(0208)    LCD_Read_Busy()    
(0209)  
(0210)    Check out if the LCD is in operation or ready for writing data.
(0211) 			   
(0212) -*----------------------------------------------------------------------------*/
(0213) static void LCD_Read_Busy(void)
(0214)    {
(0215)    uInt16 LCD_Timeout; // Software timeout 
(0216)    
(0217)    LCD_DATA_PORT = 0xFF;  
KS0108_12864LCD.C:LCD_Read_Busy:
_LCD_Read_Busy:
  LCD_Timeout          --> R16
     56F EF8F      LDI	R24,0xFF
     570 BB8B      OUT	0x1B,R24
(0218)    LCD_DATA_PORT_DIR = INPUT; // Set data PORT direction 
     571 2422      CLR	R2
     572 BA2A      OUT	0x1A,R2
(0219)  
(0220)    LCD_INSTR_PORT &= ~LCD_DI; // Set instruction
     573 9890      CBI	0x12,0
(0221)    LCD_INSTR_PORT |=  LCD_RW; // Set read
     574 9A91      SBI	0x12,1
(0222) 
(0223)    LCD_INSTR_PORT |=  LCD_EN;
     575 9A92      SBI	0x12,2
(0224)    asm("nop");	
     576 0000      NOP
(0225)    asm("nop");
     577 0000      NOP
(0226)     
(0227)    LCD_INSTR_PORT &= ~LCD_EN; // Toggle enable
     578 9892      CBI	0x12,2
(0228)    asm("nop");	
     579 0000      NOP
(0229)    asm("nop");
     57A 0000      NOP
     57B C006      RJMP	0x0582
(0230)    
(0231)    // See if busy with software timeout       
(0232)    while((LCD_BUSY & LCD_DATA_PORT_VL) && ++LCD_Timeout)  
(0233)       {
(0234)       LCD_INSTR_PORT &= ~LCD_EN; // Toggle enable   		
     57C 9892      CBI	0x12,2
(0235)       asm("nop");	
     57D 0000      NOP
(0236) 	  asm("nop");
     57E 0000      NOP
(0237) 	  
(0238)       LCD_INSTR_PORT |=  LCD_EN;
     57F 9A92      SBI	0x12,2
(0239)       asm("nop");	
     580 0000      NOP
(0240) 	  asm("nop");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -