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

📄 ks0108_12864lcd_m16.lst

📁 ks0108 avr单片机1284显示
💻 LST
📖 第 1 页 / 共 4 页
字号:
__text_start:
__start:
     3E4 E5CF      LDI	R28,0x5F
     3E5 E0D4      LDI	R29,4
     3E6 BFCD      OUT	0x3D,R28
     3E7 BFDE      OUT	0x3E,R29
     3E8 51CE      SUBI	R28,0x1E
     3E9 40D0      SBCI	R29,0
     3EA EA0A      LDI	R16,0xAA
     3EB 8308      STD	Y+0,R16
     3EC 2400      CLR	R0
     3ED E6E0      LDI	R30,0x60
     3EE E0F0      LDI	R31,0
     3EF E010      LDI	R17,0
     3F0 36E0      CPI	R30,0x60
     3F1 07F1      CPC	R31,R17
     3F2 F011      BEQ	0x03F5
     3F3 9201      ST	R0,Z+
     3F4 CFFB      RJMP	0x03F0
     3F5 8300      STD	Z+0,R16
     3F6 ECE8      LDI	R30,0xC8
     3F7 E0F7      LDI	R31,7
     3F8 E6A0      LDI	R26,0x60
     3F9 E0B0      LDI	R27,0
     3FA E017      LDI	R17,7
     3FB E000      LDI	R16,0
     3FC BF0B      OUT	0x3B,R16
     3FD 3CE8      CPI	R30,0xC8
     3FE 07F1      CPC	R31,R17
     3FF F021      BEQ	0x0404
     400 95C8      LPM
     401 9631      ADIW	R30,1
     402 920D      ST	R0,X+
     403 CFF9      RJMP	0x03FD
     404 940E 0407 CALL	_main
_exit:
     406 CFFF      RJMP	_exit
