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

📄 xkey.s

📁 AVR单片机视频教程的课件和每一次课的源程序是学习AVR单片机的首选 第7节
💻 S
字号:
	.module XKEY.C
	.area text(rom, con, rel)
	.dbfile I:\AVR视频教程\视频教程\lesson7\XKEY/lesson5.c
	.dbfunc e delay _delay fV
;              i -> R20,R21
;              j -> R22,R23
;             ms -> R16,R17
	.even
_delay::
	rcall push_gset2
	.dbline -1
	.dbline 7
; #include <iom16v.h>
; #include <macros.h>
; #include "lesson5.c"
; void main()
; {
;     uchar i;
;         DDRD|=0X30;
	.dbline 9
; 	
; 	TCCR1A=0X63;
	clr R20
	clr R21
	rjmp L5
L2:
	.dbline 10
; 	TCCR1B=0X13;
	.dbline 11
	clr R22
	clr R23
	rjmp L9
L6:
	.dbline 11
L7:
	.dbline 11
	subi R22,255  ; offset = 1
	sbci R23,255
L9:
	.dbline 11
	cpi R22,117
	ldi R30,4
	cpc R23,R30
	brlo L6
	.dbline 12
L3:
	.dbline 9
	subi R20,255  ; offset = 1
	sbci R21,255
L5:
	.dbline 9
	cp R20,R16
	cpc R21,R17
	brlo L2
	.dbline -2
	.dbline 13
; 	
; 	OCR1A=1249;
; 	OCR1B=31;
L1:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r j 22 i
	.dbsym r ms 16 i
	.dbend
	.dbfunc e key_press _key_press fc
;              j -> R16
	.even
_key_press::
	.dbline -1
	.dbline 16
; 	
; 	while(1)
; 	{
	.dbline 18
; 	   if(key_press())
; 	   {
	in R24,0x11
	ori R24,15
	out 0x11,R24
	.dbline 19
; 	       i=key_scan();
	in R24,0x12
	ori R24,15
	out 0x12,R24
	.dbline 21
; 		   switch(i)
; 		   {
	in R24,0x11
	andi R24,240
	out 0x11,R24
	.dbline 23
; 		     case 1:
; 			    OCR1B=31;
	in R16,0x10
	.dbline 24
; 				break;
	andi R16,15
	.dbline 25
; 			 case 2:
	cpi R16,15
	brne L11
	.dbline 26
; 			    OCR1B=62;
	.dbline 27
; 				break;
	clr R16
	rjmp L10
L11:
	.dbline 30
; 			 case 3:
; 			    OCR1B=93; 
; 				break;
	.dbline 31
; 			case 4:
	ldi R16,1
	.dbline -2
L10:
	.dbline 0 ; func end
	ret
	.dbsym r j 16 c
	.dbend
	.dbfunc e key_scan _key_scan fc
;            key -> R20
	.even
_key_scan::
	rcall push_gset2
	.dbline -1
	.dbline 37
; 			    OCR1B=124; 
; 				break;
; 			default:
; 			    OCR1B=31;		
; 		   }
; 	   }
	.dbline 39
; 	}
; }
	ldi R16,10
	ldi R17,0
	rcall _delay
	.dbline 40
; }
	rcall _key_press
	tst R16
	breq L14
	.dbline 41
; }
	.dbline 42
; }
	in R20,0x10
	.dbline 43
; }
	andi R20,15
	.dbline 44
; }
	mov R22,R20
	clr R23
	cpi R22,7
	ldi R30,0
	cpc R23,R30
	breq L22
	cpi R22,11
	ldi R30,0
	cpc R23,R30
	breq L21
	cpi R22,13
	ldi R30,0
	cpc R23,R30
	breq L20
	cpi R22,14
	ldi R30,0
	cpc R23,R30
	breq L19
	rjmp L16
X0:
	.dbline 45
; }
L19:
	.dbline 47
; }
; }
	ldi R20,1
	.dbline 48
; }
	rjmp L24
L20:
	.dbline 50
; }
; }
	ldi R20,2
	.dbline 51
; }
	rjmp L24
L21:
	.dbline 53
; }
; }
	ldi R20,3
	.dbline 54
; }
	rjmp L24
L22:
	.dbline 56
; }
; }
	ldi R20,4
	.dbline 57
; }
	rjmp L24
L16:
	.dbline 59
; }
; }
	ldi R20,16
	.dbline 60
; }
L23:
	.dbline 61
L24:
	.dbline 61
; }
	rcall _key_press
	tst R16
	brne L23
	.dbline 62
; }
	rjmp L15
L14:
	.dbline 64
; }
; }
	.dbline 65
; }
	ldi R20,16
	.dbline 66
; }
L15:
	.dbline 67
; }
	mov R16,R20
	.dbline -2
L13:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r key 20 c
	.dbend
	.dbfile I:\AVR视频教程\视频教程\lesson7\XKEY\XKEY.C
	.dbfunc e main _main fV
;              i -> R22
	.even
_main::
	.dbline -1
	.dbline 5
	.dbline 7
	in R24,0x11
	ori R24,48
	out 0x11,R24
	.dbline 9
	ldi R24,99
	out 0x2f,R24
	.dbline 10
	ldi R24,19
	out 0x2e,R24
	.dbline 12
	ldi R24,1249
	ldi R25,4
	sts 74+1,R25
	sts 74,R24
	.dbline 13
	ldi R24,31
	ldi R25,0
	sts 72+1,R25
	sts 72,R24
	rjmp L28
L27:
	.dbline 16
	.dbline 17
	rcall _key_press
	tst R16
	breq L30
	.dbline 18
	.dbline 19
	rcall _key_scan
	mov R22,R16
	.dbline 20
	mov R20,R22
	clr R21
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L35
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L36
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L37
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	breq L38
	rjmp L32
X1:
	.dbline 21
L35:
	.dbline 23
	ldi R24,31
	ldi R25,0
	sts 72+1,R25
	sts 72,R24
	.dbline 24
	rjmp L33
L36:
	.dbline 26
	ldi R24,62
	ldi R25,0
	sts 72+1,R25
	sts 72,R24
	.dbline 27
	rjmp L33
L37:
	.dbline 29
	ldi R24,93
	ldi R25,0
	sts 72+1,R25
	sts 72,R24
	.dbline 30
	rjmp L33
L38:
	.dbline 32
	ldi R24,124
	ldi R25,0
	sts 72+1,R25
	sts 72,R24
	.dbline 33
	rjmp L33
L32:
	.dbline 35
	ldi R24,31
	ldi R25,0
	sts 72+1,R25
	sts 72,R24
	.dbline 36
L33:
	.dbline 37
L30:
	.dbline 38
L28:
	.dbline 15
	rjmp L27
X2:
	.dbline -2
	.dbline 39
L26:
	.dbline 0 ; func end
	ret
	.dbsym r i 22 c
	.dbend

⌨️ 快捷键说明

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