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

📄 key.lst

📁 使用Microchip公司16F648实现4*6键盘程序. 在PICC环境下编译通过,包含RS485通讯. 代码完整,可供参考.
💻 LST
📖 第 1 页 / 共 5 页
字号:
   246  04C0                     l22
   247                           ;key.c: 155: }
   248  04C0  0847               	movf	?a_RangeKeyValue+1,w
   249  04C1  3E36               	addlw	_KeyInput^(0+256)
   250  04C2  0084               	movwf	4
   251  04C3  1783               	bsf	3,7
   252  04C4  1D80               	btfss	0,3
   253  04C5  2CE7               	goto	l23
   254                           ;key.c: 158: {
   255  04C6  0848               	movf	?a_RangeKeyValue+2,w
   256  04C7  3E12               	addlw	18
   257  04C8  00C9               	movwf	?a_RangeKeyValue+3
   258                           ;key.c: 160: KeyUnitCou++;
   259  04C9  0ACA               	incf	?a_RangeKeyValue+4
   260                           ;key.c: 161: KeyBitValueStruct.allbits |= 1 << 
      +                          (keyvalue_a - 1);
   261  04CA  0349               	decf	?a_RangeKeyValue+3,w
   262  04CB  00F2               	movwf	btemp+2
   263  04CC  3001               	movlw	1
   264  04CD  00F0               	movwf	btemp
   265  04CE  3000               	movlw	0
   266  04CF  01F1               	clrf	btemp+1
   267  04D0  0AF2               	incf	btemp+2
   268  04D1  2CD5               	goto	u84
   269  04D2                     u85
   270  04D2  1003               	bcf	3,0
   271  04D3  0DF0               	rlf	btemp
   272  04D4  0DF1               	rlf	btemp+1
   273  04D5                     u84
   274  04D5  0BF2               	decfsz	btemp+2
   275  04D6  2CD2               	goto	u85
   276  04D7  0870               	movf	btemp,w
   277  04D8  00F0               	movwf	btemp
   278  04D9  0871               	movf	btemp+1,w
   279  04DA  3000               	movlw	0
   280  04DB  1BF1               	btfsc	btemp+1,7
   281  04DC  30FF               	movlw	255
   282  04DD  00F2               	movwf	btemp+2
   283  04DE  00F3               	movwf	btemp+3
   284  04DF  0870               	movf	btemp,w
   285  04E0  04CD               	iorwf	?a_RangeKeyValue+7
   286  04E1  0871               	movf	btemp+1,w
   287  04E2  04CE               	iorwf	?a_RangeKeyValue+8
   288  04E3  0872               	movf	btemp+2,w
   289  04E4  04CF               	iorwf	?a_RangeKeyValue+9
   290  04E5  0873               	movf	btemp+3,w
   291  04E6  04D0               	iorwf	?a_RangeKeyValue+10
   292  04E7                     l23
   293                           ;key.c: 162: }
   294  04E7  0AC7               	incf	?a_RangeKeyValue+1
   295  04E8                     l17
   296                           ;key.c: 164: }
   297  04E8  3007               	movlw	7
   298  04E9  0AC8               	incf	?a_RangeKeyValue+2
   299  04EA  0248               	subwf	?a_RangeKeyValue+2,w
   300  04EB  1C03               	btfss	3,0
   301  04EC  2C4C               	goto	l18
   302                           ;key.c: 168: if(0 == KeyUnitCou)
   303  04ED  08CA               	movf	?a_RangeKeyValue+4
   304  04EE  1D03               	btfss	3,2
   305  04EF  2CF3               	goto	l24
   306                           ;key.c: 169: {
   307  04F0  01CB               	clrf	?a_RangeKeyValue+5
   308  04F1  01CC               	clrf	?a_RangeKeyValue+6
   309                           ;key.c: 171: }
   310  04F2  2D34               	goto	l25
   311  04F3                     l24
   312  04F3  0B4A               	decfsz	?a_RangeKeyValue+4,w
   313  04F4  2CFC               	goto	l26
   314                           ;key.c: 173: {
   315  04F5  0849               	movf	?a_RangeKeyValue+3,w
   316  04F6  00CB               	movwf	?a_RangeKeyValue+5
   317                           ;key.c: 175: KeyValueStructTemp.bits.Status = 1
      +                          ;
   318  04F7  084C               	movf	?a_RangeKeyValue+6,w
   319  04F8  390F               	andlw	-241
   320  04F9  3810               	iorlw	16
   321  04FA  00CC               	movwf	?a_RangeKeyValue+6
   322                           ;key.c: 176: }
   323  04FB  2D34               	goto	l25
   324  04FC                     l26
   325  04FC  3002               	movlw	2
   326  04FD  024A               	subwf	?a_RangeKeyValue+4,w
   327                           ;key.c: 178: {
   328  04FE  084C               	movf	?a_RangeKeyValue+6,w
   329  04FF  1C03               	btfss	3,0
   330  0500  2D35               	goto	L1
   331  0501  390F               	andlw	-241
   332  0502  3830               	iorlw	48
   333  0503  00CC               	movwf	?a_RangeKeyValue+6
   334                           ;key.c: 181: if(KeyBitValueStruct.bits.KeyValue
      +                          _1)
   335  0504  184D               	btfsc	?a_RangeKeyValue+7,0
   336                           ;key.c: 182: {
   337  0505  1CCD               	btfss	?a_RangeKeyValue+7,1
   338  0506  2D14               	goto	l29
   339                           ;key.c: 184: {
   340  0507  1DCD               	btfss	?a_RangeKeyValue+7,3
   341  0508  2D14               	goto	l29
   342                           ;key.c: 186: {
   343  0509  084C               	movf	?a_RangeKeyValue+6,w
   344  050A  39F0               	andlw	-16
   345  050B  3801               	iorlw	1
   346  050C  00CC               	movwf	?a_RangeKeyValue+6
   347                           ;key.c: 189: KeyValueStructTemp.bits.Status = 2
      +                          ;
   348  050D  390F               	andlw	-241
   349  050E  3820               	iorlw	32
   350  050F  00CC               	movwf	?a_RangeKeyValue+6
   351                           ;key.c: 190: return KeyValueStructTemp;
   352  0510  00F1               	movwf	btemp+1
   353  0511  084B               	movf	?a_RangeKeyValue+5,w
   354  0512  00F0               	movwf	btemp
   355  0513  0008               	return
   356  0514                     l29
   357                           ;key.c: 195: if(KeyBitValueStruct.bits.KeyValue
      +                          _1)
   358  0514  184D               	btfsc	?a_RangeKeyValue+7,0
   359                           ;key.c: 196: {
   360  0515  1CCD               	btfss	?a_RangeKeyValue+7,1
   361  0516  2D24               	goto	l32
   362                           ;key.c: 198: {
   363  0517  1D4D               	btfss	?a_RangeKeyValue+7,2
   364  0518  2D24               	goto	l32
   365                           ;key.c: 200: {
   366  0519  084C               	movf	?a_RangeKeyValue+6,w
   367  051A  39F0               	andlw	-16
   368  051B  3802               	iorlw	2
   369  051C  00CC               	movwf	?a_RangeKeyValue+6
   370                           ;key.c: 203: KeyValueStructTemp.bits.Status = 2
      +                          ;
   371  051D  390F               	andlw	-241
   372  051E  3820               	iorlw	32
   373  051F  00CC               	movwf	?a_RangeKeyValue+6
   374                           ;key.c: 204: return KeyValueStructTemp;
   375  0520  00F1               	movwf	btemp+1
   376  0521  084B               	movf	?a_RangeKeyValue+5,w
   377  0522  00F0               	movwf	btemp
   378  0523  0008               	return
   379  0524                     l32
   380                           ;key.c: 209: if(KeyBitValueStruct.bits.KeyValue
      +                          _1)
   381  0524  184D               	btfsc	?a_RangeKeyValue+7,0
   382                           ;key.c: 210: {
   383  0525  1F4D               	btfss	?a_RangeKeyValue+7,6
   384  0526  2D34               	goto	l25
   385                           ;key.c: 212: {
   386  0527  1E4E               	btfss	?a_RangeKeyValue+8,4
   387  0528  2D34               	goto	l25
   388                           ;key.c: 214: {
   389  0529  084C               	movf	?a_RangeKeyValue+6,w
   390  052A  39F0               	andlw	-16
   391  052B  3803               	iorlw	3
   392  052C  00CC               	movwf	?a_RangeKeyValue+6
   393                           ;key.c: 216: KeyValueStructTemp.bits.Status = 2
      +                          ;
   394  052D  390F               	andlw	-241
   395  052E  3820               	iorlw	32
   396  052F  00CC               	movwf	?a_RangeKeyValue+6
   397                           ;key.c: 217: return KeyValueStructTemp;
   398  0530  00F1               	movwf	btemp+1
   399  0531  084B               	movf	?a_RangeKeyValue+5,w
   400  0532  00F0               	movwf	btemp
   401  0533  0008               	return
   402  0534                     l25
   403  0534  084C               	movf	?a_RangeKeyValue+6,w
   404  0535                     L1
   405  0535  00F1               	movwf	btemp+1
   406  0536  084B               	movf	?a_RangeKeyValue+5,w
   407  0537  00F0               	movwf	btemp
   408                           ;key.c: 223: }
   409  0538  0008               	return
   410  0539                     _key_scan
   411                           ;	_bufporta assigned to ?a_key_scan+0
   412  0000                     _key_scan$bufporta	set	?a_key_scan
   413                           ;	_bufportb assigned to ?a_key_scan+1
   414  0000                     _key_scan$bufportb	set	?a_key_scan+1
   415                           ;key.c: 17: char bufportb,bufporta;
   416  0539  0183               	clrf	3	;select bank 0
   417  053A  0806               	movf	6,w	;volatile
   418  053B  00C7               	movwf	?a_key_scan+1
   419                           ;key.c: 19: bufporta = PORTA;
   420  053C  0805               	movf	5,w	;volatile
   421  053D  00C6               	movwf	?a_key_scan
   422                           ;key.c: 20: TRISA |= 0b00011111;
   423  053E  301F               	movlw	31
   424  053F  1683               	bsf	3,5
   425  0540  0485               	iorwf	5	;volatile
   426                           ;key.c: 21: TRISB |= 0b11111001;
   427  0541  30F9               	movlw	-7
   428  0542  0486               	iorwf	6	;volatile
   429                           ;key.c: 22: asm("nop");
   430  0543  0000               	nop	;#
   431                           ;key.c: 23: asm("nop");
   432  0544  0000               	nop	;#
   433                           ;key.c: 27: TRISB0 = 0;
   434  0545  1006               	bcf	6,0
   435                           ;key.c: 28: asm("nop");
   436  0546  0000               	nop	;#
   437                           ;key.c: 29: asm("nop");
   438  0547  0000               	nop	;#
   439                           ;key.c: 30: RB0 = 0;
   440  0548  1283               	bcf	3,5
   441  0549  1006               	bcf	6,0
   442                           ;key.c: 31: asm("nop");
   443  054A  0000               	nop	;#
   444                           ;key.c: 32: asm("nop");
   445  054B  0000               	nop	;#
   446                           ;key.c: 33: asm("nop");
   447  054C  0000               	nop	;#
   448                           ;key.c: 34: KeyInput[0].allbits = PORTA;
   449  054D  0805               	movf	5,w	;volatile
   450  054E  1703               	bsf	3,6
   451  054F  00B6               	movwf	_KeyInput^(0+256)	;volatile
   452                           ;key.c: 36: KeyInput[0].allbits |= 0xf0;
   453  0550  30F0               	movlw	-16
   454  0551  04B6               	iorwf	_KeyInput^(0+256)	;volatile
   455                           ;key.c: 37: TRISB0 = 1;
   456  0552  1683               	bsf	3,5
   457  0553  1303               	bcf	3,6	;carry unused
   458  0554  1406               	bsf	6,0
   459                           ;key.c: 38: KeyInput[0].allbits ^= 0xff;
   460  0555  30FF               	movlw	-1
   461  0556  1283               	bcf	3,5
   462  0557  1703               	bsf	3,6
   463  0558  06B6               	xorwf	_KeyInput^(0+256)	;volatile
   464                           ;key.c: 40: TRISB3 = 0;
   465  0559  1683               	bsf	3,5
   466  055A  1303               	bcf	3,6	;carry unused
   467  055B  1186               	bcf	6,3
   468                           ;key.c: 41: asm("nop");
   469  055C  0000               	nop	;#
   470                           ;key.c: 42: asm("nop");
   471  055D  0000               	nop	;#
   472                           ;key.c: 43: RB3 = 0;
   473  055E  1283               	bcf	3,5
   474  055F  1186               	bcf	6,3
   475                           ;key.c: 44: asm("nop");
   476  0560  0000               	nop	;#
   477                           ;key.c: 45: asm("nop");
   478  0561  0000               	nop	;#
   479                           ;key.c: 46: asm("nop");
   480  0562  0000               	nop	;#
   481                           ;key.c: 47: KeyInput[1].allbits = PORTA;
   482  0563  0805               	movf	5,w	;volatile
   483  0564  1703               	bsf	3,6
   484  0565  00B7               	movwf	(_KeyInput+1)^(0+256)	;volatile
   485                           ;key.c: 49: KeyInput[1].allbits |= 0xf0;
   486  0566  30F0               	movlw	-16
   487  0567  04B7               	iorwf	(_KeyInput+1)^(0+256)	;volatile
   488                           ;key.c: 50: TRISB3 = 1;
   489  0568  1683               	bsf	3,5
   490  0569  1303               	bcf	3,6	;carry unused
   491  056A  1586               	bsf	6,3
   492                           ;key.c: 51: KeyInput[1].allbits ^= 0xff;
   493  056B  30FF               	movlw	-1
   494  056C  1283               	bcf	3,5
   495  056D  1703               	bsf	3,6
   496  056E  06B7               	xorwf	(_KeyInput+1)^(0+256)	;volatile
   497                           ;key.c: 53: TRISB4 = 0;
   498  056F  1683               	bsf	3,5
   499  0570  1303               	bcf	3,6	;carry unused
   500  0571  1206               	bcf	6,4
   501                           ;key.c: 54: asm("nop");
   502  0572  0000               	nop	;#

⌨️ 快捷键说明

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