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

📄 main.lst

📁 ATmage8515键盘扫描程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
   1               		.file	"main.c"
   2               		.arch atmega8
   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
  12               		.text
  13               	.Ltext0:
  84               	.global	delay
  86               	delay:
   1:main.c        **** /*************************************************************
   2:main.c        ****  文件件:mian.c                      
   3:main.c        ****  设计人员:李志双
   4:main.c        ****  主要功能:    键盘扫描程序
   5:main.c        ****  特殊功能:    无
   6:main.c        **** *************************************************************/
   7:main.c        **** #include <stdio.h>
   8:main.c        **** #include <stddef.h>
   9:main.c        **** #include <stdlib.h>
  10:main.c        **** #include <avr/io.H>
  11:main.c        **** #include <inttypes.h> 
  12:main.c        **** #include <avr/interrupt.h>
  13:main.c        **** #include <avr/signal.h>
  14:main.c        **** /***************************************/
  15:main.c        **** #define DD_MOSI 3
  16:main.c        **** #define DD_MISO 4
  17:main.c        **** #define DD_SCK 5
  18:main.c        **** #define DD_SS 2
  19:main.c        **** #define DDR_SPI DDRB
  20:main.c        **** uint8_t RevData;
  21:main.c        **** void delay(volatile uint16_t time)
  22:main.c        **** {
  88               	.LM1:
  89               	/* prologue: frame size=6 */
  90 0000 CF93      		push r28
  91 0002 DF93      		push r29
  92 0004 CDB7      		in r28,__SP_L__
  93 0006 DEB7      		in r29,__SP_H__
  94 0008 2697      		sbiw r28,6
  95 000a 0FB6      		in __tmp_reg__,__SREG__
  96 000c F894      		cli
  97 000e DEBF      		out __SP_H__,r29
  98 0010 0FBE      		out __SREG__,__tmp_reg__
  99 0012 CDBF      		out __SP_L__,r28
 100               	/* prologue end (size=10) */
 101 0014 8983      		std Y+1,r24
 102 0016 9A83      		std Y+2,r25
  23:main.c        **** 	volatile uint16_t i,j;
  24:main.c        **** 	for( i=0;i<time;i++)
 104               	.LM2:
 105               	.LBB2:
 106 0018 1B82      		std Y+3,__zero_reg__
 107 001a 1C82      		std Y+4,__zero_reg__
 108 001c 2B81      		ldd r18,Y+3
 109 001e 3C81      		ldd r19,Y+4
 110 0020 8981      		ldd r24,Y+1
 111 0022 9A81      		ldd r25,Y+2
 112 0024 2817      		cp r18,r24
 113 0026 3907      		cpc r19,r25
 114 0028 D8F4      		brsh .L13
 115               	.L11:
  25:main.c        **** 		for( j=0;j<10;j++);
 117               	.LM3:
 118 002a 1D82      		std Y+5,__zero_reg__
 119 002c 1E82      		std Y+6,__zero_reg__
 120 002e 8D81      		ldd r24,Y+5
 121 0030 9E81      		ldd r25,Y+6
 122 0032 0A97      		sbiw r24,10
 123 0034 48F4      		brsh .L15
 124               	.L10:
 125 0036 8D81      		ldd r24,Y+5
 126 0038 9E81      		ldd r25,Y+6
 127 003a 0196      		adiw r24,1
 128 003c 8D83      		std Y+5,r24
 129 003e 9E83      		std Y+6,r25
 130 0040 8D81      		ldd r24,Y+5
 131 0042 9E81      		ldd r25,Y+6
 132 0044 0A97      		sbiw r24,10
 133 0046 B8F3      		brlo .L10
 134               	.L15:
 136               	.LM4:
 137 0048 8B81      		ldd r24,Y+3
 138 004a 9C81      		ldd r25,Y+4
 139 004c 0196      		adiw r24,1
 140 004e 8B83      		std Y+3,r24
 141 0050 9C83      		std Y+4,r25
 142 0052 2B81      		ldd r18,Y+3
 143 0054 3C81      		ldd r19,Y+4
 144 0056 8981      		ldd r24,Y+1
 145 0058 9A81      		ldd r25,Y+2
 146 005a 2817      		cp r18,r24
 147 005c 3907      		cpc r19,r25
 148 005e 28F3      		brlo .L11
 149               	.L13:
  26:main.c        **** }
 151               	.LM5:
 152               	.LBE2:
 153               	/* epilogue: frame size=6 */
 154 0060 2696      		adiw r28,6
 155 0062 0FB6      		in __tmp_reg__,__SREG__
 156 0064 F894      		cli
 157 0066 DEBF      		out __SP_H__,r29
 158 0068 0FBE      		out __SREG__,__tmp_reg__
 159 006a CDBF      		out __SP_L__,r28
 160 006c DF91      		pop r29
 161 006e CF91      		pop r28
 162 0070 0895      		ret
 163               	/* epilogue end (size=9) */
 164               	/* function delay size 59 (40) */
 170               	.Lscope0:
 173               	.global	SPI_SlaveInit
 175               	SPI_SlaveInit:
  27:main.c        **** void SPI_SlaveInit(void)
  28:main.c        **** {
 177               	.LM6:
 178               	/* prologue: frame size=0 */
 179               	/* prologue end (size=0) */
  29:main.c        **** /* 设置MISO为输出,其他为输入 */
  30:main.c        ****  DDR_SPI = (1<<DD_MISO);
 181               	.LM7:
 182 0072 80E1      		ldi r24,lo8(16)
 183 0074 87BB      		out 55-0x20,r24
  31:main.c        ****  //DDR_SPI &= ~(1<<DD_MOSI);
  32:main.c        ****  //DDR_SPI &= ~(1<<DD_SS);
  33:main.c        **** /* 使能 SPI */
  34:main.c        ****  SPCR = (1<<SPE)|(1<<CPHA)|(1<<SPIE);
 185               	.LM8:
 186 0076 84EC      		ldi r24,lo8(-60)
 187 0078 8DB9      		out 45-0x20,r24
  35:main.c        ****  //SPCR |= (1<<CPHA);
  36:main.c        ****  //SPCR|=1<<SPIE;//开中断
  37:main.c        ****  SREG=0x80;
 189               	.LM9:
 190 007a 80E8      		ldi r24,lo8(-128)
 191 007c 8FBF      		out 95-0x20,r24
  38:main.c        **** }
 193               	.LM10:
 194               	/* epilogue: frame size=0 */
 195 007e 0895      		ret
 196               	/* epilogue end (size=1) */
 197               	/* function SPI_SlaveInit size 7 (6) */
 199               	.Lscope1:
 202               	.global	SPI_SlaveReceive
 204               	SPI_SlaveReceive:
  39:main.c        **** char SPI_SlaveReceive(void)
  40:main.c        **** {
 206               	.LM11:
 207               	/* prologue: frame size=0 */
 208               	/* prologue end (size=0) */
  41:main.c        **** /* 等待接收结束 */
  42:main.c        **** while(!(SPSR & (1<<SPIF)));
 210               	.LM12:
 211               	.L18:
 212 0080 779B      		sbis 46-0x20,7
 213 0082 FECF      		rjmp .L18
  43:main.c        **** /* 返回数据 */
  44:main.c        **** return SPDR;
 215               	.LM13:
 216 0084 8FB1      		in r24,47-0x20
 217 0086 9927      		clr r25
  45:main.c        **** }
 219               	.LM14:
 220               	/* epilogue: frame size=0 */
 221 0088 0895      		ret
 222               	/* epilogue end (size=1) */
 223               	/* function SPI_SlaveReceive size 5 (4) */
 225               	.Lscope2:
 229               	.global	ISR
 231               	ISR:
  46:main.c        **** ISR(SPI_STC_vect)
  47:main.c        **** {
 233               	.LM15:
 234               	/* prologue: frame size=0 */
 235               	/* prologue end (size=0) */
  48:main.c        ****    RevData=SPDR;
 237               	.LM16:
 238 008a 8FB1      		in r24,47-0x20
 239 008c 8093 0000 		sts RevData,r24
  49:main.c        **** }
 241               	.LM17:
 242               	/* epilogue: frame size=0 */
 243 0090 0895      		ret
 244               	/* epilogue end (size=1) */
 245               	/* function ISR size 4 (3) */
 247               	.Lscope3:
 250               	.global	KeySan
 252               	KeySan:
  50:main.c        **** uint8_t KeySan(void)
  51:main.c        **** {
 254               	.LM18:
 255               	/* prologue: frame size=0 */
 256 0092 CF93      		push r28
 257               	/* prologue end (size=1) */
  52:main.c        **** 	uint8_t temp;
  53:main.c        **** 	uint8_t KeyValue=0xff;
 259               	.LM19:
 260               	.LBB3:
 261 0094 CFEF      		ldi r28,lo8(-1)
  54:main.c        **** 	PORTD=0xe0;
 263               	.LM20:
 264 0096 80EE      		ldi r24,lo8(-32)
 265 0098 82BB      		out 50-0x20,r24
  55:main.c        **** 	delay(1);
 267               	.LM21:
 268 009a 81E0      		ldi r24,lo8(1)
 269 009c 90E0      		ldi r25,hi8(1)
 270 009e B0DF      		rcall delay
  56:main.c        **** 	temp=PINC;
 272               	.LM22:
 273 00a0 83B3      		in r24,51-0x20
  57:main.c        **** 	temp=~temp;
 275               	.LM23:
 276 00a2 8095      		com r24
  58:main.c        **** 	if((temp&0x1f)!=0)
 278               	.LM24:
 279 00a4 9927      		clr r25
 280 00a6 8F71      		andi r24,lo8(31)
 281 00a8 9070      		andi r25,hi8(31)
 282 00aa 0097      		sbiw r24,0
 283 00ac D9F0      		breq .L24
  59:main.c        **** 	{
  60:main.c        **** 		
  61:main.c        **** 			switch(temp&0x1f)
 285               	.LM25:
 286 00ae 8430      		cpi r24,4
 287 00b0 9105      		cpc r25,__zero_reg__
 288 00b2 99F0      		breq .L28
 289 00b4 8530      		cpi r24,5
 290 00b6 9105      		cpc r25,__zero_reg__
 291 00b8 34F4      		brge .L33
 292 00ba 8130      		cpi r24,1
 293 00bc 9105      		cpc r25,__zero_reg__
 294 00be 49F0      		breq .L26
 295 00c0 0297      		sbiw r24,2
 296 00c2 49F0      		breq .L27
 297 00c4 0FC0      		rjmp .L24
 298               	.L33:
 299 00c6 8830      		cpi r24,8
 300 00c8 9105      		cpc r25,__zero_reg__
 301 00ca 49F0      		breq .L29
 302 00cc 4097      		sbiw r24,16
 303 00ce 49F0      		breq .L30
 304 00d0 09C0      		rjmp .L24
 305               	.L26:
  62:main.c        **** 			{
  63:main.c        **** 				case 0x01:
  64:main.c        **** 					KeyValue=1;
 307               	.LM26:
 308 00d2 C1E0      		ldi r28,lo8(1)
  65:main.c        **** 					break;
 310               	.LM27:
 311 00d4 07C0      		rjmp .L24
 312               	.L27:
  66:main.c        **** 				case 0x02:
  67:main.c        **** 					KeyValue=2;
 314               	.LM28:
 315 00d6 C2E0      		ldi r28,lo8(2)
  68:main.c        **** 					break;
 317               	.LM29:
 318 00d8 05C0      		rjmp .L24
 319               	.L28:
  69:main.c        **** 				case 0x04:
  70:main.c        **** 					KeyValue= 3;
 321               	.LM30:
 322 00da C3E0      		ldi r28,lo8(3)
  71:main.c        **** 					break;
 324               	.LM31:
 325 00dc 03C0      		rjmp .L24
 326               	.L29:
  72:main.c        **** 				case 0x08:
  73:main.c        **** 					KeyValue= 4;
 328               	.LM32:
 329 00de C4E0      		ldi r28,lo8(4)
  74:main.c        **** 					break;
 331               	.LM33:
 332 00e0 01C0      		rjmp .L24
 333               	.L30:
  75:main.c        **** 				case 0x10:
  76:main.c        **** 					KeyValue= 5;
 335               	.LM34:
 336 00e2 C5E0      		ldi r28,lo8(5)
 337               	.L24:
  77:main.c        **** 					break;
  78:main.c        **** 			}
  79:main.c        **** 		
  80:main.c        **** 	}
  81:main.c        **** 	PORTD=0xd0;
 339               	.LM35:
 340 00e4 80ED      		ldi r24,lo8(-48)
 341 00e6 82BB      		out 50-0x20,r24
  82:main.c        **** 	delay(1);
 343               	.LM36:
 344 00e8 81E0      		ldi r24,lo8(1)
 345 00ea 90E0      		ldi r25,hi8(1)
 346 00ec 89DF      		rcall delay
  83:main.c        **** 	temp=PINC;
 348               	.LM37:
 349 00ee 83B3      		in r24,51-0x20
  84:main.c        **** 	temp=~temp;
 351               	.LM38:
 352 00f0 8095      		com r24
  85:main.c        **** 	if((temp&0x1f)!=0)
 354               	.LM39:
 355 00f2 9927      		clr r25
 356 00f4 8F71      		andi r24,lo8(31)
 357 00f6 9070      		andi r25,hi8(31)
 358 00f8 0097      		sbiw r24,0
 359 00fa D9F0      		breq .L34
  86:main.c        **** 	{
  87:main.c        **** 		
  88:main.c        **** 			switch(temp&0x1f)
 361               	.LM40:
 362 00fc 8430      		cpi r24,4
 363 00fe 9105      		cpc r25,__zero_reg__
 364 0100 99F0      		breq .L38
 365 0102 8530      		cpi r24,5
 366 0104 9105      		cpc r25,__zero_reg__
 367 0106 34F4      		brge .L43
 368 0108 8130      		cpi r24,1

⌨️ 快捷键说明

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