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

📄 main.lst

📁 avr单片机的一些实际应用源码
💻 LST
字号:
   1               		.file	"main.c"
   2               		.arch at90s2313
   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:
  53               	.global	DelayMs
  55               	DelayMs:
   1:main.c        **** /*
   2:main.c        **** 	avr-libc PWM测试程序
   3:main.c        **** 	main.c
   4:main.c        **** 	MCU:at90S2313
   5:main.c        **** 	
   6:main.c        **** 	芯艺 2004-09-10
   7:main.c        **** */
   8:main.c        **** 
   9:main.c        **** #include <avr/io.h>
  10:main.c        **** #include <avr/delay.h>
  11:main.c        **** 
  12:main.c        **** #define uchar unsigned char
  13:main.c        **** #define uint unsigned int 
  14:main.c        **** 
  15:main.c        **** #define FREQ 4
  16:main.c        **** 
  17:main.c        **** void DelayMs(uint ms)
  18:main.c        **** {
  57               	.LM1:
  58               	/* prologue: frame size=0 */
  59               	/* prologue end (size=0) */
  19:main.c        **** 	uint i;
  20:main.c        **** 	for(i=0;i<ms;i++)
  61               	.LM2:
  62 0000 0097      		sbiw r24,0
  63 0002 49F0      		breq .L8
  64 0004 282F      		mov r18,r24
  65 0006 392F      		mov r19,r25
  66               	.L6:
  67               	.LBB2:
  69               	.Ltext1:
   1:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz
   2:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****    All rights reserved.
   3:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 
   4:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****    Redistribution and use in source and binary forms, with or without
   5:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****    modification, are permitted provided that the following conditions are met:
   6:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 
   7:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****    * Redistributions of source code must retain the above copyright
   8:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****      notice, this list of conditions and the following disclaimer.
   9:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****    * Redistributions in binary form must reproduce the above copyright
  10:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****      notice, this list of conditions and the following disclaimer in
  11:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****      the documentation and/or other materials provided with the
  12:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****      distribution.
  13:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 
  14:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  15:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  16:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  17:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  18:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  19:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  20:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  21:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  22:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  23:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  24:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****   POSSIBILITY OF SUCH DAMAGE. */
  25:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 
  26:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* $Id: delay.h,v 1.2.2.2 2004/02/13 21:43:37 joerg_wunsch Exp $ */
  27:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 
  28:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /*
  29:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****    avr/delay.h - loops for small accurate delays
  30:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****  */
  31:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 
  32:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** #ifndef _AVR_DELAY_H_
  33:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** #define _AVR_DELAY_H_ 1
  34:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 
  35:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** #include <inttypes.h>
  36:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 
  37:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* 8-bit count, 3 cycles/loop */
  38:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** static __inline__ void
  39:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** _delay_loop_1(uint8_t __count)
  40:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** {
  41:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 	asm volatile (
  42:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 		"1: dec %0" "\n\t"
  43:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 		"brne 1b"
  44:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 		: "=r" (__count)
  45:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 		: "0" (__count)
  46:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 	);
  47:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** }
  48:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 
  49:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* 16-bit count, 4 cycles/loop */
  50:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** static __inline__ void
  51:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** _delay_loop_2(uint16_t __count)
  52:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** {
  71               	.LM3:
  72 0008 88EE      		ldi r24,lo8(1000)
  73 000a 93E0      		ldi r25,hi8(1000)
  74               	.LBB3:
  53:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** 	asm volatile (
  76               	.LM4:
  77               	/* #APP */
  78 000c 0197      		1: sbiw r24,1
  79 000e F1F7      		brne 1b
  80               	/* #NOAPP */
  81               	.LBE3:
  82               	.LBE2:
  84               	.Ltext2:
  86               	.LM5:
  87 0010 2150      		subi r18,lo8(-(-1))
  88 0012 3040      		sbci r19,hi8(-(-1))
  89 0014 C9F7      		brne .L6
  90               	.L8:
  91 0016 0895      		ret
  92               	/* epilogue: frame size=0 */
  93               	/* epilogue: noreturn */
  94               	/* epilogue end (size=0) */
  95               	/* function DelayMs size 16 (16) */
 102               	.global	main
 104               	main:
  21:main.c        **** 		_delay_loop_2(FREQ * 250);
  22:main.c        **** }
  23:main.c        **** 
  24:main.c        **** 
  25:main.c        **** int main (void)
  26:main.c        **** {
 106               	.LM6:
 107               	/* prologue: frame size=0 */
 108 0018 C0E0      		ldi r28,lo8(__stack - 0)
 109 001a D0E0      		ldi r29,hi8(__stack - 0)
 110 001c DEBF      		out __SP_H__,r29
 111 001e CDBF      		out __SP_L__,r28
 112               	/* prologue end (size=4) */
  27:main.c        **** 	uchar direction=1;
 114               	.LM7:
 115 0020 11E0      		ldi r17,lo8(1)
  28:main.c        **** 	uchar pwm=0;
 117               	.LM8:
 118 0022 C0E0      		ldi r28,lo8(0)
  29:main.c        **** 
  30:main.c        ****     TCCR1A = _BV (PWM10) | _BV (COM1A1);	//	8位PWM模式 , 向上计数时匹配清除OC1
 120               	.LM9:
 121 0024 81E8      		ldi r24,lo8(-127)
 122 0026 8FBD      		out 79-0x20,r24
  31:main.c        **** 
  32:main.c        ****     DDRB= _BV (PB3);						//PWM引脚PB3方向设置为输出
 124               	.LM10:
 125 0028 88E0      		ldi r24,lo8(8)
 126 002a 87BB      		out 55-0x20,r24
  33:main.c        **** 
  34:main.c        ****     TCCR1B = _BV (CS11);					//启动PWM  时钟源:CK/8 PWM 频率为 4MHz/8/512=976Hz
 128               	.LM11:
 129 002c 82E0      		ldi r24,lo8(2)
 130 002e 8EBD      		out 78-0x20,r24
 131               	.L10:
  35:main.c        **** 	
  36:main.c        ****     while(1)
  37:main.c        **** 	{
  38:main.c        **** 		if(direction)
 133               	.LM12:
 134 0030 1123      		tst r17
 135 0032 29F0      		breq .L12
  39:main.c        **** 		{
  40:main.c        **** 			if(++pwm==254)
 137               	.LM13:
 138 0034 CF5F      		subi r28,lo8(-(1))
 139 0036 CE3F      		cpi r28,lo8(-2)
 140 0038 29F4      		brne .L14
  41:main.c        **** 				direction=0;
 142               	.LM14:
 143 003a 10E0      		ldi r17,lo8(0)
 144 003c 03C0      		rjmp .L14
 145               	.L12:
  42:main.c        **** 		}
  43:main.c        **** 		else
  44:main.c        **** 		{
  45:main.c        **** 			if(--pwm==0)
 147               	.LM15:
 148 003e C150      		subi r28,lo8(-(-1))
 149 0040 09F4      		brne .L14
  46:main.c        **** 				direction=1;
 151               	.LM16:
 152 0042 11E0      		ldi r17,lo8(1)
 153               	.L14:
  47:main.c        **** 		}
  48:main.c        **** 
  49:main.c        **** 		OCR1=pwm;
 155               	.LM17:
 156 0044 8C2F      		mov r24,r28
 157 0046 9927      		clr r25
 158 0048 9BBD      		out (74)+1-0x20,r25
 159 004a 8ABD      		out 74-0x20,r24
  50:main.c        **** 		DelayMs(10);
 161               	.LM18:
 162 004c 8AE0      		ldi r24,lo8(10)
 163 004e 90E0      		ldi r25,hi8(10)
 164 0050 D7DF      		rcall DelayMs
 165 0052 EECF      		rjmp .L10
 166               	/* epilogue: frame size=0 */
 167               	/* epilogue: noreturn */
 168               	/* epilogue end (size=0) */
 169               	/* function main size 31 (27) */
 173               		.text
 175               	Letext:
 176               	/* File "main.c": code   47 = 0x002f (  43), prologues   4, epilogues   0 */
DEFINED SYMBOLS
                            *ABS*:00000000 main.c
                            *ABS*:0000003f __SREG__
                            *ABS*:0000003e __SP_H__
                            *ABS*:0000003d __SP_L__
                            *ABS*:00000000 __tmp_reg__
                            *ABS*:00000001 __zero_reg__
J:\DOCUME~1\tcf\LOCALS~1\Temp/ccAFaaaa.s:55     .text:00000000 DelayMs
J:\DOCUME~1\tcf\LOCALS~1\Temp/ccAFaaaa.s:104    .text:00000018 main
J:\DOCUME~1\tcf\LOCALS~1\Temp/ccAFaaaa.s:175    .text:00000054 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__stack

⌨️ 快捷键说明

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