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

📄 lcddrive.lst

📁 一个基于MEGA16的GUI
💻 LST
📖 第 1 页 / 共 5 页
字号:
   1               		.file	"lcddrive.c"
   2               		.arch atmega16
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
 124               	.global	LcdPenColor
 125               		.data
 128               	LcdPenColor:
 129 0000 FF0F      		.word	4095
 130               		.text
 133               	.global	LcdSendData
 135               	LcdSendData:
   1:lcddrive.c    **** /****************************************************************************************
   2:lcddrive.c    **** * 文件名:LCDDRIVE.C
   3:lcddrive.c    **** * 功能:图形液晶98*67驱动(型号为3510I(S1D15G14))
   4:lcddrive.c    **** * 硬件连接:
   5:lcddrive.c    **** * Pin1 _Reset             ------------------>     PD0  
   6:lcddrive.c    **** * Pin2 _Cs                ------------------>     PD1
   7:lcddrive.c    **** * Pin3 Gnd                ------------------>     GND
   8:lcddrive.c    **** * Pin4 Sdata              ------------------>     PD2     
   9:lcddrive.c    **** * Pin5 Sclk               ------------------>     PD3
  10:lcddrive.c    **** * Pin6 Vdigital 1.8V      ------------------>     3.3V
  11:lcddrive.c    **** * Pin7 Vbooster in 2.7V   ------------------>     3.3V
  12:lcddrive.c    **** * Pin8 Vlcd max.12V       ------------------>     0.1UF->GND 
  13:lcddrive.c    **** ****************************************************************************************/
  14:lcddrive.c    **** #include "config.h"
  15:lcddrive.c    **** 
  16:lcddrive.c    **** //TCOLOR  	gui_disp_buf[GUI_LCM_YMAX][GUI_LCM_XMAX/8];				// 声明GUI显示缓冲区
  17:lcddrive.c    **** 
  18:lcddrive.c    **** 
  19:lcddrive.c    **** 
  20:lcddrive.c    **** 
  21:lcddrive.c    **** //volatile uint16 LcdBakColor=CERULEAN;
  22:lcddrive.c    **** volatile uint16 LcdPenColor=0xfff;
  23:lcddrive.c    **** 	
  24:lcddrive.c    **** /***********************************************************************
  25:lcddrive.c    **** * 名称:LcdSendData()
  26:lcddrive.c    **** * 功能:写数据子程序。(发送数据前,不检查液晶模块的状态)
  27:lcddrive.c    **** * 入口参数:dat  	要写入LCD的数据
  28:lcddrive.c    **** * 出口参数:无
  29:lcddrive.c    **** * 说明:函数会设置LCM数据总线为输出方式
  30:lcddrive.c    **** ***********************************************************************/
  31:lcddrive.c    **** void LcdSendData(uint8 Data)
  32:lcddrive.c    **** {
 137               	.LM1:
 138               	/* prologue: frame size=0 */
 139               	/* prologue end (size=0) */
 140 0000 982F      		mov r25,r24
  33:lcddrive.c    ****  uint8 i;
  34:lcddrive.c    ****  SetSdataOut();
  35:lcddrive.c    ****  ClrLcdCs();
 142               	.LM2:
 143               	/* #APP */
 144 0002 9298      		 CBI 0x12,2
 145               		
  36:lcddrive.c    ****  ClrLcdSclk();
 147               	.LM3:
 148 0004 DF98      		 CBI 0x1b,7
 149               		
  37:lcddrive.c    ****  SetLcdSdata();
 151               	.LM4:
 152 0006 C79A      		 SBI 0x18,7
 153               		
  38:lcddrive.c    ****  SetLcdSclk();
 155               	.LM5:
 156 0008 DF9A      		 SBI 0x1b,7
 157               		
 158               	/* #NOAPP */
 159 000a 30E8      		ldi r19,lo8(-128)
 160 000c 27E0      		ldi r18,lo8(7)
 161               	.L5:
  39:lcddrive.c    **** 
  40:lcddrive.c    ****  for(i=0;i<8;i++)
  41:lcddrive.c    ****   {
  42:lcddrive.c    ****     PORTA=0x00;
 163               	.LM6:
 164 000e 1BBA      		out 59-0x20,__zero_reg__
  43:lcddrive.c    **** 	PORTB=Data&0x80;
 166               	.LM7:
 167 0010 892F      		mov r24,r25
 168 0012 8078      		andi r24,lo8(-128)
 169 0014 88BB      		out 56-0x20,r24
  44:lcddrive.c    **** 	PORTA=0x80;
 171               	.LM8:
 172 0016 3BBB      		out 59-0x20,r19
  45:lcddrive.c    **** 	Data<<=1;
 174               	.LM9:
 175 0018 990F      		lsl r25
 177               	.LM10:
 178 001a 2150      		subi r18,lo8(-(-1))
 179 001c 27FF      		sbrs r18,7
 180 001e F7CF      		rjmp .L5
 181               	/* epilogue: frame size=0 */
 182 0020 0895      		ret
 183               	/* epilogue end (size=1) */
 184               	/* function LcdSendData size 29 (28) */
 189               	.Lscope0:
 192               	.global	DelayXms
 194               	DelayXms:
  46:lcddrive.c    ****   /*
  47:lcddrive.c    ****    ClrLcdSclk();
  48:lcddrive.c    ****    if(Data& DCB2HEX_TAB[i] )
  49:lcddrive.c    ****     {
  50:lcddrive.c    ****      SetLcdSdata();
  51:lcddrive.c    ****     }
  52:lcddrive.c    ****    else
  53:lcddrive.c    ****     {
  54:lcddrive.c    ****      ClrLcdSdata();
  55:lcddrive.c    ****     }
  56:lcddrive.c    ****    SetLcdSclk();
  57:lcddrive.c    ****    */
  58:lcddrive.c    ****   }
  59:lcddrive.c    **** }
  60:lcddrive.c    **** 
  61:lcddrive.c    **** 
  62:lcddrive.c    **** 
  63:lcddrive.c    **** /***********************************************************************
  64:lcddrive.c    **** * 名称:DelayXms()
  65:lcddrive.c    **** * 功能:读取状态字子程序。
  66:lcddrive.c    **** * 入口参数:延时毫秒数:
  67:lcddrive.c    **** * 出口参数:
  68:lcddrive.c    **** * 说明:
  69:lcddrive.c    **** ***********************************************************************/
  70:lcddrive.c    **** /*****************************************
  71:lcddrive.c    **** 延时函数,用来给液晶操作延时,
  72:lcddrive.c    **** ******************************************/
  73:lcddrive.c    **** 
  74:lcddrive.c    **** void DelayXms(uint16 xs)
  75:lcddrive.c    **** {
 196               	.LM11:
 197               	/* prologue: frame size=0 */
 198 0022 CF93      		push r28
 199 0024 DF93      		push r29
 200               	/* prologue end (size=2) */
 202               	.Ltext1:
   1:F:/Program Files/WINAVR/avr/include/util/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz
   2:F:/Program Files/WINAVR/avr/include/util/delay.h ****    Copyright (c) 2004,2005 Joerg Wunsch
   3:F:/Program Files/WINAVR/avr/include/util/delay.h ****    All rights reserved.
   4:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
   5:F:/Program Files/WINAVR/avr/include/util/delay.h ****    Redistribution and use in source and binary forms, with or without
   6:F:/Program Files/WINAVR/avr/include/util/delay.h ****    modification, are permitted provided that the following conditions are met:
   7:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
   8:F:/Program Files/WINAVR/avr/include/util/delay.h ****    * Redistributions of source code must retain the above copyright
   9:F:/Program Files/WINAVR/avr/include/util/delay.h ****      notice, this list of conditions and the following disclaimer.
  10:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  11:F:/Program Files/WINAVR/avr/include/util/delay.h ****    * Redistributions in binary form must reproduce the above copyright
  12:F:/Program Files/WINAVR/avr/include/util/delay.h ****      notice, this list of conditions and the following disclaimer in
  13:F:/Program Files/WINAVR/avr/include/util/delay.h ****      the documentation and/or other materials provided with the
  14:F:/Program Files/WINAVR/avr/include/util/delay.h ****      distribution.
  15:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  16:F:/Program Files/WINAVR/avr/include/util/delay.h ****    * Neither the name of the copyright holders nor the names of
  17:F:/Program Files/WINAVR/avr/include/util/delay.h ****      contributors may be used to endorse or promote products derived
  18:F:/Program Files/WINAVR/avr/include/util/delay.h ****      from this software without specific prior written permission.
  19:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  20:F:/Program Files/WINAVR/avr/include/util/delay.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  21:F:/Program Files/WINAVR/avr/include/util/delay.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22:F:/Program Files/WINAVR/avr/include/util/delay.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23:F:/Program Files/WINAVR/avr/include/util/delay.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  24:F:/Program Files/WINAVR/avr/include/util/delay.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  25:F:/Program Files/WINAVR/avr/include/util/delay.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  26:F:/Program Files/WINAVR/avr/include/util/delay.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  27:F:/Program Files/WINAVR/avr/include/util/delay.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  28:F:/Program Files/WINAVR/avr/include/util/delay.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  29:F:/Program Files/WINAVR/avr/include/util/delay.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  30:F:/Program Files/WINAVR/avr/include/util/delay.h ****   POSSIBILITY OF SUCH DAMAGE. */
  31:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  32:F:/Program Files/WINAVR/avr/include/util/delay.h **** /* $Id: delay.h,v 1.1.2.1 2005/12/12 23:19:49 joerg_wunsch Exp $ */
  33:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  34:F:/Program Files/WINAVR/avr/include/util/delay.h **** #ifndef _UTIL_DELAY_H_
  35:F:/Program Files/WINAVR/avr/include/util/delay.h **** #define _UTIL_DELAY_H_ 1
  36:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  37:F:/Program Files/WINAVR/avr/include/util/delay.h **** #include <inttypes.h>
  38:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  39:F:/Program Files/WINAVR/avr/include/util/delay.h **** /** \defgroup util_delay <util/delay.h>: Busy-wait delay loops
  40:F:/Program Files/WINAVR/avr/include/util/delay.h ****     \code
  41:F:/Program Files/WINAVR/avr/include/util/delay.h ****     #define F_CPU 1000000UL  // 1 MHz
  42:F:/Program Files/WINAVR/avr/include/util/delay.h ****     //#define F_CPU 14.7456E6
  43:F:/Program Files/WINAVR/avr/include/util/delay.h ****     #include <util/delay.h>
  44:F:/Program Files/WINAVR/avr/include/util/delay.h ****     \endcode
  45:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  46:F:/Program Files/WINAVR/avr/include/util/delay.h ****     \note As an alternative method, it is possible to pass the
  47:F:/Program Files/WINAVR/avr/include/util/delay.h ****     F_CPU macro down to the compiler from the Makefile.
  48:F:/Program Files/WINAVR/avr/include/util/delay.h ****     Obviously, in that case, no \c \#define statement should be
  49:F:/Program Files/WINAVR/avr/include/util/delay.h ****     used.
  50:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  51:F:/Program Files/WINAVR/avr/include/util/delay.h ****     The functions in this header file implement simple delay loops
  52:F:/Program Files/WINAVR/avr/include/util/delay.h ****     that perform a busy-waiting.  They are typically used to
  53:F:/Program Files/WINAVR/avr/include/util/delay.h ****     facilitate short delays in the program execution.  They are
  54:F:/Program Files/WINAVR/avr/include/util/delay.h ****     implemented as count-down loops with a well-known CPU cycle
  55:F:/Program Files/WINAVR/avr/include/util/delay.h ****     count per loop iteration.  As such, no other processing can
  56:F:/Program Files/WINAVR/avr/include/util/delay.h ****     occur simultaneously.  It should be kept in mind that the
  57:F:/Program Files/WINAVR/avr/include/util/delay.h ****     functions described here do not disable interrupts.
  58:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  59:F:/Program Files/WINAVR/avr/include/util/delay.h ****     In general, for long delays, the use of hardware timers is
  60:F:/Program Files/WINAVR/avr/include/util/delay.h ****     much preferrable, as they free the CPU, and allow for
  61:F:/Program Files/WINAVR/avr/include/util/delay.h ****     concurrent processing of other events while the timer is
  62:F:/Program Files/WINAVR/avr/include/util/delay.h ****     running.  However, in particular for very short delays, the
  63:F:/Program Files/WINAVR/avr/include/util/delay.h ****     overhead of setting up a hardware timer is too much compared
  64:F:/Program Files/WINAVR/avr/include/util/delay.h ****     to the overall delay time.
  65:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  66:F:/Program Files/WINAVR/avr/include/util/delay.h ****     Two inline functions are provided for the actual delay algorithms.
  67:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  68:F:/Program Files/WINAVR/avr/include/util/delay.h ****     Two wrapper functions allow the specification of microsecond, and
  69:F:/Program Files/WINAVR/avr/include/util/delay.h ****     millisecond delays directly, using the application-supplied macro
  70:F:/Program Files/WINAVR/avr/include/util/delay.h ****     F_CPU as the CPU clock frequency (in Hertz).  These functions
  71:F:/Program Files/WINAVR/avr/include/util/delay.h ****     operate on double typed arguments, however when optimization is
  72:F:/Program Files/WINAVR/avr/include/util/delay.h ****     turned on, the entire floating-point calculation will be done at
  73:F:/Program Files/WINAVR/avr/include/util/delay.h ****     compile-time.
  74:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  75:F:/Program Files/WINAVR/avr/include/util/delay.h ****     \note When using _delay_us() and _delay_ms(), the expressions
  76:F:/Program Files/WINAVR/avr/include/util/delay.h ****     passed as arguments to these functions shall be compile-time
  77:F:/Program Files/WINAVR/avr/include/util/delay.h ****     constants, otherwise the floating-point calculations to setup the
  78:F:/Program Files/WINAVR/avr/include/util/delay.h ****     loops will be done at run-time, thereby drastically increasing
  79:F:/Program Files/WINAVR/avr/include/util/delay.h ****     both the resulting code size, as well as the time required to
  80:F:/Program Files/WINAVR/avr/include/util/delay.h ****     setup the loops.
  81:F:/Program Files/WINAVR/avr/include/util/delay.h **** */
  82:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  83:F:/Program Files/WINAVR/avr/include/util/delay.h **** #if !defined(__DOXYGEN__)
  84:F:/Program Files/WINAVR/avr/include/util/delay.h **** static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
  85:F:/Program Files/WINAVR/avr/include/util/delay.h **** static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
  86:F:/Program Files/WINAVR/avr/include/util/delay.h **** static inline void _delay_us(double __us) __attribute__((always_inline));
  87:F:/Program Files/WINAVR/avr/include/util/delay.h **** static inline void _delay_ms(double __ms) __attribute__((always_inline));
  88:F:/Program Files/WINAVR/avr/include/util/delay.h **** #endif
  89:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  90:F:/Program Files/WINAVR/avr/include/util/delay.h **** /** \ingroup util_delay
  91:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  92:F:/Program Files/WINAVR/avr/include/util/delay.h ****     Delay loop using an 8-bit counter \c __count, so up to 256
  93:F:/Program Files/WINAVR/avr/include/util/delay.h ****     iterations are possible.  (The value 256 would have to be passed
  94:F:/Program Files/WINAVR/avr/include/util/delay.h ****     as 0.)  The loop executes three CPU cycles per iteration, not
  95:F:/Program Files/WINAVR/avr/include/util/delay.h ****     including the overhead the compiler needs to setup the counter
  96:F:/Program Files/WINAVR/avr/include/util/delay.h ****     register.
  97:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
  98:F:/Program Files/WINAVR/avr/include/util/delay.h ****     Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
  99:F:/Program Files/WINAVR/avr/include/util/delay.h ****     can be achieved.
 100:F:/Program Files/WINAVR/avr/include/util/delay.h **** */
 101:F:/Program Files/WINAVR/avr/include/util/delay.h **** void
 102:F:/Program Files/WINAVR/avr/include/util/delay.h **** _delay_loop_1(uint8_t __count)
 103:F:/Program Files/WINAVR/avr/include/util/delay.h **** {
 104:F:/Program Files/WINAVR/avr/include/util/delay.h **** 	__asm__ volatile (
 105:F:/Program Files/WINAVR/avr/include/util/delay.h **** 		"1: dec %0" "\n\t"
 106:F:/Program Files/WINAVR/avr/include/util/delay.h **** 		"brne 1b"
 107:F:/Program Files/WINAVR/avr/include/util/delay.h **** 		: "=r" (__count)
 108:F:/Program Files/WINAVR/avr/include/util/delay.h **** 		: "0" (__count)
 109:F:/Program Files/WINAVR/avr/include/util/delay.h **** 	);
 110:F:/Program Files/WINAVR/avr/include/util/delay.h **** }
 111:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
 112:F:/Program Files/WINAVR/avr/include/util/delay.h **** /** \ingroup util_delay
 113:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
 114:F:/Program Files/WINAVR/avr/include/util/delay.h ****     Delay loop using a 16-bit counter \c __count, so up to 65536
 115:F:/Program Files/WINAVR/avr/include/util/delay.h ****     iterations are possible.  (The value 65536 would have to be
 116:F:/Program Files/WINAVR/avr/include/util/delay.h ****     passed as 0.)  The loop executes four CPU cycles per iteration,
 117:F:/Program Files/WINAVR/avr/include/util/delay.h ****     not including the overhead the compiler requires to setup the
 118:F:/Program Files/WINAVR/avr/include/util/delay.h ****     counter register pair.
 119:F:/Program Files/WINAVR/avr/include/util/delay.h **** 
 120:F:/Program Files/WINAVR/avr/include/util/delay.h ****     Thus, at a CPU speed of 1 MHz, delays of up to about 262.1
 121:F:/Program Files/WINAVR/avr/include/util/delay.h ****     milliseconds can be achieved.
 122:F:/Program Files/WINAVR/avr/include/util/delay.h ****  */
 123:F:/Program Files/WINAVR/avr/include/util/delay.h **** void
 124:F:/Program Files/WINAVR/avr/include/util/delay.h **** _delay_loop_2(uint16_t __count)
 125:F:/Program Files/WINAVR/avr/include/util/delay.h **** {
 126:F:/Program Files/WINAVR/avr/include/util/delay.h **** 	__asm__ volatile (
 204               	.LM12:
 205 0026 9C01      		movw r18,r24
 206 0028 2150      		subi r18,lo8(-(-1))
 207 002a 3040      		sbci r19,hi8(-(-1))
 208 002c 8FEF      		ldi r24,hi8(-1)
 209 002e 2F3F      		cpi r18,lo8(-1)
 210 0030 3807      		cpc r19,r24
 211 0032 69F0      		breq .L21
 212 0034 ACEC      		ldi r26,lo8(2764)
 213 0036 BAE0      		ldi r27,hi8(2764)
 214 0038 C0E0      		ldi r28,hlo8(2764)
 215 003a D0E0      		ldi r29,hhi8(2764)
 216               	.L19:
 217               	.LBB2:
 218               	.LBB3:
 219               	.LBB4:
 220               	.LBB5:
 222               	.LM13:
 223 003c CD01      		movw r24,r26
 224               	/* #APP */
 225 003e 0197      		1: sbiw r24,1
 226 0040 F1F7      		brne 1b
 227               	/* #NOAPP */
 228               	.LBE5:

⌨️ 快捷键说明

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