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

📄 main.lss

📁 这是一个单片机键盘响应程序
💻 LSS
📖 第 1 页 / 共 2 页
字号:
 16e:	21 c0       	rjmp	.+66     	; 0x1b2
		{ 
	/*TempNum记录读到的键值,由于此键值需经进一步处理,
	所以是暂时数值(TempNum)。Times用以记录没有读到有效键值的次数,
	如果次数达到4次(即扫描一轮后没有发现有效键值),
	就表示没有键按下。*/   	  
	      
		  case 0xE7:TempNum=0;Times=0;break;
 170:	10 92 71 00 	sts	0x0071, r1
 174:	28 c0       	rjmp	.+80     	; 0x1c6
	      case 0xD7:TempNum=1;Times=0;break; 
 176:	81 e0       	ldi	r24, 0x01	; 1
 178:	24 c0       	rjmp	.+72     	; 0x1c2
		  case 0xB7:TempNum=2;Times=0;break;
 17a:	82 e0       	ldi	r24, 0x02	; 2
 17c:	22 c0       	rjmp	.+68     	; 0x1c2
		  case 0x77:TempNum=3;Times=0;break;
 17e:	83 e0       	ldi	r24, 0x03	; 3
 180:	20 c0       	rjmp	.+64     	; 0x1c2
		  case 0xEB:TempNum=4;Times=0;break;
 182:	84 e0       	ldi	r24, 0x04	; 4
 184:	1e c0       	rjmp	.+60     	; 0x1c2
		  case 0xDB:TempNum=5;Times=0;break;
 186:	85 e0       	ldi	r24, 0x05	; 5
 188:	1c c0       	rjmp	.+56     	; 0x1c2
		  case 0xBB:TempNum=6;Times=0;break;
 18a:	86 e0       	ldi	r24, 0x06	; 6
 18c:	1a c0       	rjmp	.+52     	; 0x1c2
		  case 0x7B:TempNum=7;Times=0;break;
 18e:	87 e0       	ldi	r24, 0x07	; 7
 190:	18 c0       	rjmp	.+48     	; 0x1c2
		  case 0xED:TempNum=8;Times=0;break;
 192:	88 e0       	ldi	r24, 0x08	; 8
 194:	16 c0       	rjmp	.+44     	; 0x1c2
		  case 0xDD:TempNum=9;Times=0;break;
 196:	89 e0       	ldi	r24, 0x09	; 9
 198:	14 c0       	rjmp	.+40     	; 0x1c2
		  case 0xBD:TempNum=10;Times=0;break;
 19a:	8a e0       	ldi	r24, 0x0A	; 10
 19c:	12 c0       	rjmp	.+36     	; 0x1c2
		  case 0x7D:TempNum=11;Times=0;break;
 19e:	8b e0       	ldi	r24, 0x0B	; 11
 1a0:	10 c0       	rjmp	.+32     	; 0x1c2
		  case 0xEE:TempNum=12;Times=0;break;
 1a2:	8c e0       	ldi	r24, 0x0C	; 12
 1a4:	0e c0       	rjmp	.+28     	; 0x1c2
		  case 0xDE:TempNum=13;Times=0;break;
 1a6:	8d e0       	ldi	r24, 0x0D	; 13
 1a8:	0c c0       	rjmp	.+24     	; 0x1c2
		  case 0xBE:TempNum=14;Times=0;break;
 1aa:	8e e0       	ldi	r24, 0x0E	; 14
 1ac:	0a c0       	rjmp	.+20     	; 0x1c2
		  case 0x7E:TempNum=15;Times=0;break;
 1ae:	8f e0       	ldi	r24, 0x0F	; 15
 1b0:	08 c0       	rjmp	.+16     	; 0x1c2
	         default:{
	               Times++;
 1b2:	80 91 76 00 	lds	r24, 0x0076
 1b6:	8f 5f       	subi	r24, 0xFF	; 255
 1b8:	80 93 76 00 	sts	0x0076, r24
				    if  (Times==4) 
 1bc:	84 30       	cpi	r24, 0x04	; 4
 1be:	29 f4       	brne	.+10     	; 0x1ca
				      {
					   TempNum=16;
 1c0:	80 e1       	ldi	r24, 0x10	; 16
 1c2:	80 93 71 00 	sts	0x0071, r24
					   Times=0;
 1c6:	10 92 76 00 	sts	0x0076, r1
				      }
	         		}break;
	  	}
       LastNum=CurrentNum;  
 1ca:	80 91 73 00 	lds	r24, 0x0073
 1ce:	80 93 72 00 	sts	0x0072, r24
	   CurrentNum=TempNum;
 1d2:	90 91 71 00 	lds	r25, 0x0071
 1d6:	90 93 73 00 	sts	0x0073, r25
	   if (CurrentNum==LastNum) return(16);
 1da:	98 17       	cp	r25, r24
 1dc:	19 f4       	brne	.+6      	; 0x1e4
 1de:	80 e1       	ldi	r24, 0x10	; 16
 1e0:	90 e0       	ldi	r25, 0x00	; 0
 1e2:	08 95       	ret
	   else  return(CurrentNum);
 1e4:	89 2f       	mov	r24, r25
 1e6:	99 27       	eor	r25, r25

} 1e8:	08 95       	ret
 1ea:	08 95       	ret

