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

📄 key.s

📁 74hc165d 做的键盘扩展程序 avr实现 独立按键 9个 与avr串行通信
💻 S
字号:
	.module key.c
	.area text(rom, con, rel)
	.dbfile D:\avr\key\key.c
	.dbfunc e Delay _Delay fV
;              a -> R20,R21
;              b -> R22,R23
;              x -> R16,R17
	.even
_Delay::
	rcall push_gset2
	.dbline -1
	.dbline 4
; 
; #include <iom8v.h>
; void Delay(int x) 
; 	{
	.dbline 6
; 	unsigned int a, b;
; 	for (a = 100; a>0; a--)
	ldi R20,100
	ldi R21,0
	rjmp L5
L2:
	.dbline 7
	ldi R22,1000
	ldi R23,3
	rjmp L9
L6:
	.dbline 7
L7:
	.dbline 7
	subi R22,1
	sbci R23,0
L9:
	.dbline 7
	cpi R22,0
	cpc R22,R23
	brne L6
X0:
L3:
	.dbline 6
	subi R20,1
	sbci R21,0
L5:
	.dbline 6
	cpi R20,0
	cpc R20,R21
	brne L2
X1:
	.dbline -2
L1:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r a 20 i
	.dbsym r b 22 i
	.dbsym r x 16 I
	.dbend
	.dbfunc e main _main fV
;              j -> <dead>
;              i -> R20,R21
;            ACC -> R22,R23
	.even
_main::
	.dbline -1
	.dbline 10
; 		for (b = 1000; b>0; b--);
; 	}
; void main()
; 	{
	.dbline 13
; 	unsigned int i,j,ACC;
; 	//ACC=0X000;
;     DDRC=0XFE;
	ldi R24,254
	out 0x14,R24
	.dbline 14
; 	PORTC=0XFF;
	ldi R24,255
	out 0x15,R24
	.dbline 15
; 	DDRB=0XFF;
	out 0x17,R24
	.dbline 16
; 	PORTB=0XFF;
	out 0x18,R24
	.dbline 17
; 	DDRD=0XFF;
	out 0x11,R24
	.dbline 18
; 	PORTD=0X00;
	clr R2
	out 0x12,R2
	rjmp L12
L11:
	.dbline 20
; 	while (1)
; 		{	
	.dbline 22
; 		//PORTB=0x00;
; 			PORTC&=0B11111101;
	in R24,0x15
	andi R24,253
	out 0x15,R24
	.dbline 25
; 			
; 			//Delay(1);
; 			PORTC|=0B00000010;
	sbi 0x15,1
	.dbline 26
; 	   		 for(i=9;i>0;i--)
	ldi R20,9
	ldi R21,0
	rjmp L17
L14:
	.dbline 27
	.dbline 28
	lsl R22
	rol R23
	.dbline 29
	in R24,0x15
	andi R24,251
	out 0x15,R24
	.dbline 30
	in R24,0x13
	clr R25
	andi R24,1
	andi R25,0
	or R22,R24
	or R23,R25
	.dbline 31
	sbi 0x15,2
	.dbline 32
L15:
	.dbline 26
	subi R20,1
	sbci R21,0
L17:
	.dbline 26
	cpi R20,0
	cpc R20,R21
	brne L14
X2:
	.dbline 34
; 			 {
; 			  	ACC=ACC<<1;
; 				PORTC&=0B11111011;
; 				ACC|=(PINC&01);
; 				PORTC|=0B00000100;		 
; 			 }
; 			// PORTC=0xfB;
; 			ACC= ACC&0x1ff;
	andi R23,1
	.dbline 35
; 			if(ACC==0xff)
	cpi R22,255
	ldi R30,0
	cpc R23,R30
	brne L18
	.dbline 36
; 			{PORTB=0X00;
	.dbline 36
	clr R2
	out 0x18,R2
	.dbline 37
; 			}
	rjmp L19
L18:
	.dbline 39
; 			else
; 			 PORTB=ACC;
	out 0x18,R22
L19:
	.dbline 41
	ldi R16,250
	ldi R17,0
	rcall _Delay
	.dbline 42
L12:
	.dbline 19
	rjmp L11
X3:
	.dbline -2
L10:
	.dbline 0 ; func end
	ret
	.dbsym l j 1 i
	.dbsym r i 20 i
	.dbsym r ACC 22 i
	.dbend

⌨️ 快捷键说明

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