FILE: F:\Temp\KS0108_12864LCD\Source\Main.C
(0001) /*----------------------------------------------------------------------------*-
(0002)    
(0003)    Source Name   :  Main.C (v1.00)  
(0004) 
(0005)   ---------------------------------------------------------------------------- 
(0006)    COPYRIGHT 
(0007)    ---------	
(0008) 
(0009)    Created Date  :  2008.03.01
(0010)    Created By    :  HOCHIEN
(0011)    Modified By   :
(0012)    Modified Date :
(0013)    Version       :  2.0  
(0014)    Description   :  Main project source files.
(0015)                     See "Main.H" for more details about this project.
(0016) 					   
(0017)    * * * This program is from : www.ICEworksop.com * * *
(0018) 
(0019) -*----------------------------------------------------------------------------*/
(0020) 
(0021) #include "Main.H"
(0022) #include "Init_SYS.H"
(0023) 
(0024) #include "KS0108_12864LCD.H"
(0025) 
(0026) /* -------------------------------------------------------------------------- */
(0027) /* .......................................................................... */
(0028) 
(0029) void main(void)
(0030)    {
(0031)    
(0032)    // ==== Initialization - BEGIN ============================================   
(0033)       
(0034)    // Global system initialization  
(0035)    Init_System();
_main:
     407 940E 041A CALL	_Init_System
(0036) 
(0037)    // Prepare for the KS0108 128 * 64 pixels Liquid Crystal Display(LCD)  
(0038)    KS0108_12864LCD_Init();
     409 940E 042A CALL	_KS0108_12864LCD_Init
     40B C002      RJMP	0x040E
(0039) 
(0040)    // ==== Initialization - END ==============================================   
(0041)    
(0042)    while(1) // Super Loop "Endless loop"
(0043)       {
(0044) 	  KS0108_12864LCD_Update();
     40C 940E 0470 CALL	_KS0108_12864LCD_Update
     40E CFFD      RJMP	0x040C
     40F 9508      RET
FILE: F:\Temp\KS0108_12864LCD\Source\Init_SYS.C
(0001) /*----------------------------------------------------------------------------*-
(0002)    
(0003)    Source Name   :  Init_SYS.C (v1.00)  
(0004) 
(0005)   ---------------------------------------------------------------------------- 
(0006)    COPYRIGHT 
(0007)    ---------	
(0008) 
(0009)    Created Date  :  2008.03.01
(0010)    Created By    :  HOCHIEN
(0011)    Modified By   :
(0012)    Modified Date :
(0013)    Version       :  2.0  
(0014)    Description   :  Global system initialization source files. 
(0015)    
(0016)    * * * This program is from : www.ICEworksop.com * * *
(0017) 
(0018) -*----------------------------------------------------------------------------*/
(0019) 
(0020) #include "Main.H"
(0021) #include "Init_SYS.H"
(0022) 
(0023) // ------ Private function prototypes ----------------------------------------
(0024) 
(0025) static void Port_Init(void);
(0026) 
(0027) /*----------------------------------------------------------------------------*-
(0028) 
(0029)    Port_Init() 
(0030)    
(0031)    Globally set up all the port pins to a certain state. 
(0032) 
(0033) -*----------------------------------------------------------------------------*/
(0034) static void Port_Init(void)
(0035)    {
(0036)    PORTA = 0x00;
_Port_Init:
Init_SYS.C:Port_Init:
     410 2422      CLR	R2
     411 BA2B      OUT	0x1B,R2
(0037)    DDRA  = 0x00;
     412 BA2A      OUT	0x1A,R2
(0038)    PORTB = 0x00;
     413 BA28      OUT	0x18,R2
(0039)    DDRB  = 0x00;
     414 BA27      OUT	0x17,R2
(0040)    PORTC = 0x00;
     415 BA25      OUT	0x15,R2
(0041)    DDRC  = 0x00;
     416 BA24      OUT	0x14,R2
(0042)    PORTD = 0x00;
     417 BA22      OUT	0x12,R2
(0043)    DDRD  = 0x00;
     418 BA21      OUT	0x11,R2
     419 9508      RET
(0044)    }
(0045) 
(0046) /*----------------------------------------------------------------------------*-
(0047) 
(0048)    Init_System()
(0049)    
(0050)    System initialization function.
(0051)    Call this routine to initialize all peripherals 
(0052) 
(0053) -*----------------------------------------------------------------------------*/  
(0054) void Init_System(void)
(0055)    {
(0056)    OSCCAL = 0xA7; // Calibrate internal RC 1MHz
_Init_System:
     41A EA87      LDI	R24,0xA7
     41B BF81      OUT	0x31,R24
(0057)    
(0058)    // Stop errant interrupts until set up
(0059)    CLI(); // Disable all interrupts
     41C 94F8      BCLR	7
(0060)    
(0061)    Port_Init(); // Set port
     41D DFF2      RCALL	_Port_Init
(0062)    
(0063)    MCUCR = 0x00;
     41E 2422      CLR	R2
     41F BE25      OUT	0x35,R2
(0064)    GICR  = 0x00;
     420 BE2B      OUT	0x3B,R2
(0065)    TIMSK = 0x00; // Timer interrupt sources
     421 BE29      OUT	0x39,R2
(0066)    SEI(); // Re-enable interrupts
     422 9478      BSET	7
     423 9508      RET
FILE: F:\Temp\KS0108_12864LCD\Source\KS0108_12864LCD.C
(0001) /*----------------------------------------------------------------------------*-
(0002)    
(0003)    Source Name    :  KS0108_12864LCD.C (v1.00)  
(0004) 
(0005)   ---------------------------------------------------------------------------- 
(0006)    COPYRIGHT 
(0007)    ---------	
(0008) 
(0009)    Created date  :  2008.03.01
(0010)    Created By    :  HOCHIEN
(0011)    Modified by   :
(0012)    Modified Date :
(0013)    Version       :  2.0  
(0014)    Description   :  Simple KS0108 based 128 * 64 pixels LCD
(0015)                     demonstration program. 
(0016) 					   
(0017)    LCD LIBRARY CODE
(0018)    
(0019)    Designed for SuperLoop operation, 
(0020)    in this case for a 64 * 128 pixels matrix LCD display.
(0021)    
(0022)    * * * This program is from : www.ICEworksop.com * * *
(0023) 
(0024) -*----------------------------------------------------------------------------*/
(0025) 
(0026) #include "Main.H"
(0027) #include "Port.H"
(0028) 
(0029) #include "KS0108_12864LCD.H"
(0030) 
(0031) // ------ Public variable declarations ---------------------------------------
(0032) 
(0033) // See 'FONT6x8.C' for details
(0034) extern flash uInt8 FONT6x8[][6];
(0035) 
(0036) // See 'Chinese_Text.C' for details
(0037) extern flash uInt8 CN_WELCOME[][32];
(0038) extern flash uInt8 CN_EMBEDDED[][32];
(0039) 
(0040) // See 'Image_Test.C' for details
(0041) extern flash uInt8 Image_Test[];
(0042) 
(0043) // ------ Private constants --------------------------------------------------
(0044) 
(0045) #define DISPLAY_ON   0x3F  // 0011 1111
(0046) #define DISPLAY_OFF  0x3E  // 0011 1110
(0047) #define DISPLAY_STARTLINE   0xC0  // 1100 0000
(0048) #define DISPLAY_PAGE_SET    0xB8  // 1011 1000
(0049) #define DISPLAY_COLUMN_SET  0x40  // 0100 0000
(0050) #define LCD_BUSY 0x80 
(0051) 
(0052) #define INVERSE (1)
(0053) #define NORMAL  (0)
(0054) #define D_DATA  (1)
(0055) #define COMMAND (0)
(0056) 
(0057) static flash uInt8 WELCOME[] = "Hello, EmbeddedWorld!";
(0058) static flash uInt8 WEBSITE[] = "*www.ICEworkshop.com*";
(0059) 
(0060) // ------ Private function prototypes ----------------------------------------
(0061) 
(0062) static void Delay_1ms(void);
(0063) static void Clear_Screen(uInt8);
(0064) static void LCD_Send_Byte(uInt8, uInt8, uInt8);
(0065) static void LCD_Set_XY(uInt8, uInt8);
(0066) static void LCD_Disp_a_Char(uInt8, uInt8, uInt8, uInt8);
(0067) static void LCD_Disp_String(uInt8, uInt8, flash uInt8 *,  uInt8);
(0068) static void LCD_Disp_Chinese_String (uInt8, uInt8, uInt8, uInt8, uInt8, uInt8,
(0069)                                      flash uInt8 (*)[32], uInt8);
(0070) static void LCD_Disp_an_Image(uInt8, uInt8, flash uInt8 *, uInt8, uInt8, uInt8);
(0071) static void LCD_Draw_a_Dot(uInt8, uInt8, uInt8);
(0072) 
(0073) /*----------------------------------------------------------------------------*-
(0074) 
(0075)    Delay_1ms()
(0076) 
(0077)    Software delay * approx * 1 millisecond @ 1MHz system clock.
(0078) 
(0079) -*----------------------------------------------------------------------------*/
(0080) #pragma ctask Delay_1ms
(0081) static void Delay_1ms(void)
(0082)    {
(0083)    uInt8 i;
(0084)    for (i=0;i<143;i++);
_Delay_1ms:
  i                    --> R16
KS0108_12864LCD.C:Delay_1ms:
     424 2700      CLR	R16
     425 C001      RJMP	0x0427
     426 9503      INC	R16
     427 380F      CPI	R16,0x8F
     428 F3E8      BCS	0x0426
     429 9508      RET
_KS0108_12864LCD_Init:
     42A 9721      SBIW	R28,1
(0085)    }
(0086) 
(0087) /*----------------------------------------------------------------------------*-
(0088) 
(0089)    KS0108_12864LCD_Init()
(0090) 
(0091)    Set up LCD controller KS0108 before use it.
(0092) 
(0093) -*----------------------------------------------------------------------------*/
(0094) void KS0108_12864LCD_Init(void)
(0095)    {
(0096)    // Set up the ports, see 'Port.H' for port pins details
(0097)    LCD_DATA_PORT_DIR  = OUTPUT; // LED data PORT is an output
     42B EF8F      LDI	R24,0xFF
     42C BB8A      OUT	0x1A,R24
(0098)    LCD_INSTR_PORT_DIR = OUTPUT; // LED instruction PORT is an output
     42D BB81      OUT	0x11,R24
(0099)    LCD_DATA_PORT = 0x00;
     42E 2422      CLR	R2
     42F BA2B      OUT	0x1B,R2
(0100)    
(0101)    // Toggle reset
(0102)    LCD_INSTR_PORT |= LCD_RST;
     430 9A93      SBI	0x12,3
(0103)    Delay_1ms();
     431 DFF2      RCALL	_Delay_1ms
(0104)    
(0105)    LCD_INSTR_PORT &= ~LCD_RST;
     432 9893      CBI	0x12,3
(0106)    Delay_1ms();
     433 DFF0      RCALL	_Delay_1ms
(0107)    
(0108)    LCD_INSTR_PORT |=  LCD_RST;
     434 9A93      SBI	0x12,3
(0109)    Delay_1ms();
     435 DFEE      RCALL	_Delay_1ms
(0110)    
(0111)    // Setup column select and initialize display
(0112)    LCD_INSTR_PORT |=  LCD_CS1;
     436 9A94      SBI	0x12,4
(0113)    LCD_INSTR_PORT &= ~LCD_CS2;
     437 9895      CBI	0x12,5
(0114) 
(0115)    LCD_Send_Byte(DISPLAY_OFF, COMMAND, NORMAL); // Display OFF
     438 2422      CLR	R2
     439 8228      STD	Y+0,R2
     43A 2722      CLR	R18
     43B E30E      LDI	R16,0x3E
     43C D151      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
(0116)    LCD_Send_Byte(DISPLAY_STARTLINE, COMMAND, NORMAL);
     43D 2422      CLR	R2
     43E 8228      STD	Y+0,R2
     43F 2722      CLR	R18
     440 EC00      LDI	R16,0xC0
     441 D14C      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
(0117)    LCD_Send_Byte(DISPLAY_PAGE_SET, COMMAND, NORMAL);
     442 2422      CLR	R2
     443 8228      STD	Y+0,R2
     444 2722      CLR	R18
     445 EB08      LDI	R16,0xB8
     446 D147      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
(0118)    LCD_Send_Byte(DISPLAY_COLUMN_SET, COMMAND, NORMAL);
     447 2422      CLR	R2
     448 8228      STD	Y+0,R2
     449 2722      CLR	R18
     44A E400      LDI	R16,0x40
     44B D142      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
(0119)    LCD_Send_Byte(DISPLAY_ON, COMMAND, NORMAL); // Display ON
     44C 2422      CLR	R2
     44D 8228      STD	Y+0,R2
     44E 2722      CLR	R18
     44F E30F      LDI	R16,0x3F
     450 D13D      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
(0120)    
(0121)    LCD_INSTR_PORT &= ~LCD_CS1;
     451 9894      CBI	0x12,4
(0122)    LCD_INSTR_PORT |=  LCD_CS2;
     452 9A95      SBI	0x12,5
(0123) 
(0124)    LCD_Send_Byte(DISPLAY_OFF, COMMAND, NORMAL); // Display OFF
     453 2422      CLR	R2
     454 8228      STD	Y+0,R2
     455 2722      CLR	R18
     456 E30E      LDI	R16,0x3E
     457 D136      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
(0125)    LCD_Send_Byte(DISPLAY_STARTLINE, COMMAND, NORMAL);
     458 2422      CLR	R2
     459 8228      STD	Y+0,R2
     45A 2722      CLR	R18
     45B EC00      LDI	R16,0xC0
     45C D131      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
(0126)    LCD_Send_Byte(DISPLAY_PAGE_SET, COMMAND, NORMAL);
     45D 2422      CLR	R2
     45E 8228      STD	Y+0,R2
     45F 2722      CLR	R18
     460 EB08      LDI	R16,0xB8
     461 D12C      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
(0127)    LCD_Send_Byte(DISPLAY_COLUMN_SET, COMMAND, NORMAL);
     462 2422      CLR	R2
     463 8228      STD	Y+0,R2
     464 2722      CLR	R18
     465 E400      LDI	R16,0x40
     466 D127      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
(0128)    LCD_Send_Byte(DISPLAY_ON, COMMAND, NORMAL); // Display ON
     467 2422      CLR	R2
     468 8228      STD	Y+0,R2
     469 2722      CLR	R18
     46A E30F      LDI	R16,0x3F
     46B D122      RCALL	KS0108_12864LCD.C:LCD_Send_Byte
(0129)    
(0130)    Clear_Screen(NORMAL);
     46C 2700      CLR	R16
     46D D0D0      RCALL	KS0108_12864LCD.C:Clear_Screen
     46E 9621      ADIW	R28,1
     46F 9508      RET

⌨️ 快捷键说明

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