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

📄 key_scan.s

📁 环保型IC卡门禁系统的C程序
💻 S
字号:
	.module Key_Scan.C
	.area text(rom, con, rel)
	.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Key_Scan.C
	.dbfunc e Key_Scan _Key_Scan fc
;          Key_1 -> R22
;          Key_2 -> R20
	.even
_Key_Scan::
	rcall push_gset2
	.dbline -1
	.dbline 6
; #include <iom8v.h>
; #include <macros.h>
; #include "lcd1602.h"
; 
; unsigned char Key_Scan(void)
; {
	.dbline 7
;   unsigned char Key_1 = 0 , Key_2 = 0 ;
	clr R22
	.dbline 7
	clr R20
	.dbline 11
;   
;   //CLI();
;   
;   if((PIND&0x04)==0)     
	sbic 0x10,2
	rjmp L2
	.dbline 12
;     Key_1 = 1 ;
	ldi R22,1
	rjmp L3
L2:
	.dbline 13
;   else if((PIND&0x02)==0) 
	sbic 0x10,1
	rjmp L4
	.dbline 14
;     Key_1 = 2 ;
	ldi R22,2
	rjmp L5
L4:
	.dbline 15
;   else if((PIND&0x01)==0)
	sbic 0x10,0
	rjmp L6
	.dbline 16
;     Key_1 = 3 ;
	ldi R22,3
L6:
L5:
L3:
	.dbline 18
;   
;   PORTD = 0xf0 ;
	ldi R24,240
	out 0x12,R24
	.dbline 19
;   DDRD  = 0x0f ;
	ldi R24,15
	out 0x11,R24
	.dbline 21
;   
;   if((PIND&0x80)==0)       
	sbic 0x10,7
	rjmp L8
	.dbline 22
;     Key_1 += 0 ;
	rjmp L9
L8:
	.dbline 23
;   else if((PIND&0x40)==0)  
	sbic 0x10,6
	rjmp L10
	.dbline 24
;     Key_1 += 3 ;
	subi R22,253    ; addi 3
	rjmp L11
L10:
	.dbline 25
;   else if((PIND&0x20)==0)  
	sbic 0x10,5
	rjmp L12
	.dbline 26
;     Key_1 += 6 ;
	subi R22,250    ; addi 6
	rjmp L13
L12:
	.dbline 27
;   else if((PIND&0x10)==0)  
	sbic 0x10,4
	rjmp L14
	.dbline 28
;     Key_1 += 9 ;
	subi R22,247    ; addi 9
L14:
L13:
L11:
L9:
	.dbline 30
; 	
;   PORTD = 0x0f ;         // 要先写 PORT , 后写 DDR
	ldi R24,15
	out 0x12,R24
	.dbline 31
;   DDRD  = 0xf0 ;
	ldi R24,240
	out 0x11,R24
	.dbline 33
;   
;   delay_nms(80);
	ldi R16,80
	ldi R17,0
	rcall _delay_nms
	.dbline 35
;   
;   if((PIND&0x04)==0)     
	sbic 0x10,2
	rjmp L16
	.dbline 36
;     Key_2 = 1 ;
	ldi R20,1
	rjmp L17
L16:
	.dbline 37
;   else if((PIND&0x02)==0) 
	sbic 0x10,1
	rjmp L18
	.dbline 38
;     Key_2 = 2 ;
	ldi R20,2
	rjmp L19
L18:
	.dbline 39
;   else if((PIND&0x01)==0)
	sbic 0x10,0
	rjmp L20
	.dbline 40
;     Key_2 = 3 ;
	ldi R20,3
L20:
L19:
L17:
	.dbline 42
; 	
;   PORTD = 0xf0 ;
	ldi R24,240
	out 0x12,R24
	.dbline 43
;   DDRD  = 0x0f ;
	ldi R24,15
	out 0x11,R24
	.dbline 45
;   
;   if((PIND&0x80)==0)       
	sbic 0x10,7
	rjmp L22
	.dbline 46
;     Key_2 += 0 ;
	rjmp L23
L22:
	.dbline 47
;   else if((PIND&0x40)==0)  
	sbic 0x10,6
	rjmp L24
	.dbline 48
;     Key_2 += 3 ;
	subi R20,253    ; addi 3
	rjmp L25
L24:
	.dbline 49
;   else if((PIND&0x20)==0)  
	sbic 0x10,5
	rjmp L26
	.dbline 50
;     Key_2 += 6 ;
	subi R20,250    ; addi 6
	rjmp L27
L26:
	.dbline 51
;   else if((PIND&0x10)==0)  
	sbic 0x10,4
	rjmp L28
	.dbline 52
;     Key_2 += 9 ;
	subi R20,247    ; addi 9
L28:
L27:
L25:
L23:
	.dbline 54
; 	
;   PORTD = 0x0f ;         // 要先写 PORT , 后写 DDR
	ldi R24,15
	out 0x12,R24
	.dbline 55
;   DDRD  = 0xf0 ;
	ldi R24,240
	out 0x11,R24
	.dbline 59
;   
;   //SEI();
;   
;   if(Key_1==Key_2)
	cp R22,R20
	brne L30
	.dbline 60
;   {
	.dbline 61
;     return Key_2 ;
	mov R16,R20
	rjmp L1
L30:
	.dbline 64
;   }
;   else
;   {
	.dbline 65
;     return 0 ;
	clr R16
	.dbline -2
L1:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r Key_1 22 c
	.dbsym r Key_2 20 c
	.dbend

⌨️ 快捷键说明

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