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

📄 key3a.lst

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


HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-63763                            Sat Jun 14 16:35:55 2008

Licensed to: CHENLIYUN
     1                           	processor	16F877A
     2                           	opt	pw 79
     3                           	psect	__Z63763RS_,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	text5,local,class=CODE,delta=2
     8                           	psect	temp,global,ovrld,class=BANK0,space=1,de
      +                          lta=1
     9  0000                     
    10  0000                     
    11  0000                     
    12  0000                     
    13  0000                     
    14  0000                     
    15  0000                     
    16  0000                     
    17  0000                     
    18  0000                     
    19                           
    20                           	psect	__Z63763RS_
    21  0190                     
    22  0190                     
    23                           
    24                           	psect	text2
    25                           ;KEY3A.C: 167: unsigned char is_repeat_key(unsi
      +                          gned char r_key)
    26                           ;KEY3A.C: 168: {
    27  028B                     _is_repeat_key
    28                           ;	_r_key assigned to ?a_is_repeat_key+0
    29  0000                     _is_repeat_key$r_key	set	?a_is_repeat_key
    30                           ;_r_key stored from w
    31  028B  0183               	clrf	3	;select bank 0
    32  028C  00DC               	movwf	?a_is_repeat_key
    33                           ;KEY3A.C: 169: if ((r_key == 0x09)||(r_key == 0
      +                          x0a)||(r_key == 0x36)||(r_key == 0x37))
    34  028D  3A09               	xorlw	9
    35  028E  1903               	btfsc	3,2
    36  028F  3401               	retlw	1
    37  0290  085C               	movf	?a_is_repeat_key,w
    38  0291  3A0A               	xorlw	10
    39  0292  1903               	btfsc	3,2
    40  0293  3401               	retlw	1
    41  0294  085C               	movf	?a_is_repeat_key,w
    42  0295  3A36               	xorlw	54
    43  0296  1903               	btfsc	3,2
    44  0297  3401               	retlw	1
    45  0298  085C               	movf	?a_is_repeat_key,w
    46  0299  3A37               	xorlw	55
    47  029A  1903               	btfsc	3,2
    48                           ;KEY3A.C: 170: {
    49  029B  3401               	retlw	1
    50                           ;KEY3A.C: 173: {
    51  029C  3400               	retlw	0
    52  029D                     _scan_key
    53                           ;KEY3A.C: 32: PORTB=0xFF;
    54  029D  30FF               	movlw	-1
    55  029E  0183               	clrf	3	;select bank 0
    56  029F  0086               	movwf	6	;volatile
    57                           ;KEY3A.C: 33: RB2=1;
    58  02A0  1506               	bsf	6,2
    59                           ;KEY3A.C: 34: RB1=1;
    60  02A1  1486               	bsf	6,1
    61                           ;KEY3A.C: 35: RB0=1;
    62  02A2  1406               	bsf	6,0
    63                           ;KEY3A.C: 36: key = 0x00;
    64  02A3  01A8               	clrf	_key
    65                           ;KEY3A.C: 38: RB2=0;
    66  02A4  1106               	bcf	6,2
    67                           ;KEY3A.C: 39: RB1=1;
    68  02A5  1486               	bsf	6,1
    69                           ;KEY3A.C: 40: RB0=1;
    70  02A6  1406               	bsf	6,0
    71                           ;KEY3A.C: 41: if (RB3==0) key = 0x01;
    72  02A7  1986               	btfsc	6,3
    73  02A8  2AAB               	goto	l2
    74  02A9  01A8               	clrf	_key
    75  02AA  0AA8               	incf	_key
    76  02AB                     l2
    77                           ;KEY3A.C: 42: if (RB4==0) key = 0X04;
    78  02AB  1A06               	btfsc	6,4
    79  02AC  2AAF               	goto	l3
    80  02AD  3004               	movlw	4
    81  02AE  00A8               	movwf	_key
    82  02AF                     l3
    83                           ;KEY3A.C: 43: if (RB5==0) key = 0X07;
    84  02AF  1A86               	btfsc	6,5
    85  02B0  2AB3               	goto	l4
    86  02B1  3007               	movlw	7
    87  02B2  00A8               	movwf	_key
    88  02B3                     l4
    89                           ;KEY3A.C: 46: RB2=1;
    90  02B3  1506               	bsf	6,2
    91                           ;KEY3A.C: 47: RB1=0;
    92  02B4  1086               	bcf	6,1
    93                           ;KEY3A.C: 48: RB0=1;
    94  02B5  1406               	bsf	6,0
    95                           ;KEY3A.C: 49: if (RB3==0) key = 0X02;
    96  02B6  1986               	btfsc	6,3
    97  02B7  2ABA               	goto	l5
    98  02B8  3002               	movlw	2
    99  02B9  00A8               	movwf	_key
   100  02BA                     l5
   101                           ;KEY3A.C: 50: if (RB4==0) key = 0X05;
   102  02BA  1A06               	btfsc	6,4
   103  02BB  2ABE               	goto	l6
   104  02BC  3005               	movlw	5
   105  02BD  00A8               	movwf	_key
   106  02BE                     l6
   107                           ;KEY3A.C: 51: if (RB5==0) key = 0x08;
   108  02BE  1A86               	btfsc	6,5
   109  02BF  2AC2               	goto	l7
   110  02C0  3008               	movlw	8
   111  02C1  00A8               	movwf	_key
   112  02C2                     l7
   113                           ;KEY3A.C: 54: RB2=1;
   114  02C2  1506               	bsf	6,2
   115                           ;KEY3A.C: 55: RB1=1;
   116  02C3  1486               	bsf	6,1
   117                           ;KEY3A.C: 56: RB0=0;
   118  02C4  1006               	bcf	6,0
   119                           ;KEY3A.C: 57: if ( RB3==0) key = 0x03;
   120  02C5  1986               	btfsc	6,3
   121  02C6  2AC9               	goto	l8
   122  02C7  3003               	movlw	3
   123  02C8  00A8               	movwf	_key
   124  02C9                     l8
   125                           ;KEY3A.C: 58: if ( RB4==0) key = 0x06;
   126  02C9  1A06               	btfsc	6,4
   127  02CA  2ACD               	goto	l9
   128  02CB  3006               	movlw	6
   129  02CC  00A8               	movwf	_key
   130  02CD                     l9
   131                           ;KEY3A.C: 59: if ( RB5==0) key = 0X09;
   132  02CD  1A86               	btfsc	6,5
   133  02CE  0008               	return
   134  02CF  3009               	movlw	9
   135  02D0  00A8               	movwf	_key
   136                           ;KEY3A.C: 62: }
   137  02D1  0008               	return
   138                           ;KEY3A.C: 68: void process_panel_key()
   139                           ;KEY3A.C: 69: {
   140  02D2                     _process_panel_key
   141                           ;KEY3A.C: 70: scan_key();
   142  02D2  229D               	fcall	_scan_key
   143                           ;KEY3A.C: 71: switch (scan_key_state)
   144  02D3  2B30               	goto	l13
   145  02D4                     l14
   146                           ;KEY3A.C: 72: {
   147                           ;KEY3A.C: 79: if (key!=0x00)
   148  02D4  08A8               	movf	_key
   149  02D5  1903               	btfsc	3,2
   150  02D6  2ADE               	goto	l15
   151                           ;KEY3A.C: 81: {
   152  02D7  0828               	movf	_key,w
   153  02D8  00A9               	movwf	_key_bak
   154                           ;KEY3A.C: 83: shake_cancel_timer = 1;
   155  02D9  01AE               	clrf	_shake_cancel_timer
   156  02DA  0AAE               	incf	_shake_cancel_timer
   157                           ;KEY3A.C: 84: scan_key_state = 1;
   158  02DB  01AD               	clrf	_scan_key_state
   159  02DC  0AAD               	incf	_scan_key_state
   160                           ;KEY3A.C: 85: }
   161  02DD  2ADF               	goto	l17
   162  02DE                     l15
   163                           ;KEY3A.C: 87: {
   164  02DE  01AD               	clrf	_scan_key_state
   165                           ;KEY3A.C: 90: }
   166  02DF                     l17
   167                           ;KEY3A.C: 92: case 1:
   168                           ;KEY3A.C: 93: if (!shake_cancel_timer)
   169  02DF  08AE               	movf	_shake_cancel_timer
   170  02E0  1D03               	btfss	3,2
   171  02E1  0008               	return
   172                           ;KEY3A.C: 94: {
   173  02E2  0828               	movf	_key,w
   174  02E3  0629               	xorwf	_key_bak,w
   175  02E4  1D03               	btfss	3,2
   176  02E5  2AEB               	goto	l19
   177                           ;KEY3A.C: 96: {
   178  02E6  3002               	movlw	2
   179  02E7  00AD               	movwf	_scan_key_state
   180  02E8  3064               	movlw	100
   181  02E9  00A5               	movwf	_complex_key_timer
   182                           ;KEY3A.C: 98: }
   183  02EA  0008               	return
   184  02EB                     l19
   185                           ;KEY3A.C: 100: {
   186  02EB  01AD               	clrf	_scan_key_state
   187                           ;KEY3A.C: 102: }
   188                           ;KEY3A.C: 103: }
   189  02EC  0008               	return
   190  02ED                     l21
   191                           ;KEY3A.C: 105: case 2:
   192                           ;KEY3A.C: 106: if (!complex_key_timer)
   193  02ED  08A5               	movf	_complex_key_timer
   194  02EE  1D03               	btfss	3,2
   195  02EF  2B15               	goto	l22
   196                           ;KEY3A.C: 107: {
   197  02F0  0828               	movf	_key,w
   198  02F1  0629               	xorwf	_key_bak,w
   199  02F2  1D03               	btfss	3,2
   200  02F3  2B11               	goto	l23
   201                           ;KEY3A.C: 109: {
   202  02F4  0828               	movf	_key,w
   203  02F5  3A36               	xorlw	54
   204  02F6  1D03               	btfss	3,2
   205  02F7  2AFA               	goto	l24
   206                           ;KEY3A.C: 111: {
   207  02F8  3038               	movlw	56
   208  02F9  2B01               	goto	L2
   209                           ;KEY3A.C: 113: }else if (key == 0x37)
   210  02FA                     l24
   211  02FA  0828               	movf	_key,w
   212  02FB  3A37               	xorlw	55
   213  02FC  1D03               	btfss	3,2
   214  02FD  2B00               	goto	l26
   215                           ;KEY3A.C: 114: {
   216  02FE  3039               	movlw	57
   217  02FF  2B01               	goto	L2
   218                           ;KEY3A.C: 116: }else
   219  0300                     l26
   220                           ;KEY3A.C: 117: {
   221  0300  0828               	movf	_key,w
   222  0301                     L2
   223  0301  00A6               	movwf	_current_key
   224                           ;KEY3A.C: 119: }
   225                           ;KEY3A.C: 121: if (is_repeat_key(key))
   226  0302  0828               	movf	_key,w
   227  0303  228B               	fcall	_is_repeat_key
   228  0304  3800               	iorlw	0
   229  0305  1903               	btfsc	3,2
   230  0306  2B0E               	goto	l28
   231                           ;KEY3A.C: 122: {
   232  0307  0826               	movf	_current_key,w
   233  0308  00AB               	movwf	_repeat_key
   234                           ;KEY3A.C: 124: scan_key_state = 3;
   235  0309  3003               	movlw	3
   236  030A  00AD               	movwf	_scan_key_state
   237                           ;KEY3A.C: 125: repeat_key_timer = 20;
   238  030B  3014               	movlw	20
   239  030C  00AC               	movwf	_repeat_key_timer
   240                           ;KEY3A.C: 126: }else
   241  030D  0008               	return
   242  030E                     l28
   243                           ;KEY3A.C: 127: {
   244  030E  3004               	movlw	4
   245  030F  00AD               	movwf	_scan_key_state
   246                           ;KEY3A.C: 129: }
   247                           ;KEY3A.C: 130: }else
   248  0310  0008               	return
   249  0311                     l23
   250                           ;KEY3A.C: 131: {

⌨️ 快捷键说明

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