000001ec <_Z12Initi_Devicev>:
  61 0003 4F        		.byte	79
  62 0004 66        		.byte	102
  63 0005 6D        		.byte	109
  64 0006 7D        		.byte	125
  65 0007 07        		.byte	7
 1ec:	8f ef       	ldi	r24, 0xFF	; 255
 1ee:	81 bb       	out	0x11, r24	; 17
  66 0008 7F        		.byte	127
 1f0:	9e ef       	ldi	r25, 0xFE	; 254
 1f2:	92 bb       	out	0x12, r25	; 18
  67 0009 67        		.byte	103
  68 000a 77        		.byte	119
 1f4:	87 bb       	out	0x17, r24	; 23
  69 000b 7C        		.byte	124
 1f6:	8f e3       	ldi	r24, 0x3F	; 63
 1f8:	88 bb       	out	0x18, r24	; 24
 1fa:	08 95       	ret

000001fc <__vector_9>:
  70 000c 58        		.byte	88
  71 000d 5E        		.byte	94
  72 000e 79        		.byte	121
  73 000f 71        		.byte	113
  76               	_ZZ8KeyboardvE8ScanCode:
  77 0010 F7        		.byte	-9
  80               	_ZZ8KeyboardvE7TempNum:
  81 0011 10        		.byte	16
  84               	_ZZ8KeyboardvE7LastNum:
 1fc:	1f 92       	push	r1
 1fe:	0f 92       	push	r0
 200:	0f b6       	in	r0, 0x3f	; 63
 202:	0f 92       	push	r0
 204:	11 24       	eor	r1, r1
 206:	2f 93       	push	r18
 208:	3f 93       	push	r19
 20a:	4f 93       	push	r20
 20c:	5f 93       	push	r21
 20e:	6f 93       	push	r22
 210:	7f 93       	push	r23
 212:	8f 93       	push	r24
 214:	9f 93       	push	r25
 216:	af 93       	push	r26
 218:	bf 93       	push	r27
 21a:	ef 93       	push	r30
 21c:	ff 93       	push	r31
  85 0012 10        		.byte	16
 21e:	82 eb       	ldi	r24, 0xB2	; 178
 220:	82 bf       	out	0x32, r24	; 50
  88               	_ZZ8KeyboardvE10CurrentNum:
 222:	0e 94 47 00 	call	0x8e
 226:	80 93 74 00 	sts	0x0074, r24
  89 0013 10        		.byte	16
 22a:	80 31       	cpi	r24, 0x10	; 16
 22c:	30 f4       	brcc	.+12     	; 0x23a
  90               		.lcomm _ZZ8KeyboardvE5Times,1
 22e:	e8 2f       	mov	r30, r24
 230:	ff 27       	eor	r31, r31
 232:	e0 5a       	subi	r30, 0xA0	; 160
 234:	ff 4f       	sbci	r31, 0xFF	; 255
 236:	80 81       	ld	r24, Z
 238:	88 bb       	out	0x18, r24	; 24
 23a:	ff 91       	pop	r31
 23c:	ef 91       	pop	r30
 23e:	bf 91       	pop	r27
 240:	af 91       	pop	r26
 242:	9f 91       	pop	r25
 244:	8f 91       	pop	r24
 246:	7f 91       	pop	r23
 248:	6f 91       	pop	r22
 24a:	5f 91       	pop	r21
 24c:	4f 91       	pop	r20
 24e:	3f 91       	pop	r19
 250:	2f 91       	pop	r18
 252:	0f 90       	pop	r0
 254:	0f be       	out	0x3f, r0	; 63
 256:	0f 90       	pop	r0
 258:	1f 90       	pop	r1
 25a:	18 95       	reti

0000025c <main>:
  91               		.text
  93               	.global	_Z8Keyboardv
  95               	_Z8Keyboardv:
  97               	.Ltext1:
   1:E:/ROCKY的文档/文档/课件/数据采集技术/project/SY2/Key.h **** int Keyboard(void)
   2:E:/ROCKY的文档/文档/课件/数据采集技术/project/SY2/Key.h **** {static uint8_t     ScanCode=0xF7,TempNum=16,LastNum=16,CurrentNum=16,Times=0;
  99               	.LM1:
 25c:	cf e5       	ldi	r28, 0x5F	; 95
 25e:	d4 e0       	ldi	r29, 0x04	; 4
 260:	de bf       	out	0x3e, r29	; 62
 262:	cd bf       	out	0x3d, r28	; 61
 264:	0e 94 f6 00 	call	0x1ec
 100               	/* prologue: frame size=0 */
 101               	/* prologue end (size=0) */
 268:	8f e0       	ldi	r24, 0x0F	; 15
 26a:	84 bb       	out	0x14, r24	; 20
 102               	.LBB2:
 26c:	8f ef       	ldi	r24, 0xFF	; 255
 26e:	85 bb       	out	0x15, r24	; 21
 103               	.LBB3:
 270:	81 bb       	out	0x11, r24	; 17
   3:E:/ROCKY的文档/文档/课件/数据采集技术/project/SY2/Key.h **** 	   switch(ScanCode)   // 扫描信号
 272:	12 ba       	out	0x12, r1	; 18
 105               	.LM2:
 274:	87 bb       	out	0x17, r24	; 23
 106 0000 8091 0000 		lds r24,_ZZ8KeyboardvE8ScanCode
 276:	18 ba       	out	0x18, r1	; 24
 107 0004 9927      		clr r25
 278:	85 e0       	ldi	r24, 0x05	; 5
 27a:	83 bf       	out	0x33, r24	; 51
 108 0006 8B3F      		cpi r24,251
 27c:	82 eb       	ldi	r24, 0xB2	; 178
 27e:	82 bf       	out	0x32, r24	; 50
 109 0008 9105      		cpc r25,__zero_reg__
 280:	81 e0       	ldi	r24, 0x01	; 1
 282:	89 bf       	out	0x39, r24	; 57
 110 000a 69F0      		breq .L4
 284:	78 94       	sei
 112               	.LM3:
 286:	ff cf       	rjmp	.-2      	; 0x286

⌨️ 快捷键说明

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