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

📄 keyscan.lst

📁 应用松翰母体写的一款电磁炉
💻 LST
字号:
     1  000000             ;**********************************************
     2  000000             ;Name	:mnkey
     3  000000             ;Function:
     4  000000             ;Input  :
     5  000000             ;Output	:
     6  000000             ;Register Used:
     7  000000             ;***********************************************
     8  000000             mnkey:
     9  000000              	call	keyin
    10  000000             	call	keychk
    11  000000             	call	keycvt
    12  000000             	
    13  000000             mnkey90:
    14  000000             	ret
    15  000000             	
    16  000000             ;**********************************************
    17  000000             ;Name	:keyin
    18  000000             ;Function:keyinbuf.7=0:key on line0,=1:key on line1
    19  000000             ;Input  :
    20  000000             ;Output	:
    21  000000             ;Register Used:var1,var2
    22  000000             ;***********************************************
    23  000000             keyin:
    24  000000             ;-----
    25  000000             	mov_	var1,p2		;push p2 value
    26  000000             ;//	mov_	var2,p4
    27  000000             	mov	a,#11110000b
    28  000000             	or	p4,a
    29  000000             	call	p2input
    30  000000             	clr	keyinbuf
    31  000000             ;----
    32  000000             ;start scan key
    33  000000             ;line0
    34  000000             	bclr	line0
    35  000000             	call	delay_10us
    36  000000             	mov	a,p2
    37  000000             	and	a,#01111111b
    38  000000             	mov	keyinbuf,a
    39  000000             	xor	a,#01111111b
    40  000000             	b0bts1	fz
    41  000000             	jmp	keyin80			;line0 上有键按下,退出line1扫描
    42  000000             ;-----
    43  000000             ;line1					;line0 上无键按下,接着扫描line1
    44  000000             	bclr	line1
    45  000000             	call	delay_10us
    46  000000             	mov	a,p2
    47  000000             	and	a,#01111111b
    48  000000             	mov	keyinbuf,a
    49  000000             	xor	a,#01111111b
    50  000000             	b0bts0	fz
    51  000000             	jmp	keyin80			;line1 上无键按下
    52  000000             ;----
    53  000000             	bset	keyinbuf.7		;line1 上有键按下
    54  000000             ;------
    55  000000             keyin80:
    56  000000             	bset	line0
    57  000000             	bset	line1
    58  000000             ;----
    59  000000             	call	p2output
    60  000000             	mov_	p2,var1			;pop p2 value
    61  000000             ;//	mov_	p4,var2
    62  000000             ;---
    63  000000             keyin90:
    64  000000             	ret
    65  000000             	
    66  000000             ;**********************************************
    67  000000             ;Name	:keychk
    68  000000             ;Function:
    69  000000             ;Input  :
    70  000000             ;Output	:
    71  000000             ;Register Used:
    72  000000             ;***********************************************
    73  000000             keychk:
    74  000000             	mov	a,keyinbuf	;check line0 state
    75  000000             	cmprs	a,keychkbuf
    76  000000             	jmp	keychk10
    77  000000             	
    78  000000             	b0bts1	keystatflag	;check have key push or not?
    79  000000             	jmp	keychk90
    80  000000             	
    81  000000             	mov	a,keychat	;banish key's dithering
    82  000000             	b0bts1	fz
    83  000000             	jmp	keychk90
    84  000000             	
    85  000000             	mov	a,keychkbuf	;save key value
    86  000000             	mov	keycvtbuf,a
    87  000000             	
    88  000000             	bclr	keystatflag
    89  000000             	jmp	keychk90
    90  000000             ;---	
    91  000000             keychk10:
    92  000000             	mov	a,keyinbuf	;send key state to bufram
    93  000000             	mov	keychkbuf,a
    94  000000             	
    95  000000             	bset	keystatflag	;set key push flag
    96  000000             	mov	a,#3		;3
    97  000000             	mov	keychat,a	;banish key's dithering 30ms
    98  000000             ;---
    99  000000             keychk90:
   100  000000             	ret
   101  000000             
   102  000000             
   103  000000             ;**********************************************
   104  000000             ;Name	:keycvt
   105  000000             ;Function:
   106  000000             ;Input  :
   107  000000             ;Output	:
   108  000000             ;Register Used:temp3,temp4
   109  000000             ;***********************************************	
   110  000000             keycvt:
   111  000000             	mov	a,keycvtbuf	;convert key value
   112  000000             	cmprs	a,keyoldbuf
   113  000000             	jmp	keycvt10
   114  000000             	jmp	keycvt90
   115  000000             ;-----------------------------------------	
   116  000000             keycvt10:
   117  000000             	b0bts0	lineflag	;=0:line0 key,=1:line1 key
   118  000000             	jmp	line1keypush
   119  000000             ;----
   120  000000             ;line0 key push
   121  000000             	mov	a,keycvtbuf
   122  000000             	mov	keyoldbuf,a
   123  000000             	or	a,#10000000b
   124  000000             	mov	temp3,a
   125  000000             	mov_	temp4,#7
   126  000000             ;-----------------------------------------
   127  000000             loopline0:
   128  000000             	bclr	fc
   129  000000             	rrcm	temp3
   130  000000             	b0bts1	fc
   131  000000             	jmp	line0getonekey
   132  000000             	decms	temp4
   133  000000             	jmp	loopline0
   134  000000             ;-----
   135  000000             	bset	keyokflag
   136  000000             	ret
   137  000000             ;-----
   138  000000             line0getonekey:
   139  000000             	mov	a,temp4
   140  000000             	mov	aplcode,a
   141  000000             	ret
   142  000000             ;------------------------------------------
   143  000000             line1keypush:
   144  000000             	mov	a,keycvtbuf
   145  000000             	mov	keyoldbuf,a
   146  000000             	or	a,#10000000b
   147  000000             	mov	temp3,a
   148  000000             ;----
   149  000000             	and	a,#00000011b
   150  000000             	b0bts0	fz
   151  000000             	jmp	twokeypush
   152  000000             	mov_	temp4,#5
   153  000000             loopline1:
   154  000000             	bclr	fc
   155  000000             	rrcm	temp3
   156  000000             	b0bts1	fc
   157  000000             	jmp	line1getonekey
   158  000000             	decms	temp4
   159  000000             	jmp	loopline1
   160  000000             ;-----
   161  000000             	bset	keyokflag
   162  000000             	ret
   163  000000             ;-----
   164  000000             line1getonekey:
   165  000000             	mov	a,temp4
   166  000000             	add	a,#7
   167  000000             	mov	aplcode,a
   168  000000             	ret
   169  000000             ;----
   170  000000             twokeypush:
   171  000000             	mov	a,#13
   172  000000             	mov	aplcode,a
   173  000000             	bset	keyokflag	
   174  000000             ;-----	
   175  000000             keycvt90:
   176  000000             	ret	
   177  000000             	
   178  000000             ;*******************************************************
   179  000000             ;*******************************************************
   180  000000             ;*******************************************************
   181  000000             p2input:
   182  000000             	clr	p2m		;set p2 is input
   183  000000             	mov_	p2ur,#0ffh	;set p2 have pull_up
   184  000000             	jmp	$+1
   185  000000             	jmp	$+1
   186  000000             	ret
   187  000000             ;-----------------
   188  000000             p2output:
   189  000000             	mov_	p2m,#0ffh	;set p2 is output
   190  000000             	clr	p2ur		;clr p2 pull_up
   191  000000             	jmp	$+1
   192  000000             	jmp	$+1
   193  000000             	ret
   194  000000                 
   195  000000                 

⌨️ 快捷键说明

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