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

📄 main.lst

📁 AVR单片机控制的PDIUSBD12原程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
   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:
 107               	.global	LED
 109               	LED:
   1:main.c        **** //********************************
   2:main.c        **** //		   主程序
   3:main.c        **** //	  编译环境WinAVR GCC
   4:main.c        **** //        2007-01-9
   5:main.c        **** //         hjxiang
   6:main.c        **** //********************************
   7:main.c        **** //标准C头文件
   8:main.c        **** #include <stdint.h>
   9:main.c        **** #include <stdlib.h>
  10:main.c        **** //AVR头文件
  11:main.c        **** #include <avr/io.h>
  12:main.c        **** #include <avr/signal.h>
  13:main.c        **** #include <avr/delay.h>
  14:main.c        **** //自定义头文件
  15:main.c        **** #include "usb.h"
  16:main.c        **** #include "epphal.h"
  17:main.c        **** #include "d12ic.h"
  18:main.c        **** #include "isr.h"
  19:main.c        **** #include "main.h"
  20:main.c        **** 
  21:main.c        **** extern void (*StandardDeviceRequest[])(void);
  22:main.c        **** extern void (* VendorDeviceRequest[])(void);
  23:main.c        **** #define F_IO  16000000    //单片机外部时钟频率
  24:main.c        **** #define baud 1200        //串口通信波特率
  25:main.c        **** 
  26:main.c        **** #define RD_N		4
  27:main.c        **** #define WR_N		5
  28:main.c        **** #define ALE			6
  29:main.c        **** #define CS_N		7
  30:main.c        **** #define RESET_N		3
  31:main.c        **** #define TXD232		1
  32:main.c        **** #define INT_N		2
  33:main.c        **** #define MCU_D12_CS_0()	PORTB&=~(1<<CS_N)
  34:main.c        **** #define MCU_D12_CS_1()	PORTB|=(1<<CS_N)
  35:main.c        **** #define LEDon()			PORTB&=~(1<<PB1)
  36:main.c        **** #define LEDoff()		PORTB|=(1<<PB1)
  37:main.c        **** void LED(void)
  38:main.c        **** {
 111               	.LM1:
 112               	/* prologue: frame size=0 */
 113               	/* prologue end (size=0) */
 114 0000 8FEF      		ldi r24,lo8(-1)
 115               	.L2:
  39:main.c        **** 	while(1)
  40:main.c        **** 	{
  41:main.c        **** 		PORTC=0xff;
 117               	.LM2:
 118 0002 85BB      		out 53-0x20,r24
 119 0004 FECF      		rjmp .L2
 120               	/* epilogue: frame size=0 */
 121               	/* epilogue: noreturn */
 122               	/* epilogue end (size=0) */
 123               	/* function LED size 3 (3) */
 125               	.Lscope0:
 127               	.global	IO_Init
 129               	IO_Init:
  42:main.c        **** 	}
  43:main.c        **** }
  44:main.c        **** void IO_Init(void)
  45:main.c        **** {
 131               	.LM3:
 132               	/* prologue: frame size=0 */
 133               	/* prologue end (size=0) */
  46:main.c        **** 	DDRB=(1<<CS_N)|(1<<RD_N)|(1<<WR_N)|(1<<RESET_N)|(1<<ALE);
 135               	.LM4:
 136 0006 88EF      		ldi r24,lo8(-8)
 137 0008 87BB      		out 55-0x20,r24
  47:main.c        **** 	PORTB=(1<<CS_N)|(1<<RD_N)|(1<<WR_N)|(1<<RESET_N)|(1<<ALE);
 139               	.LM5:
 140 000a 88BB      		out 56-0x20,r24
  48:main.c        **** 	DDRD=(0<<INT_N)|(1<<TXD232);
 142               	.LM6:
 143 000c 82E0      		ldi r24,lo8(2)
 144 000e 81BB      		out 49-0x20,r24
  49:main.c        **** 	DDRC=0xff;
 146               	.LM7:
 147 0010 8FEF      		ldi r24,lo8(-1)
 148 0012 84BB      		out 52-0x20,r24
  50:main.c        **** 	PORTC=0;
 150               	.LM8:
 151 0014 15BA      		out 53-0x20,__zero_reg__
 152               	/* epilogue: frame size=0 */
 153 0016 0895      		ret
 154               	/* epilogue end (size=1) */
 155               	/* function IO_Init size 9 (8) */
 157               	.Lscope1:
 159               	.global	USART_Init
 161               	USART_Init:
  51:main.c        **** }
  52:main.c        **** //USART初始化
  53:main.c        **** void USART_Init(void)
  54:main.c        **** {
 163               	.LM9:
 164               	/* prologue: frame size=0 */
 165               	/* prologue end (size=0) */
  55:main.c        ****     /*设置波特率*/
  56:main.c        **** 	UCSRA = 0x00;
 167               	.LM10:
 168 0018 1BB8      		out 43-0x20,__zero_reg__
  57:main.c        **** 	//*接收器与发送器使能,接收结束中断使能*/
  58:main.c        **** 	UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
 170               	.LM11:
 171 001a 88E9      		ldi r24,lo8(-104)
 172 001c 8AB9      		out 42-0x20,r24
  59:main.c        **** 	/*设置帧格式:8个数据位,1个停止位,偶校验位*/
  60:main.c        **** 	UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0)|(1<<UPM1);
 174               	.LM12:
 175 001e 86EA      		ldi r24,lo8(-90)
 176 0020 80BD      		out 64-0x20,r24
  61:main.c        **** 	UBRRH =(F_IO/baud/16-1)/256;
 178               	.LM13:
 179 0022 83E0      		ldi r24,lo8(3)
 180 0024 80BD      		out 64-0x20,r24
  62:main.c        **** 	UBRRL =(F_IO/baud/16-1)%256;
 182               	.LM14:
 183 0026 80E4      		ldi r24,lo8(64)
 184 0028 89B9      		out 41-0x20,r24
 185               	/* epilogue: frame size=0 */
 186 002a 0895      		ret
 187               	/* epilogue end (size=1) */
 188               	/* function USART_Init size 10 (9) */
 190               	.Lscope2:
 193               	.global	put_c
 195               	put_c:
  63:main.c        **** }
  64:main.c        **** //串口发送数据
  65:main.c        **** void put_c(unsigned char cData) //发送采用查询方式
  66:main.c        **** {
 197               	.LM15:
 198               	/* prologue: frame size=0 */
 199               	/* prologue end (size=0) */
 200               	.L7:
  67:main.c        **** 	while( !(UCSRA & (1<<UDRE)) );
 202               	.LM16:
 203 002c 5D9B      		sbis 43-0x20,5
 204 002e FECF      		rjmp .L7
  68:main.c        **** 	UDR=cData;
 206               	.LM17:
 207 0030 8CB9      		out 44-0x20,r24
 208               	/* epilogue: frame size=0 */
 209 0032 0895      		ret
 210               	/* epilogue end (size=1) */
 211               	/* function put_c size 4 (3) */
 213               	.Lscope3:
 216               	.global	put_s
 218               	put_s:
  69:main.c        **** }
  70:main.c        **** void put_s(unsigned char *ptr)
  71:main.c        **** {
 220               	.LM18:
 221               	/* prologue: frame size=0 */
 222 0034 CF93      		push r28
 223 0036 DF93      		push r29
 224               	/* prologue end (size=2) */
 225 0038 EC01      		movw r28,r24
 226               	.L16:
  72:main.c        **** 	while (*ptr)
  73:main.c        **** 	{
  74:main.c        **** 		put_c(*ptr++);
 228               	.LM19:
 229 003a 8881      		ld r24,Y
 230 003c 8823      		tst r24
 231 003e 21F0      		breq .L15
 232 0040 8991      		ld r24,Y+
 233 0042 0E94 0000 		call put_c
 234 0046 F9CF      		rjmp .L16
 235               	.L15:
  75:main.c        **** 	}
  76:main.c        **** 	put_c(0x0D);
 237               	.LM20:
 238 0048 8DE0      		ldi r24,lo8(13)
 239 004a 0E94 0000 		call put_c
  77:main.c        **** 	put_c(0x0A);  //结尾发送回车换行
 241               	.LM21:
 242 004e 8AE0      		ldi r24,lo8(10)
 243 0050 0E94 0000 		call put_c
 244               	/* epilogue: frame size=0 */
 245 0054 DF91      		pop r29
 246 0056 CF91      		pop r28
 247 0058 0895      		ret
 248               	/* epilogue end (size=3) */
 249               	/* function put_s size 19 (14) */
 251               	.Lscope4:
 253               	.global	Inter_Init
 255               	Inter_Init:
  78:main.c        **** }
  79:main.c        **** //中断初始化
  80:main.c        **** void Inter_Init(void)
  81:main.c        **** {
 257               	.LM22:
 258               	/* prologue: frame size=0 */
 259               	/* prologue end (size=0) */
  82:main.c        **** 	MCUCR=0;			//int0低电平中断
 261               	.LM23:
 262 005a 15BE      		out 85-0x20,__zero_reg__
  83:main.c        **** 	GICR=(1<<INT0);
 264               	.LM24:
 265 005c 80E4      		ldi r24,lo8(64)
 266 005e 8BBF      		out 91-0x20,r24
 267               	/* epilogue: frame size=0 */
 268 0060 0895      		ret
 269               	/* epilogue end (size=1) */
 270               	/* function Inter_Init size 4 (3) */
 272               	.Lscope5:
 274               	.global	__vector_1
 276               	__vector_1:
  84:main.c        **** }
  85:main.c        **** SIGNAL(SIG_INTERRUPT0)
  86:main.c        **** {
 278               	.LM25:
 279               	/* prologue: frame size=0 */
 280 0062 1F92      		push __zero_reg__
 281 0064 0F92      		push __tmp_reg__
 282 0066 0FB6      		in __tmp_reg__,__SREG__
 283 0068 0F92      		push __tmp_reg__
 284 006a 1124      		clr __zero_reg__
 285 006c 2F93      		push r18
 286 006e 3F93      		push r19
 287 0070 4F93      		push r20
 288 0072 5F93      		push r21
 289 0074 6F93      		push r22
 290 0076 7F93      		push r23
 291 0078 8F93      		push r24
 292 007a 9F93      		push r25
 293 007c AF93      		push r26
 294 007e BF93      		push r27
 295 0080 EF93      		push r30
 296 0082 FF93      		push r31
 297               	/* prologue end (size=17) */
  87:main.c        **** 	fn_usb_isr();
 299               	.LM26:
 300 0084 0E94 0000 		call fn_usb_isr
 301               	/* epilogue: frame size=0 */
 302 0088 FF91      		pop r31
 303 008a EF91      		pop r30
 304 008c BF91      		pop r27
 305 008e AF91      		pop r26
 306 0090 9F91      		pop r25
 307 0092 8F91      		pop r24
 308 0094 7F91      		pop r23
 309 0096 6F91      		pop r22
 310 0098 5F91      		pop r21
 311 009a 4F91      		pop r20
 312 009c 3F91      		pop r19
 313 009e 2F91      		pop r18
 314 00a0 0F90      		pop __tmp_reg__
 315 00a2 0FBE      		out __SREG__,__tmp_reg__
 316 00a4 0F90      		pop __tmp_reg__
 317 00a6 1F90      		pop __zero_reg__
 318 00a8 1895      		reti
 319               	/* epilogue end (size=17) */
 320               	/* function __vector_1 size 36 (2) */
 322               	.Lscope6:
 324               	.global	disconnect_USB
 326               	disconnect_USB:
  88:main.c        **** }
  89:main.c        **** void main(void)
  90:main.c        **** {
  91:main.c        **** 	IO_Init();

⌨️ 快捷键说明

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