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

📄 key2d.lst

📁 这是一个PIC单片机的实时操作系统
💻 LST
📖 第 1 页 / 共 3 页
字号:


HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-40231                            Fri Nov 30 20:36:12 2007

Licensed to: ONE
     1                           	processor	16F877A
     2                           	opt	pw 79
     3                           	psect	__Z40231RS_,global,delta=1
     4                           	psect	text2,local,class=CODE,delta=2
     5                           	psect	text3,local,class=CODE,delta=2
     6                           	psect	text4,local,class=CODE,delta=2
     7                           	psect	intcode,global,class=CODE,delta=2
     8                           	psect	intsave_0,global,ovrld,class=COMBANK,spa
      +                          ce=1,delta=1
     9                           	psect	intret,global,class=CODE,delta=2
    10                           	psect	intentry,global,class=CODE,delta=2
    11                           	psect	intsave,global,class=BANK0,space=1,delta
      +                          =1
    12                           	psect	text6,local,class=CODE,delta=2
    13                           	psect	rbss_0,global,class=BANK0,space=1,delta=
      +                          1
    14  0000                     
    15  0000                     
    16  0000                     
    17  0000                     
    18  0000                     
    19  0000                     
    20  0000                     
    21  0000                     
    22  0000                     
    23  0000                     
    24                           
    25                           	psect	__Z40231RS_
    26  0190                     
    27  0190                     
    28                           
    29                           	psect	text2
    30                           ;KEY2D.C: 174: unsigned char is_repeat_key(unsi
      +                          gned char r_key)
    31                           ;KEY2D.C: 175: {
    32  074B                     _is_repeat_key
    33                           ;	_r_key assigned to ?a_is_repeat_key+0
    34  0000                     _is_repeat_key$r_key	set	?a_is_repeat_key
    35                           ;_r_key stored from w
    36  074B  0183               	clrf	3	;select bank 0
    37  074C  00AA               	movwf	?a_is_repeat_key
    38                           ;KEY2D.C: 176: if ((r_key == 0x09)||(r_key == 0
      +                          x0a)||(r_key == 0x36)||(r_key == 0x37))
    39  074D  3A09               	xorlw	9
    40  074E  1903               	btfsc	3,2
    41  074F  3401               	retlw	1
    42  0750  082A               	movf	?a_is_repeat_key,w
    43  0751  3A0A               	xorlw	10
    44  0752  1903               	btfsc	3,2
    45  0753  3401               	retlw	1
    46  0754  082A               	movf	?a_is_repeat_key,w
    47  0755  3A36               	xorlw	54
    48  0756  1903               	btfsc	3,2
    49  0757  3401               	retlw	1
    50  0758  082A               	movf	?a_is_repeat_key,w
    51  0759  3A37               	xorlw	55
    52  075A  1903               	btfsc	3,2
    53                           ;KEY2D.C: 177: {
    54  075B  3401               	retlw	1
    55                           ;KEY2D.C: 180: {
    56  075C  3400               	retlw	0
    57  075D                     _scan_key
    58                           ;KEY2D.C: 39: PORTB=0xFF;
    59  075D  30FF               	movlw	-1
    60  075E  0183               	clrf	3	;select bank 0
    61  075F  0086               	movwf	6	;volatile
    62                           ;KEY2D.C: 40: RB2=1;
    63  0760  1506               	bsf	6,2
    64                           ;KEY2D.C: 41: RB1=1;
    65  0761  1486               	bsf	6,1
    66                           ;KEY2D.C: 42: RB0=1;
    67  0762  1406               	bsf	6,0
    68                           ;KEY2D.C: 43: key = 0x00;
    69  0763  01A3               	clrf	_key
    70                           ;KEY2D.C: 45: RB2=0;
    71  0764  1106               	bcf	6,2
    72                           ;KEY2D.C: 46: RB1=1;
    73  0765  1486               	bsf	6,1
    74                           ;KEY2D.C: 47: RB0=1;
    75  0766  1406               	bsf	6,0
    76                           ;KEY2D.C: 48: if (RB3==0) key = 0x01;
    77  0767  1986               	btfsc	6,3
    78  0768  2F6B               	goto	l2
    79  0769  01A3               	clrf	_key
    80  076A  0AA3               	incf	_key
    81  076B                     l2
    82                           ;KEY2D.C: 49: if (RB4==0) key = 0X04;
    83  076B  1A06               	btfsc	6,4
    84  076C  2F6F               	goto	l3
    85  076D  3004               	movlw	4
    86  076E  00A3               	movwf	_key
    87  076F                     l3
    88                           ;KEY2D.C: 50: if (RB5==0) key = 0X07;
    89  076F  1A86               	btfsc	6,5
    90  0770  2F73               	goto	l4
    91  0771  3007               	movlw	7
    92  0772  00A3               	movwf	_key
    93  0773                     l4
    94                           ;KEY2D.C: 53: RB2=1;
    95  0773  1506               	bsf	6,2
    96                           ;KEY2D.C: 54: RB1=0;
    97  0774  1086               	bcf	6,1
    98                           ;KEY2D.C: 55: RB0=1;
    99  0775  1406               	bsf	6,0
   100                           ;KEY2D.C: 56: if (RB3==0) key = 0X02;
   101  0776  1986               	btfsc	6,3
   102  0777  2F7A               	goto	l5
   103  0778  3002               	movlw	2
   104  0779  00A3               	movwf	_key
   105  077A                     l5
   106                           ;KEY2D.C: 57: if (RB4==0) key = 0X05;
   107  077A  1A06               	btfsc	6,4
   108  077B  2F7E               	goto	l6
   109  077C  3005               	movlw	5
   110  077D  00A3               	movwf	_key
   111  077E                     l6
   112                           ;KEY2D.C: 58: if (RB5==0) key = 0x08;
   113  077E  1A86               	btfsc	6,5
   114  077F  2F82               	goto	l7
   115  0780  3008               	movlw	8
   116  0781  00A3               	movwf	_key
   117  0782                     l7
   118                           ;KEY2D.C: 61: RB2=1;
   119  0782  1506               	bsf	6,2
   120                           ;KEY2D.C: 62: RB1=1;
   121  0783  1486               	bsf	6,1
   122                           ;KEY2D.C: 63: RB0=0;
   123  0784  1006               	bcf	6,0
   124                           ;KEY2D.C: 64: if ( RB3==0) key = 0x03;
   125  0785  1986               	btfsc	6,3
   126  0786  2F89               	goto	l8
   127  0787  3003               	movlw	3
   128  0788  00A3               	movwf	_key
   129  0789                     l8
   130                           ;KEY2D.C: 65: if ( RB4==0) key = 0x06;
   131  0789  1A06               	btfsc	6,4
   132  078A  2F8D               	goto	l9
   133  078B  3006               	movlw	6
   134  078C  00A3               	movwf	_key
   135  078D                     l9
   136                           ;KEY2D.C: 66: if ( RB5==0) key = 0X09;
   137  078D  1A86               	btfsc	6,5
   138  078E  0008               	return
   139  078F  3009               	movlw	9
   140  0790  00A3               	movwf	_key
   141                           ;KEY2D.C: 69: }
   142  0791  0008               	return
   143                           ;KEY2D.C: 75: void process_panel_key()
   144                           ;KEY2D.C: 76: {
   145  0792                     _process_panel_key
   146                           ;KEY2D.C: 77: scan_key();
   147  0792  275D               	fcall	_scan_key
   148                           ;KEY2D.C: 78: switch (scan_key_state)
   149  0793  2FF0               	goto	l13
   150  0794                     l14
   151                           ;KEY2D.C: 79: {
   152                           ;KEY2D.C: 86: if (key!=0x00)
   153  0794  08A3               	movf	_key
   154  0795  1903               	btfsc	3,2
   155  0796  2F9E               	goto	l15
   156                           ;KEY2D.C: 88: {
   157  0797  0823               	movf	_key,w
   158  0798  00A4               	movwf	_key_bak
   159                           ;KEY2D.C: 90: shake_cancel_timer = 1;
   160  0799  01A9               	clrf	_shake_cancel_timer
   161  079A  0AA9               	incf	_shake_cancel_timer
   162                           ;KEY2D.C: 91: scan_key_state = 1;
   163  079B  01A8               	clrf	_scan_key_state
   164  079C  0AA8               	incf	_scan_key_state
   165                           ;KEY2D.C: 92: }
   166  079D  2F9F               	goto	l17
   167  079E                     l15
   168                           ;KEY2D.C: 94: {
   169  079E  01A8               	clrf	_scan_key_state
   170                           ;KEY2D.C: 97: }
   171  079F                     l17
   172                           ;KEY2D.C: 99: case 1:
   173                           ;KEY2D.C: 100: if (!shake_cancel_timer)
   174  079F  08A9               	movf	_shake_cancel_timer
   175  07A0  1D03               	btfss	3,2
   176  07A1  0008               	return
   177                           ;KEY2D.C: 101: {
   178  07A2  0823               	movf	_key,w
   179  07A3  0624               	xorwf	_key_bak,w
   180  07A4  1D03               	btfss	3,2
   181  07A5  2FAB               	goto	l19
   182                           ;KEY2D.C: 103: {
   183  07A6  3002               	movlw	2
   184  07A7  00A8               	movwf	_scan_key_state
   185  07A8  3064               	movlw	100
   186  07A9  00A0               	movwf	_complex_key_timer
   187                           ;KEY2D.C: 105: }
   188  07AA  0008               	return
   189  07AB                     l19
   190                           ;KEY2D.C: 107: {
   191  07AB  01A8               	clrf	_scan_key_state
   192                           ;KEY2D.C: 109: }
   193                           ;KEY2D.C: 110: }
   194  07AC  0008               	return
   195  07AD                     l21
   196                           ;KEY2D.C: 112: case 2:
   197                           ;KEY2D.C: 113: if (!complex_key_timer)
   198  07AD  08A0               	movf	_complex_key_timer
   199  07AE  1D03               	btfss	3,2
   200  07AF  2FD5               	goto	l22
   201                           ;KEY2D.C: 114: {
   202  07B0  0823               	movf	_key,w
   203  07B1  0624               	xorwf	_key_bak,w
   204  07B2  1D03               	btfss	3,2
   205  07B3  2FD1               	goto	l23
   206                           ;KEY2D.C: 116: {
   207  07B4  0823               	movf	_key,w
   208  07B5  3A36               	xorlw	54
   209  07B6  1D03               	btfss	3,2
   210  07B7  2FBA               	goto	l24
   211                           ;KEY2D.C: 118: {
   212  07B8  3038               	movlw	56
   213  07B9  2FC1               	goto	L2
   214                           ;KEY2D.C: 120: }else if (key == 0x37)
   215  07BA                     l24
   216  07BA  0823               	movf	_key,w
   217  07BB  3A37               	xorlw	55
   218  07BC  1D03               	btfss	3,2
   219  07BD  2FC0               	goto	l26
   220                           ;KEY2D.C: 121: {
   221  07BE  3039               	movlw	57
   222  07BF  2FC1               	goto	L2
   223                           ;KEY2D.C: 123: }else
   224  07C0                     l26
   225                           ;KEY2D.C: 124: {
   226  07C0  0823               	movf	_key,w
   227  07C1                     L2
   228  07C1  00A1               	movwf	_current_key
   229                           ;KEY2D.C: 126: }
   230                           ;KEY2D.C: 128: if (is_repeat_key(key))
   231  07C2  0823               	movf	_key,w
   232  07C3  274B               	fcall	_is_repeat_key
   233  07C4  3800               	iorlw	0
   234  07C5  1903               	btfsc	3,2
   235  07C6  2FCE               	goto	l28
   236                           ;KEY2D.C: 129: {
   237  07C7  0821               	movf	_current_key,w
   238  07C8  00A6               	movwf	_repeat_key
   239                           ;KEY2D.C: 131: scan_key_state = 3;
   240  07C9  3003               	movlw	3
   241  07CA  00A8               	movwf	_scan_key_state
   242                           ;KEY2D.C: 132: repeat_key_timer = 20;
   243  07CB  3014               	movlw	20
   244  07CC  00A7               	movwf	_repeat_key_timer
   245                           ;KEY2D.C: 133: }else
   246  07CD  0008               	return
   247  07CE                     l28
   248                           ;KEY2D.C: 134: {
   249  07CE  3004               	movlw	4
   250  07CF  00A8               	movwf	_scan_key_state
   251                           ;KEY2D.C: 136: }
   252                           ;KEY2D.C: 137: }else
   253  07D0  0008               	return
   254  07D1                     l23
   255                           ;KEY2D.C: 138: {
   256  07D1  0824               	movf	_key_bak,w
   257  07D2  00A1               	movwf	_current_key
   258                           ;KEY2D.C: 140: scan_key_state = 0;
   259  07D3  01A8               	clrf	_scan_key_state
   260                           ;KEY2D.C: 141: }
   261                           ;KEY2D.C: 142: }else
   262  07D4  0008               	return
   263  07D5                     l22
   264                           ;KEY2D.C: 143: {
   265  07D5  0823               	movf	_key,w
   266  07D6  0624               	xorwf	_key_bak,w
   267  07D7  1903               	btfsc	3,2

⌨️ 快捷键说明

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