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

📄 lcd1286418.lst

📁 3D LCD for running graphical lCDs
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
     4BA EFCF      LDI	R28,0xFF
     4BB E1D0      LDI	R29,0x10
     4BC BFCD      OUT	0x3D,R28
     4BD BFDE      OUT	0x3E,R29
     4BE 53C2      SUBI	R28,0x32
     4BF 40D0      SBCI	R29,0
     4C0 EA0A      LDI	R16,0xAA
     4C1 8308      STD	Y+0,R16
     4C2 2400      CLR	R0
     4C3 E7ED      LDI	R30,0x7D
     4C4 E0F1      LDI	R31,1
     4C5 E015      LDI	R17,5
     4C6 38E5      CPI	R30,0x85
     4C7 07F1      CPC	R31,R17
     4C8 F011      BEQ	0x04CB
     4C9 9201      ST	R0,Z+
     4CA CFFB      RJMP	0x04C6
     4CB 8300      STD	Z+0,R16
     4CC EFE6      LDI	R30,0xF6
     4CD E0F8      LDI	R31,0x8
     4CE E0A0      LDI	R26,0
     4CF E0B1      LDI	R27,1
     4D0 E019      LDI	R17,0x9
     4D1 E000      LDI	R16,0
     4D2 BF0B      OUT	0x3B,R16
     4D3 37E3      CPI	R30,0x73
     4D4 07F1      CPC	R31,R17
     4D5 F021      BEQ	0x04DA
     4D6 95C8      LPM
     4D7 9631      ADIW	R30,1
     4D8 920D      ST	R0,X+
     4D9 CFF9      RJMP	0x04D3
     4DA D001      RCALL	_main
_exit:
     4DB CFFF      RJMP	_exit
_main:
  a                    --> Y,+7
  temp1                --> Y,+7
  temp                 --> Y,+6
     4DC 972A      SBIW	R28,0xA
