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

📄 main.lst

📁 诺基亚3310手机液晶屏驱动程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
   1               		.file	"main.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:
  79               	.global	DelayMs
  81               	DelayMs:
  83               	.Ltext1:
   1:mydelay.h     ****    /*-----------------------------------------------------------------------
   2:mydelay.h     **** 延时函数
   3:mydelay.h     **** 系统时钟:8M
   4:mydelay.h     **** -----------------------------------------------------------------------*/
   5:mydelay.h     **** /*key words
   6:mydelay.h     **** 
   7:mydelay.h     **** void DelayMs(unsigned int );
   8:mydelay.h     **** void Delay(Unsigned int );
   9:mydelay.h     **** 
  10:mydelay.h     **** */
  11:mydelay.h     **** 
  12:mydelay.h     **** #ifndef _mydelay_H_
  13:mydelay.h     **** #define _mydelay_H_
  14:mydelay.h     **** 
  15:mydelay.h     **** #include <avr/delay.h>
  16:mydelay.h     **** 
  17:mydelay.h     **** #define FEQ 8    //系统时钟8MHz
  18:mydelay.h     **** 
  19:mydelay.h     **** 
  20:mydelay.h     **** void DelayMs(unsigned int t)
  21:mydelay.h     **** {
  84               	ze=0) */
  85               		movw r20,r24
  86               		ldi r18,lo8(0)
  87               		ldi r19,hi8(0)
  88 0000 AC01      		ldi r30,lo8(2000)
  89 0002 20E0      		ldi r31,hi8(2000)
  90 0004 30E0      		rjmp .L2
  91 0006 E0ED      	.L3:
  92 0008 F7E0      	.LBB20:
  93 000a 00C0      	.LBB21:
  95               	.Ltext2:
  97               	.LM1:
  98               		movw r24,r30
   1:c:/winavr/bin/../avr/include/util/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz
   2:c:/winavr/bin/../avr/include/util/delay.h ****    Copyright (c) 2004,2005 Joerg Wunsch
   3:c:/winavr/bin/../avr/include/util/delay.h ****    All rights reserved.
   4:c:/winavr/bin/../avr/include/util/delay.h **** 
   5:c:/winavr/bin/../avr/include/util/delay.h ****    Redistribution and use in source and binary forms, with or without
   6:c:/winavr/bin/../avr/include/util/delay.h ****    modification, are permitted provided that the following conditions are met:
   7:c:/winavr/bin/../avr/include/util/delay.h **** 
   8:c:/winavr/bin/../avr/include/util/delay.h ****    * Redistributions of source code must retain the above copyright
   9:c:/winavr/bin/../avr/include/util/delay.h ****      notice, this list of conditions and the following disclaimer.
  10:c:/winavr/bin/../avr/include/util/delay.h **** 
  11:c:/winavr/bin/../avr/include/util/delay.h ****    * Redistributions in binary form must reproduce the above copyright
  12:c:/winavr/bin/../avr/include/util/delay.h ****      notice, this list of conditions and the following disclaimer in
  13:c:/winavr/bin/../avr/include/util/delay.h ****      the documentation and/or other materials provided with the
  14:c:/winavr/bin/../avr/include/util/delay.h ****      distribution.
  15:c:/winavr/bin/../avr/include/util/delay.h **** 
  16:c:/winavr/bin/../avr/include/util/delay.h ****    * Neither the name of the copyright holders nor the names of
  17:c:/winavr/bin/../avr/include/util/delay.h ****      contributors may be used to endorse or promote products derived
  18:c:/winavr/bin/../avr/include/util/delay.h ****      from this software without specific prior written permission.
  19:c:/winavr/bin/../avr/include/util/delay.h **** 
  20:c:/winavr/bin/../avr/include/util/delay.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  21:c:/winavr/bin/../avr/include/util/delay.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22:c:/winavr/bin/../avr/include/util/delay.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23:c:/winavr/bin/../avr/include/util/delay.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  24:c:/winavr/bin/../avr/include/util/delay.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  25:c:/winavr/bin/../avr/include/util/delay.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  26:c:/winavr/bin/../avr/include/util/delay.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  27:c:/winavr/bin/../avr/include/util/delay.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  28:c:/winavr/bin/../avr/include/util/delay.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  29:c:/winavr/bin/../avr/include/util/delay.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  30:c:/winavr/bin/../avr/include/util/delay.h ****   POSSIBILITY OF SUCH DAMAGE. */
  31:c:/winavr/bin/../avr/include/util/delay.h **** 
  32:c:/winavr/bin/../avr/include/util/delay.h **** /* $Id: delay.h,v 1.1.2.1 2005/12/12 23:19:49 joerg_wunsch Exp $ */
  33:c:/winavr/bin/../avr/include/util/delay.h **** 
  34:c:/winavr/bin/../avr/include/util/delay.h **** #ifndef _UTIL_DELAY_H_
  35:c:/winavr/bin/../avr/include/util/delay.h **** #define _UTIL_DELAY_H_ 1
  36:c:/winavr/bin/../avr/include/util/delay.h **** 
  37:c:/winavr/bin/../avr/include/util/delay.h **** #include <inttypes.h>
  38:c:/winavr/bin/../avr/include/util/delay.h **** 
  39:c:/winavr/bin/../avr/include/util/delay.h **** /** \defgroup util_delay <util/delay.h>: Busy-wait delay loops
  40:c:/winavr/bin/../avr/include/util/delay.h ****     \code
  41:c:/winavr/bin/../avr/include/util/delay.h ****     #define F_CPU 1000000UL  // 1 MHz
  42:c:/winavr/bin/../avr/include/util/delay.h ****     //#define F_CPU 14.7456E6
  43:c:/winavr/bin/../avr/include/util/delay.h ****     #include <util/delay.h>
  44:c:/winavr/bin/../avr/include/util/delay.h ****     \endcode
  45:c:/winavr/bin/../avr/include/util/delay.h **** 
  46:c:/winavr/bin/../avr/include/util/delay.h ****     \note As an alternative method, it is possible to pass the
  47:c:/winavr/bin/../avr/include/util/delay.h ****     F_CPU macro down to the compiler from the Makefile.
  48:c:/winavr/bin/../avr/include/util/delay.h ****     Obviously, in that case, no \c \#define statement should be
  49:c:/winavr/bin/../avr/include/util/delay.h ****     used.
  50:c:/winavr/bin/../avr/include/util/delay.h **** 
  51:c:/winavr/bin/../avr/include/util/delay.h ****     The functions in this header file implement simple delay loops
  52:c:/winavr/bin/../avr/include/util/delay.h ****     that perform a busy-waiting.  They are typically used to
  53:c:/winavr/bin/../avr/include/util/delay.h ****     facilitate short delays in the program execution.  They are
  54:c:/winavr/bin/../avr/include/util/delay.h ****     implemented as count-down loops with a well-known CPU cycle
  55:c:/winavr/bin/../avr/include/util/delay.h ****     count per loop iteration.  As such, no other processing can
  56:c:/winavr/bin/../avr/include/util/delay.h ****     occur simultaneously.  It should be kept in mind that the
  57:c:/winavr/bin/../avr/include/util/delay.h ****     functions described here do not disable interrupts.
  58:c:/winavr/bin/../avr/include/util/delay.h **** 
  59:c:/winavr/bin/../avr/include/util/delay.h ****     In general, for long delays, the use of hardware timers is
  60:c:/winavr/bin/../avr/include/util/delay.h ****     much preferrable, as they free the CPU, and allow for
  61:c:/winavr/bin/../avr/include/util/delay.h ****     concurrent processing of other events while the timer is
  62:c:/winavr/bin/../avr/include/util/delay.h ****     running.  However, in particular for very short delays, the
  63:c:/winavr/bin/../avr/include/util/delay.h ****     overhead of setting up a hardware timer is too much compared
  64:c:/winavr/bin/../avr/include/util/delay.h ****     to the overall delay time.
  65:c:/winavr/bin/../avr/include/util/delay.h **** 
  66:c:/winavr/bin/../avr/include/util/delay.h ****     Two inline functions are provided for the actual delay algorithms.
  67:c:/winavr/bin/../avr/include/util/delay.h **** 
  68:c:/winavr/bin/../avr/include/util/delay.h ****     Two wrapper functions allow the specification of microsecond, and
  69:c:/winavr/bin/../avr/include/util/delay.h ****     millisecond delays directly, using the application-supplied macro
  70:c:/winavr/bin/../avr/include/util/delay.h ****     F_CPU as the CPU clock frequency (in Hertz).  These functions
  71:c:/winavr/bin/../avr/include/util/delay.h ****     operate on double typed arguments, however when optimization is
  72:c:/winavr/bin/../avr/include/util/delay.h ****     turned on, the entire floating-point calculation will be done at
  73:c:/winavr/bin/../avr/include/util/delay.h ****     compile-time.
  74:c:/winavr/bin/../avr/include/util/delay.h **** 
  75:c:/winavr/bin/../avr/include/util/delay.h ****     \note When using _delay_us() and _delay_ms(), the expressions
  76:c:/winavr/bin/../avr/include/util/delay.h ****     passed as arguments to these functions shall be compile-time
  77:c:/winavr/bin/../avr/include/util/delay.h ****     constants, otherwise the floating-point calculations to setup the
  78:c:/winavr/bin/../avr/include/util/delay.h ****     loops will be done at run-time, thereby drastically increasing
  79:c:/winavr/bin/../avr/include/util/delay.h ****     both the resulting code size, as well as the time required to
  80:c:/winavr/bin/../avr/include/util/delay.h ****     setup the loops.
  81:c:/winavr/bin/../avr/include/util/delay.h **** */
  82:c:/winavr/bin/../avr/include/util/delay.h **** 
  83:c:/winavr/bin/../avr/include/util/delay.h **** #if !defined(__DOXYGEN__)
  84:c:/winavr/bin/../avr/include/util/delay.h **** static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
  85:c:/winavr/bin/../avr/include/util/delay.h **** static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
  86:c:/winavr/bin/../avr/include/util/delay.h **** static inline void _delay_us(double __us) __attribute__((always_inline));
  87:c:/winavr/bin/../avr/include/util/delay.h **** static inline void _delay_ms(double __ms) __attribute__((always_inline));
  88:c:/winavr/bin/../avr/include/util/delay.h **** #endif
  89:c:/winavr/bin/../avr/include/util/delay.h **** 
  90:c:/winavr/bin/../avr/include/util/delay.h **** /** \ingroup util_delay
  91:c:/winavr/bin/../avr/include/util/delay.h **** 
  92:c:/winavr/bin/../avr/include/util/delay.h ****     Delay loop using an 8-bit counter \c __count, so up to 256
  93:c:/winavr/bin/../avr/include/util/delay.h ****     iterations are possible.  (The value 256 would have to be passed
  94:c:/winavr/bin/../avr/include/util/delay.h ****     as 0.)  The loop executes three CPU cycles per iteration, not
  95:c:/winavr/bin/../avr/include/util/delay.h ****     including the overhead the compiler needs to setup the counter
  96:c:/winavr/bin/../avr/include/util/delay.h ****     register.
  97:c:/winavr/bin/../avr/include/util/delay.h **** 
  98:c:/winavr/bin/../avr/include/util/delay.h ****     Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
  99:c:/winavr/bin/../avr/include/util/delay.h ****     can be achieved.
 100:c:/winavr/bin/../avr/include/util/delay.h **** */
 101:c:/winavr/bin/../avr/include/util/delay.h **** void
 102:c:/winavr/bin/../avr/include/util/delay.h **** _delay_loop_1(uint8_t __count)
 103:c:/winavr/bin/../avr/include/util/delay.h **** {
 104:c:/winavr/bin/../avr/include/util/delay.h **** 	__asm__ volatile (
 105:c:/winavr/bin/../avr/include/util/delay.h **** 		"1: dec %0" "\n\t"
 106:c:/winavr/bin/../avr/include/util/delay.h **** 		"brne 1b"
 107:c:/winavr/bin/../avr/include/util/delay.h **** 		: "=r" (__count)
 108:c:/winavr/bin/../avr/include/util/delay.h **** 		: "0" (__count)
 109:c:/winavr/bin/../avr/include/util/delay.h **** 	);
 110:c:/winavr/bin/../avr/include/util/delay.h **** }
 111:c:/winavr/bin/../avr/include/util/delay.h **** 
 112:c:/winavr/bin/../avr/include/util/delay.h **** /** \ingroup util_delay
 113:c:/winavr/bin/../avr/include/util/delay.h **** 
 114:c:/winavr/bin/../avr/include/util/delay.h ****     Delay loop using a 16-bit counter \c __count, so up to 65536
 115:c:/winavr/bin/../avr/include/util/delay.h ****     iterations are possible.  (The value 65536 would have to be
 116:c:/winavr/bin/../avr/include/util/delay.h ****     passed as 0.)  The loop executes four CPU cycles per iteration,
 117:c:/winavr/bin/../avr/include/util/delay.h ****     not including the overhead the compiler requires to setup the
 118:c:/winavr/bin/../avr/include/util/delay.h ****     counter register pair.
 119:c:/winavr/bin/../avr/include/util/delay.h **** 
 120:c:/winavr/bin/../avr/include/util/delay.h ****     Thus, at a CPU speed of 1 MHz, delays of up to about 262.1
 121:c:/winavr/bin/../avr/include/util/delay.h ****     milliseconds can be achieved.
 122:c:/winavr/bin/../avr/include/util/delay.h ****  */
 123:c:/winavr/bin/../avr/include/util/delay.h **** void
 124:c:/winavr/bin/../avr/include/util/delay.h **** _delay_loop_2(uint16_t __count)
 125:c:/winavr/bin/../avr/include/util/delay.h **** {
 126:c:/winavr/bin/../avr/include/util/delay.h **** 	__asm__ volatile (
  99               	sbiw r24,1
 100               		brne 1b
 101 000c CF01      	/* #NOAPP */
 102               	.LBE21:
 103 000e 0197      	.LBE20:
 105               	.Ltext3:
 107               	.LM2:
 108               		subi r18,lo8(-(1))
 109               		sbci r19,hi8(-(1))
  22:mydelay.h     **** 	unsigned int i;
  23:mydelay.h     **** 	for(i=0;i<t;i++)
 110               	8,r20
 111               		cpc r19,r21
 112 0012 2F5F      		brne .L3
 113 0014 3F4F      	/* epilogue: frame size=0 */
 114               		ret
 115 0016 2417      	/* epilogue end (size=1) */
 116 0018 3507      	/* function DelayMs size 17 (16) */
 124               	.Lscope0:
 126               	.global	delay_1us
 128               	delay_1us:
 130               	.LM3:
 131               	/* prologue: frame size=0 */
 132               	/* prologue end (size=0) */
  24:mydelay.h     **** 		_delay_loop_2(FEQ * 250 );
  25:mydelay.h     **** }
  26:mydelay.h     **** 
  27:mydelay.h     **** 
  28:mydelay.h     **** 
  29:mydelay.h     ****    /*-----------------------------------------------------------------------
  30:mydelay.h     **** 软延时延时函数
  31:mydelay.h     **** 系统时钟:8M
  32:mydelay.h     **** -----------------------------------------------------------------------*/
  33:mydelay.h     **** void delay_1us(void)                 //1us延时函数
  34:mydelay.h     ****   {
 134               	 #NOAPP */
 135               	/* epilogue: frame size=0 */
 136               		ret
 137               	/* epilogue end (size=1) */
  35:mydelay.h     ****    asm("nop");
 138               	unction delay_1us size 3 (2) */
 140               	.Lscope1:
 143               	.global	delay_nus
 145               	delay_nus:
 147               	.LM5:
 148               	/* prologue: frame size=0 */
 149               	/* prologue end (size=0) */
 150               		ldi r18,lo8(0)
 151               		ldi r19,hi8(0)
 152               		rjmp .L9
 153               	.L10:
  36:mydelay.h     ****   // _delay_loop_2(250);//4
  37:mydelay.h     ****   
  38:mydelay.h     ****   }
  39:mydelay.h     **** 
  40:mydelay.h     **** void delay_nus(unsigned int n)       //N us延时函数
  41:mydelay.h     ****   {
 155               	.LM6:
 156               	/* #APP */
 157               		nop
 158 0022 20E0      	/* #NOAPP */
 159 0024 30E0      	.LBE23:
 160 0026 00C0      	.LBE22:
 162               	.LM7:
 163               		subi r18,lo8(-(1))
 164               		sbci r19,hi8(-(1))
 165               	.L9:
 166               		cp r18,r24
 167 0028 0000      		cpc r19,r25
 168               		brne .L10
 169               	/* epilogue: frame size=0 */
 170               		ret
  42:mydelay.h     ****    unsigned int i=0;
  43:mydelay.h     ****    for (i=0;i<n;i++)
 171               	size=1) */
 172               	/* function delay_nus size 11 (10) */
 177 0030 3907      	.Lscope2:
 179               	.global	delay_1ms
 181               	delay_1ms:
 183               	.LM8:
 184               	/* prologue: frame size=0 */
 185               	/* prologue end (size=0) */
 186               	/* epilogue: frame size=0 */
 187               		ret
 188               	/* epilogue end (size=1) */
 189               	/* function delay_1ms size 1 (0) */
 191               	.Lscope3:
  44:mydelay.h     ****    delay_1us();
  45:mydelay.h     ****   }
  46:mydelay.h     ****   
  47:mydelay.h     **** void delay_1ms(void)                 //1ms延时函数
  48:mydelay.h     ****   {
 192               	0,15)",36,0,0,delay_nms
 194               	.global	delay_nms
 196               	delay_nms:
 198               	.LM9:
 199               	/* prologue: frame size=0 */
 200               	/* prologue end (size=0) */
 201               	/* epilogue: frame size=0 */
 202               		ret
 203               	/* epilogue end (size=1) */
 204               	/* function delay_nms size 1 (0) */
 206               	.Lscope4:
  49:mydelay.h     ****    unsigned int i;
  50:mydelay.h     ****    for (i=0;i<1140;i++);
  51:mydelay.h     ****   }
  52:mydelay.h     ****   
  53:mydelay.h     **** void delay_nms(unsigned int n)       //N ms延时函数
  54:mydelay.h     **** {
 207               	s:F(0,15)",36,0,0,delay_s
 209               	.global	delay_s
 211               	delay_s:
 213               	.LM10:
 214               	/* prologue: frame size=0 */
 215               		push r16
 216               		push r17

⌨️ 快捷键说明

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