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

📄 ssp.lst

📁 用PIC16F887做的4个触摸按键的例程
💻 LST
📖 第 1 页 / 共 4 页
字号:


HI-TECH Software PICC Macro Assembler V9.60
                                                      Tue Nov 04 14:20:22 2008


     1                           	processor	16F887
     2                           	opt	pw 79
     3                           	psect	text0,local,class=CODE,delta=2
     4                           	psect	text2,local,class=CODE,delta=2
     5                           	psect	text4,local,class=CODE,delta=2
     6                           	psect	text5,local,class=CODE,delta=2
     7                           	psect	text6,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	text0
    21  0768                     _SSPInit
    22                           ;ssp.c: 19: void SSPInit(void) {
    23  0768  1683               	bsf	3,5
    24  0769  1303               	bcf	3,6	;carry unused
    25  076A  1607               	bsf	7,4
    26                           ;ssp.c: 25: TRISC3 = 1;
    27  076B  1587               	bsf	7,3
    28                           ;ssp.c: 28: SSPCON = 0x00;
    29  076C  1283               	bcf	3,5
    30  076D  0194               	clrf	20	;volatile
    31                           ;ssp.c: 29: SSPEN = 1;
    32  076E  1694               	bsf	20,5
    33                           ;ssp.c: 30: CKP = 1;
    34  076F  1614               	bsf	20,4
    35                           ;ssp.c: 31: SSPM3 = 1;
    36  0770  1594               	bsf	20,3
    37                           ;ssp.c: 32: SSPM2 = 1;
    38  0771  1514               	bsf	20,2
    39                           ;ssp.c: 33: SSPM1 = 1;
    40  0772  1494               	bsf	20,1
    41                           ;ssp.c: 34: SSPM0 = 0;
    42  0773  1014               	bcf	20,0
    43                           ;ssp.c: 36: GCEN = 0;
    44  0774  1683               	bsf	3,5
    45  0775  1391               	bcf	17,7
    46                           ;ssp.c: 37: SSPADD = 0x42;
    47  0776  3042               	movlw	66
    48  0777  0093               	movwf	19
    49                           ;ssp.c: 38: SMP = 1;
    50  0778  1794               	bsf	20,7
    51                           ;ssp.c: 40: SSPIF = 0;
    52  0779  1283               	bcf	3,5
    53  077A  118C               	bcf	12,3
    54                           ;ssp.c: 41: SSPIE = 1;
    55  077B  1683               	bsf	3,5
    56  077C  158C               	bsf	12,3
    57                           ;ssp.c: 42: PEIE = 1;
    58  077D  170B               	bsf	11,6
    59                           ;ssp.c: 47: Flags.SSPBF = 0;
    60  077E  1283               	bcf	3,5
    61  077F  1023               	bcf	_Flags,0
    62                           ;ssp.c: 48: ByteCount = 0;
    63  0780  01A1               	clrf	_ByteCount
    64                           ;ssp.c: 49: }
    65  0781  0008               	return	;W free
    66                           
    67                           	psect	text2
    68  0E5C                     _LoadSSPBUF
    69                           ;ssp.c: 151: void LoadSSPBUF(void) {
    70  0E5C  0183               	clrf	3	;select bank 0
    71  0E5D  0826               	movf	_SSPCommand,w
    72  0E5E  3A03               	xorlw	3
    73  0E5F  1D03               	btfss	3,2
    74  0E60  2E77               	goto	l23
    75                           ;ssp.c: 157: if (ByteCount < 2*SSPSize) {
    76  0E61  0828               	movf	_SSPSize,w
    77  0E62  00BE               	movwf	?a_LoadSSPBUF
    78  0E63  01BF               	clrf	?a_LoadSSPBUF+1
    79  0E64  1003               	bcf	3,0
    80  0E65  0DBE               	rlf	?a_LoadSSPBUF
    81  0E66  0DBF               	rlf	?a_LoadSSPBUF+1
    82  0E67  0821               	movf	_ByteCount,w
    83  0E68  00C0               	movwf	?a_LoadSSPBUF+2
    84  0E69  01C1               	clrf	?a_LoadSSPBUF+3
    85  0E6A  0841               	movf	?a_LoadSSPBUF+3,w
    86  0E6B  3A80               	xorlw	128
    87  0E6C  00FA               	movwf	btemp
    88  0E6D  083F               	movf	?a_LoadSSPBUF+1,w
    89  0E6E  3A80               	xorlw	128
    90  0E6F  027A               	subwf	btemp,w
    91  0E70  1D03               	btfss	3,2
    92  0E71  2E74               	goto	u135
    93  0E72  083E               	movf	?a_LoadSSPBUF,w
    94  0E73  0240               	subwf	?a_LoadSSPBUF+2,w
    95  0E74                     u135
    96  0E74  1C03               	btfss	3,0
    97  0E75  2E90               	goto	L14
    98  0E76  2EB8               	goto	L15
    99                           ;ssp.c: 161: if (ByteCount == 0)
   100                           ;ssp.c: 162: IndexCount = SSPIndex;
   101                           ;ssp.c: 165: SSPBUF = (ByteCount % 2) ? RAW[Ind
      +                          exCount] : RAW[IndexCount] >> 8;
   102                           ;ssp.c: 170: } else {
   103                           ;ssp.c: 174: if (ByteCount == 2*SSPSize*1)
   104                           ;ssp.c: 175: IndexCount = SSPIndex;
   105                           ;ssp.c: 178: SSPBUF = (ByteCount % 2) ? AVERAGE
      +                          [IndexCount] : AVERAGE[IndexCount] >> 8;
   106                           ;ssp.c: 180: }
   107  0E77                     l23
   108  0E77  0826               	movf	_SSPCommand,w
   109  0E78  3A0C               	xorlw	12
   110  0E79  1D03               	btfss	3,2
   111  0E7A  2F6F               	goto	l29
   112                           ;ssp.c: 185: if (ByteCount < 2*SSPSize) {
   113  0E7B  0828               	movf	_SSPSize,w
   114  0E7C  00BE               	movwf	?a_LoadSSPBUF
   115  0E7D  01BF               	clrf	?a_LoadSSPBUF+1
   116  0E7E  1003               	bcf	3,0
   117  0E7F  0DBE               	rlf	?a_LoadSSPBUF
   118  0E80  0DBF               	rlf	?a_LoadSSPBUF+1
   119  0E81  0821               	movf	_ByteCount,w
   120  0E82  00C0               	movwf	?a_LoadSSPBUF+2
   121  0E83  01C1               	clrf	?a_LoadSSPBUF+3
   122  0E84  0841               	movf	?a_LoadSSPBUF+3,w
   123  0E85  3A80               	xorlw	128
   124  0E86  00FA               	movwf	btemp
   125  0E87  083F               	movf	?a_LoadSSPBUF+1,w
   126  0E88  3A80               	xorlw	128
   127  0E89  027A               	subwf	btemp,w
   128  0E8A  1D03               	btfss	3,2
   129  0E8B  2E8E               	goto	u215
   130  0E8C  083E               	movf	?a_LoadSSPBUF,w
   131  0E8D  0240               	subwf	?a_LoadSSPBUF+2,w
   132  0E8E                     u215
   133  0E8E  1803               	btfsc	3,0
   134  0E8F  2EA0               	goto	l30
   135  0E90                     L14
   136                           ;ssp.c: 190: if (ByteCount == 0)
   137  0E90  08A1               	movf	_ByteCount
   138  0E91  1D03               	btfss	3,2
   139  0E92  2E95               	goto	l31
   140                           ;ssp.c: 191: IndexCount = SSPIndex;
   141  0E93  0827               	movf	_SSPIndex,w
   142  0E94  00A5               	movwf	_IndexCount
   143  0E95                     l31
   144                           ;ssp.c: 194: SSPBUF = (ByteCount % 2) ? RAW[Ind
      +                          exCount] : RAW[IndexCount] >> 8;
   145  0E95  1821               	btfsc	_ByteCount,0
   146  0E96  2E9B               	goto	u246
   147  0E97  0825               	movf	_IndexCount,w
   148  0E98  0725               	addwf	_IndexCount,w
   149  0E99  3E32               	addlw	_RAW^(0+256)
   150  0E9A  2F14               	goto	L10
   151  0E9B                     u246
   152  0E9B  1303               	bcf	3,6	;carry unused
   153  0E9C  0825               	movf	_IndexCount,w
   154  0E9D  0725               	addwf	_IndexCount,w
   155  0E9E  3E32               	addlw	_RAW^(0+256)
   156  0E9F  2F20               	goto	L11
   157                           ;ssp.c: 197: } else if (ByteCount <2*SSPSize*2)
      +                           {
   158  0EA0                     l30
   159  0EA0  0828               	movf	_SSPSize,w
   160  0EA1  00BE               	movwf	?a_LoadSSPBUF
   161  0EA2  01BF               	clrf	?a_LoadSSPBUF+1
   162  0EA3  1003               	bcf	3,0
   163  0EA4  0DBE               	rlf	?a_LoadSSPBUF
   164  0EA5  0DBF               	rlf	?a_LoadSSPBUF+1
   165  0EA6  1003               	bcf	3,0
   166  0EA7  0DBE               	rlf	?a_LoadSSPBUF
   167  0EA8  0DBF               	rlf	?a_LoadSSPBUF+1
   168  0EA9  0821               	movf	_ByteCount,w
   169  0EAA  00C0               	movwf	?a_LoadSSPBUF+2
   170  0EAB  01C1               	clrf	?a_LoadSSPBUF+3
   171  0EAC  0841               	movf	?a_LoadSSPBUF+3,w
   172  0EAD  3A80               	xorlw	128
   173  0EAE  00FA               	movwf	btemp
   174  0EAF  083F               	movf	?a_LoadSSPBUF+1,w
   175  0EB0  3A80               	xorlw	128
   176  0EB1  027A               	subwf	btemp,w
   177  0EB2  1D03               	btfss	3,2
   178  0EB3  2EB6               	goto	u255
   179  0EB4  083E               	movf	?a_LoadSSPBUF,w
   180  0EB5  0240               	subwf	?a_LoadSSPBUF+2,w
   181  0EB6                     u255
   182  0EB6  1803               	btfsc	3,0
   183  0EB7  2ED6               	goto	l33
   184  0EB8                     L15
   185                           ;ssp.c: 202: if (ByteCount == 2*SSPSize*1)
   186  0EB8  0828               	movf	_SSPSize,w
   187  0EB9  00BE               	movwf	?a_LoadSSPBUF
   188  0EBA  01BF               	clrf	?a_LoadSSPBUF+1
   189  0EBB  1003               	bcf	3,0
   190  0EBC  0DBE               	rlf	?a_LoadSSPBUF
   191  0EBD  0DBF               	rlf	?a_LoadSSPBUF+1
   192  0EBE  0821               	movf	_ByteCount,w
   193  0EBF  00C0               	movwf	?a_LoadSSPBUF+2
   194  0EC0  01C1               	clrf	?a_LoadSSPBUF+3
   195  0EC1  083F               	movf	?a_LoadSSPBUF+1,w
   196  0EC2  0641               	xorwf	?a_LoadSSPBUF+3,w
   197  0EC3  1D03               	btfss	3,2
   198  0EC4  2EC7               	goto	u265
   199  0EC5  083E               	movf	?a_LoadSSPBUF,w
   200  0EC6  0640               	xorwf	?a_LoadSSPBUF+2,w
   201  0EC7                     u265
   202  0EC7  1D03               	btfss	3,2
   203  0EC8  2ECB               	goto	l34
   204                           ;ssp.c: 203: IndexCount = SSPIndex;
   205  0EC9  0827               	movf	_SSPIndex,w
   206  0ECA  00A5               	movwf	_IndexCount
   207  0ECB                     l34
   208                           ;ssp.c: 206: SSPBUF = (ByteCount % 2) ? AVERAGE
      +                          [IndexCount] : AVERAGE[IndexCount] >> 8;
   209  0ECB  1821               	btfsc	_ByteCount,0
   210  0ECC  2ED1               	goto	u286
   211  0ECD  0825               	movf	_IndexCount,w
   212  0ECE  0725               	addwf	_IndexCount,w
   213  0ECF  3E10               	addlw	_AVERAGE^(0+256)
   214  0ED0  2F14               	goto	L10
   215  0ED1                     u286
   216  0ED1  1303               	bcf	3,6	;carry unused
   217  0ED2  0825               	movf	_IndexCount,w
   218  0ED3  0725               	addwf	_IndexCount,w
   219  0ED4  3E10               	addlw	_AVERAGE^(0+256)
   220  0ED5  2F20               	goto	L11
   221                           ;ssp.c: 209: } else if (ByteCount <2*SSPSize*3)
      +                           {
   222  0ED6                     l33
   223  0ED6  3003               	movlw	3
   224  0ED7  00FC               	movwf	btemp+2
   225  0ED8  01FD               	clrf	btemp+3
   226  0ED9  0828               	movf	_SSPSize,w
   227  0EDA  00FA               	movwf	btemp
   228  0EDB  01FB               	clrf	btemp+1
   229  0EDC  1003               	bcf	3,0
   230  0EDD  0DFA               	rlf	btemp
   231  0EDE  0DFB               	rlf	btemp+1
   232  0EDF  120A  118A  2782   	fcall	awmul
      +       120A  158A         
   233  0EE4  087E               	movf	btemp+4,w
   234  0EE5  00BE               	movwf	?a_LoadSSPBUF
   235  0EE6  087F               	movf	btemp+5,w
   236  0EE7  00BF               	movwf	?a_LoadSSPBUF+1
   237  0EE8  0821               	movf	_ByteCount,w
   238  0EE9  00C0               	movwf	?a_LoadSSPBUF+2
   239  0EEA  01C1               	clrf	?a_LoadSSPBUF+3
   240  0EEB  0841               	movf	?a_LoadSSPBUF+3,w
   241  0EEC  3A80               	xorlw	128
   242  0EED  00FA               	movwf	btemp
   243  0EEE  083F               	movf	?a_LoadSSPBUF+1,w
   244  0EEF  3A80               	xorlw	128
   245  0EF0  027A               	subwf	btemp,w
   246  0EF1  1D03               	btfss	3,2
   247  0EF2  2EF5               	goto	u295
   248  0EF3  083E               	movf	?a_LoadSSPBUF,w
   249  0EF4  0240               	subwf	?a_LoadSSPBUF+2,w
   250  0EF5                     u295
   251                           ;ssp.c: 214: if (ByteCount == 2*SSPSize*2)
   252  0EF5  1283               	bcf	3,5
   253  0EF6  1303               	bcf	3,6	;carry unused
   254  0EF7  0828               	movf	_SSPSize,w
   255  0EF8  00BE               	movwf	?a_LoadSSPBUF
   256  0EF9  01BF               	clrf	?a_LoadSSPBUF+1
   257  0EFA  1803               	btfsc	3,0
   258  0EFB  2F24               	goto	L16
   259  0EFC  1003               	bcf	3,0
   260  0EFD  0DBE               	rlf	?a_LoadSSPBUF
   261  0EFE  0DBF               	rlf	?a_LoadSSPBUF+1
   262  0EFF  1003               	bcf	3,0
   263  0F00  0DBE               	rlf	?a_LoadSSPBUF

⌨️ 快捷键说明

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