FILE: F:\CODE\LCD1286418\main.c
(0001) /***********************************************************************************************
(0002) *  FILE NAME: main.c
(0003) *  PURPOSE: Main Function Of Firmware
(0004) *  DESCRIPTION:
(0005) *  DEVELOPMENT HISTORY:
(0006) *    Date         Author         Release                   Description Of Change
(0007) *  --------    ------------     ---------     ------------------------------------------------
(0008) *  08-04-11     XuGuohong         1.0                        Testing Edition    	     
(0009) /**********************************************************************************************/
(0010) 
(0011) /* Include Global Parameters */
(0012) #include <iom128v.h>
(0013) #include "avr.h"
(0014) 
(0015) /* Include Global Parameters */
(0016) 
(0017) /* Declare Prototypes */
(0018) 
(0019) /***************************************
(0020) *  FUNCTION NAME: Main
(0021) *  DESCRIPTION:
(0022) /***************************************/
(0023) void main(void)
(0024) {
(0025)     float temp;
(0026) 	unsigned char temp1;
(0027) 	unsigned char a;
(0028) 	SPL=0XFF;                        /* Stack Initialization */							
     4DD EF8F      LDI	R24,0xFF
     4DE BF8D      OUT	0x3D,R24
(0029) 	SPH=0X10;
     4DF E180      LDI	R24,0x10
     4E0 BF8E      OUT	0x3E,R24
(0030) 	LcdInit();						 /* Lcd Initialization */
     4E1 D01C      RCALL	_LcdInit
     4E2 C00F      RJMP	0x04F2
(0031) 	
(0032) 	
(0033) 
(0034)     // LcdDisplayDot(3,0,1);
(0035)     // LcdDisplayDot(70,1,1);
(0036)     // LcdDisplaySeg(2,2,0XFF);
(0037) 	// GuiDrawLine(127, 20, 0, 63, 1);
(0038) 	// GuiDrawCircle(70,20,13, 1);
(0039) 	// GuiDrawSquare(50,50,5,5,1);
(0040) 
(0041) 	// 画立
(0042)        //for(temp=0;temp<10;temp=temp+1)
(0043) 	   //{	
(0044) 	   //    GuiDrawCircle(63+temp,20+temp,15-temp, 1);
(0045) 	   //}
(0046) 	   
(0047) 	  // for(temp=0;temp<10;temp=temp+2)
(0048) 	  // {	
(0049) 	   //    GuiDrawCircle(100+temp,15+temp,10, 1);
(0050) 	  // }
(0051) 	   
(0052) 	// 画立方体
(0053)       // GuiDrawSquare(5,5,30,30,1);
(0054) 	 //  GuiDrawSquare(12,12,37,37,1);
(0055) 	   
(0056) 	  // GuiDrawLine(5, 5, 12, 12, 1);
(0057) 	 //  GuiDrawLine(30, 30, 37, 37, 1);
(0058) 	  
(0059) 	 ///  GuiDrawLine(5, 30, 12, 37, 1);
(0060) 	   //GuiDrawLine(30, 5, 37, 12, 1);
(0061) 	   
(0062) 	   //GuiDisCharF3(0,0,'1',1);
(0063) 	   //GuiDisCharF3(20,0,'2',1);
(0064) 	   //GuiDisCharF3(0,7,'3',1);
(0065) 	   //GuiDisCharF3(20,7,'4',1);  
(0066) 	   
(0067) 	     
(0068) 	/*  
(0069) 	  while(1)
(0070)  {		 
(0071) 	
(0072) 
(0073) 	  //GuiDisRoolStringF3(0,64,7,"Multi-parameter Water Quality Analyzer",1);
(0074) 	 DisStartLogo();
(0075) 	 LcdClr();
(0076) 	  
(0077) 	  GuiDisMainMenu();
(0078) 	  GuiDisStringF3(8,7,"17:59",1);
(0079) 	  GuiDisTemp(0,7,-10);
(0080) 	  
(0081) 	  GuiDisUsb(87,7); 
(0082) 	  GuiDisAcin(103,7);
(0083) 	  GuiDisBattery(113,7,6); 
(0084) 	   	  
(0085) 	  GuiDisShortIcon(111,0,0);
(0086) 	  GuiDisMenuIcon(1,0,0);
(0087) 	  
(0088) 	  GuiDisStringF3(1,2,"{Start Measure",1);
(0089) 	  GuiDisStringF3(1,3," Parameters Setup",1);
(0090) 	  GuiDisStringF3(1,4," Data Manage",1);
(0091) 	  GuiDisStringF3(1,5," System Setting",1);
(0092) 	  //GuiDisStringF3(8,7,"18:56",1);
(0093) 
(0094) 	  
(0095) 	  Delay10ms(60000);
(0096) 	  Delay10ms(60000);
(0097) 	  Delay10ms(60000);
(0098)    	  }
(0099) 	  */
(0100) 	   while(1)
(0101) 	  { 
(0102) 	  GuiDisRoolStringF3(25,102,4,"AVR 3D GRAPHICS DISPLAY...,ATMEGA128@16MHz LCD 128X64 DOTS",1);
     4E3 940E 16EA CALL	0x16EA
     4E5 E280      LDI	R24,0x20
     4E6 940E 161A CALL	0x161A
     4E8 D3FA      RCALL	_GuiDisRoolStringF3
(0103) 	  action();
     4E9 940E 0EBE CALL	_action
     4EB 940E 16EA CALL	0x16EA
(0104) 	  GuiDisRoolStringF3(25,102,4,"OVER! KK20Y@YAHOO.COM.CN 2008-4",1);
     4ED E080      LDI	R24,0
     4EE 940E 161A CALL	0x161A
     4F0 D3F2      RCALL	_GuiDisRoolStringF3
(0105) 	  LcdClr();
     4F1 D094      RCALL	_LcdClr
     4F2 CFF0      RJMP	0x04E3
     4F3 962A      ADIW	R28,0xA
     4F4 9508      RET
(0106) 	
(0107)        // NOP;
(0108) 	  }
(0109) }
(0110) 
(0111) /****************************************
(0112) *  FUNCTION NAME: Delay100ms 			*
(0113) *  DESCRIPTION: MCU CLOCK=11.0592Mhz    *
(0114) /***************************************/
(0115) void Delay100ms(void)
(0116) {
(0117)     unsigned int temp;   
(0118) 	unsigned char i;
(0119) 	for(i=0;i<100;i++)
_Delay100ms:
  i                    --> R16
  temp                 --> R18
     4F5 2700      CLR	R16
     4F6 C004      RJMP	0x04FB
(0120) 	{     
(0121)        for(temp=2000; temp>0;temp--)              /* Delay About 1ms */
     4F7 ED20      LDI	R18,0xD0
     4F8 E037      LDI	R19,7
     4F9 940E 169A CALL	0x169A
     4FB 3604      CPI	R16,0x64
     4FC F3D0      BCS	0x04F7
     4FD 9508      RET
FILE: F:\CODE\LCD1286418\lcd1286418.c
(0001) /***********************************************************************************************
(0002) *  FILE NAME: lcd1286418.c
(0003) *  PURPOSE: lcd1286418 drive Firmware
(0004) *  DESCRIPTION: KS0108
(0005) *  DEVELOPMENT HISTORY:
(0006) *    Date         Author         Release                   Description Of Change
(0007) *  --------    ------------     ---------     ------------------------------------------------
(0008) *  08-04-11     XuGuohong         1.0                        Testing Edition    	     
(0009) /**********************************************************************************************/
(0010) 
(0011) /* Include Global Parameters */
(0012) #include <iom128v.h>
(0013) #include "avr.h"
(0014) 
(0015) /* LCD PORTING ON ATMEGA128 */
(0016) /* D0---D7 */
(0017) #define LCDPORTDATA    PORTF
(0018) #define LCDDDRDATA     DDRF
(0019) #define LCDPINDATA     PINF
(0020) /* CS1 */
(0021) #define LCDPORTCS1     PORTE
(0022) #define LCDDDRCS1      DDRE
(0023) #define LCDCS1         PE2
(0024) /* CS2 */
(0025) #define LCDPORTCS2     PORTE
(0026) #define LCDDDRCS2      DDRE
(0027) #define LCDCS2         PE3
(0028) /* RW */
(0029) #define LCDPORTRW      PORTE
(0030) #define LCDDDRRW       DDRE
(0031) #define LCDRW          PE4
(0032) /* RS */
(0033) #define LCDPORTRS      PORTB
(0034) #define LCDDDRRS       DDRB
(0035) #define LCDRS          PB2
(0036) /* E */
(0037) #define LCDPORTEN      PORTB
(0038) #define LCDDDREN       DDRB
(0039) #define LCDEN          PB3
(0040) 
(0041) /* Include Global Parameters */
(0042) unsigned char displaybuffer[8][128];
(0043) 
(0044) /* Declare Prototypes */
(0045) void LcdInit(void);
(0046) void LcdWrCmd(unsigned char,unsigned char);
(0047) void LcdWrDat(unsigned char,unsigned char);
(0048) unsigned char LcdRdSta(unsigned char);
(0049) unsigned char LcdRdDat(unsigned char);
(0050) unsigned char LcdBusy(void);
(0051) void LcdClr(void);
(0052) void LcdDisplaySeg(unsigned char,unsigned char,unsigned char);
(0053) void LcdDisplayDot(unsigned char,unsigned char,unsigned char);
(0054) void LcdDsiplayRefresh(void);
(0055) void Delay1ms(void);
(0056) 
(0057) /*****************************************
(0058) *  FUNCTION NAME: LcdInit
(0059) *  DESCRIPTION:   LCD Initialization
(0060) /*****************************************/
(0061) void LcdInit(void)
(0062) {
(0063)     /* Ports Initialization */
(0064) 	SetBit(LCDPORTCS1,LCDCS1);	
_LcdInit:
     4FE 9A1A      SBI	0x03,2
(0065) 	SetBit(LCDPORTCS2,LCDCS2);
     4FF 9A1B      SBI	0x03,3
(0066) 	ClrBit(LCDPORTEN,LCDEN);	
     500 98C3      CBI	0x18,3
(0067) 	SetOutput(LCDDDRRS,LCDRS);	
     501 9ABA      SBI	0x17,2
(0068)     SetOutput(LCDDDRRW,LCDRW);
     502 9A14      SBI	0x02,4
(0069)     SetOutput(LCDDDRCS1,LCDCS1);	
     503 9A12      SBI	0x02,2
(0070) 	SetOutput(LCDDDRCS2,LCDCS2);	
     504 9A13      SBI	0x02,3
(0071) 	SetOutput(LCDDDREN,LCDEN);
     505 9ABB      SBI	0x17,3
(0072) 	Delay1ms();
     506 D167      RCALL	_Delay1ms
(0073) 	/* Lcd Clear */
(0074) 	LcdClr();
     507 D07E      RCALL	_LcdClr
     508 9508      RET
_LcdWrCmd:
  data                 --> R10
  chiplr               --> R20
     509 940E 1780 CALL	0x1780
(0075) }
(0076) 
(0077) /*****************************************
(0078) *  FUNCTION NAME: LcdWrCmd
(0079) *  DESCRIPTION:   Write Command To LCD 
(0080) *                 chiplr = "L" or "R"
(0081) *                 chiplr = " B "同时选中
(0082) /*****************************************/
(0083) void LcdWrCmd(unsigned char chiplr,unsigned char data)
(0084) {
(0085) 	while(LcdBusy() == 0)                   /* IF LCD BUSY,WAIT... */
     50B D067      RCALL	_LcdBusy
     50C 2300      TST	R16
     50D F3E9      BEQ	0x050B
(0086)         ;
(0087) 	ClrBit(LCDPORTRS,LCDRS);				/* RS = 0 ,COMMAND */
     50E 98C2      CBI	0x18,2
(0088) 	ClrBit(LCDPORTRW,LCDRW);				/* RW = 0 ,WRITE */
     50F 981C      CBI	0x03,4
(0089) 	if(chiplr == 'L')						/* CS = 0 ,CHIP SELECT */
     510 344C      CPI	R20,0x4C
     511 F411      BNE	0x0514
(0090) 	    ClrBit(LCDPORTCS1,LCDCS1);
     512 981A      CBI	0x03,2
     513 C006      RJMP	0x051A
(0091) 	else if(chiplr == 'R')
     514 3542      CPI	R20,0x52
     515 F411      BNE	0x0518
(0092) 	    ClrBit(LCDPORTCS2,LCDCS2);
     516 981B      CBI	0x03,3
     517 C002      RJMP	0x051A
(0093) 	else
(0094) 	    {
(0095) 		    ClrBit(LCDPORTCS1,LCDCS1);
     518 981A      CBI	0x03,2
(0096) 		    ClrBit(LCDPORTCS2,LCDCS2);
     519 981B      CBI	0x03,3
(0097) 		}
(0098)     NOP;						  		   /* DELAY AT LEAS;T 140ns */
     51A 0000      NOP
(0099) 	NOP;
     51B 0000      NOP
(0100) 	SetBit(LCDPORTEN,LCDEN); 			   /* EN = 1 */
     51C 9AC3      SBI	0x18,3
     51D 940E 15B4 CALL	0x15B4
(0101) 	NOP;						  		   /* DELAY AT LEAST 450ns */
(0102) 	NOP;
(0103) 	NOP;
(0104) 	NOP;
(0105) 	NOP;
     51F 0000      NOP
(0106) 	LCDDDRDATA = 0XFF;                     /* WRITE DATA TO LCD */
     520 EF8F      LDI	R24,0xFF
     521 9380 0061 STS	0x0061,R24
(0107) 	LCDPORTDATA = data;
     523 92A0 0062 STS	0x0062,R10
     525 940E 163A CALL	0x163A
(0108) 	ClrBit(LCDPORTEN,LCDEN); 			   /* EN = 0 */
(0109) 	NOP;                                   /* DELAY AT LEAST 10ns */
(0110) 	SetBit(LCDPORTCS1,LCDCS1);	           /* CHIP DISABLE */		
(0111) 	SetBit(LCDPORTCS2,LCDCS2);
(0112) 	NOP;
     527 9149      LD	R20,Y+
     528 90A9      LD	R10,Y+
     529 9508      RET
_LcdWrDat:
  data                 --> R10
  chiplr               --> R20
     52A 940E 1780 CALL	0x1780
(0113) }
(0114) 
(0115) /*****************************************
(0116) *  FUNCTION NAME: LcdWrDat
(0117) *  DESCRIPTION:   Write Data To LCD 
(0118) *                 chiplr = "L" or "R"
(0119) /*****************************************/
(0120) void LcdWrDat(unsigned char chiplr,unsigned char data)
(0121) {
(0122)     while(LcdBusy() == 0)                   /* IF LCD BUSY,WAIT... */
     52C D046      RCALL	_LcdBusy
     52D 2300      TST	R16
     52E F3E9      BEQ	0x052C
(0123) 	    ;
(0124) 	SetBit(LCDPORTRS,LCDRS);				/* RS = 0 ,COMMAND */
     52F 9AC2      SBI	0x18,2
(0125) 	ClrBit(LCDPORTRW,LCDRW);				/* RW = 0 ,WRITE */
     530 981C      CBI	0x03,4
(0126) 	if(chiplr == 'L')						/* CS = 0 ,CHIP SELECT */
     531 344C      CPI	R20,0x4C
     532 F411      BNE	0x0535
(0127) 	    ClrBit(LCDPORTCS1,LCDCS1);
     533 981A      CBI	0x03,2
     534 C006      RJMP	0x053B
(0128) 	else if(chiplr == 'R')
     535 3542      CPI	R20,0x52
     536 F411      BNE	0x0539
(0129) 	    ClrBit(LCDPORTCS2,LCDCS2);
     537 981B      CBI	0x03,3
     538 C002      RJMP	0x053B
(0130) 	else
(0131) 	    {
(0132) 		    ClrBit(LCDPORTCS1,LCDCS1);
     539 981A      CBI	0x03,2

⌨️ 快捷键说明

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