📄 pbp_interput2.lst
字号:
MPASM 03.80 Released PBP_INTERPUT2.ASM 6-15-2008 11:45:37 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001
00002 ; PicBasic Pro Compiler 2.46, (c) 1998, 2005 microEngineering Labs, Inc. All Rights Reserved.
00000001 00003 MPASMWIN_USED EQU 1
00004
00005 INCLUDE "C:\PBP246\16F877A.INC"
00001 ;****************************************************************
00002 ;* 16F877A.INC *
00003 ;* *
00004 ;* By : Leonard Zerman, Jeff Schmoyer *
00005 ;* Notice : Copyright (c) 2003 microEngineering Labs, Inc. *
00006 ;* All Rights Reserved *
00007 ;* Date : 11/06/03 *
00008 ;* Version : 2.45 *
00009 ;* Notes : *
00010 ;****************************************************************
00019 LIST
00020 LIST p = 16F877A, r = dec, w = -302
00021 INCLUDE "P16F877A.INC" ; MPASM Header
00001 LIST
00002 ; P16F877A.INC Standard Header File, Version 1.00 Microchip Technology, Inc.
00398 LIST
2007 3F7D 00022 __config _XT_OSC & _WDT_ON & _LVP_OFF & _CP_OFF
00025 LIST
00006
00007
00008 ; Define statements.
00009 ; C:\PBP246\16F877A.BAS 00018 DEFINE CODE_SIZE 8
00010 #define CODE_SIZE 8
00011
00000020 00012 RAM_START EQU 00020h
000001EF 00013 RAM_END EQU 001EFh
00000004 00014 RAM_BANKS EQU 00004h
00000020 00015 BANK0_START EQU 00020h
0000007F 00016 BANK0_END EQU 0007Fh
000000A0 00017 BANK1_START EQU 000A0h
000000EF 00018 BANK1_END EQU 000EFh
00000110 00019 BANK2_START EQU 00110h
0000016F 00020 BANK2_END EQU 0016Fh
00000190 00021 BANK3_START EQU 00190h
000001EF 00022 BANK3_END EQU 001EFh
00002100 00023 EEPROM_START EQU 02100h
000021FF 00024 EEPROM_END EQU 021FFh
00025
00026 ; C:\PBP246\PBPPIC14.RAM 00012 R0 VAR WORD BANK0 SYSTEM ' System Register
00000020 00027 R0 EQU RAM_START + 000h
00028 ; C:\PBP246\PBPPIC14.RAM 00013 R1 VAR WORD BANK0 SYSTEM ' System Register
00000022 00029 R1 EQU RAM_START + 002h
00030 ; C:\PBP246\PBPPIC14.RAM 00014 R2 VAR WORD BANK0 SYSTEM ' System Register
00000024 00031 R2 EQU RAM_START + 004h
00032 ; C:\PBP246\PBPPIC14.RAM 00015 R3 VAR WORD BANK0 SYSTEM ' System Register
00000026 00033 R3 EQU RAM_START + 006h
00034 ; C:\PBP246\PBPPIC14.RAM 00016 R4 VAR WORD BANK0 SYSTEM ' System Register
00000028 00035 R4 EQU RAM_START + 008h
MPASM 03.80 Released PBP_INTERPUT2.ASM 6-15-2008 11:45:37 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00036 ; C:\PBP246\PBPPIC14.RAM 00017 R5 VAR WORD BANK0 SYSTEM ' System Register
0000002A 00037 R5 EQU RAM_START + 00Ah
00038 ; C:\PBP246\PBPPIC14.RAM 00018 R6 VAR WORD BANK0 SYSTEM ' System Register
0000002C 00039 R6 EQU RAM_START + 00Ch
00040 ; C:\PBP246\PBPPIC14.RAM 00019 R7 VAR WORD BANK0 SYSTEM ' System Register
0000002E 00041 R7 EQU RAM_START + 00Eh
00042 ; C:\PBP246\PBPPIC14.RAM 00020 R8 VAR WORD BANK0 SYSTEM ' System Register
00000030 00043 R8 EQU RAM_START + 010h
00044 ; C:\PBP246\PBPPIC14.RAM 00026 FLAGS VAR BYTE BANK0 SYSTEM ' Static flags
00000032 00045 FLAGS EQU RAM_START + 012h
00046 ; C:\PBP246\PBPPIC14.RAM 00025 GOP VAR BYTE BANK0 SYSTEM ' Gen Op Parameter
00000033 00047 GOP EQU RAM_START + 013h
00048 ; C:\PBP246\PBPPIC14.RAM 00022 RM1 VAR BYTE BANK0 SYSTEM ' Pin 1 Mask
00000034 00049 RM1 EQU RAM_START + 014h
00050 ; C:\PBP246\PBPPIC14.RAM 00024 RM2 VAR BYTE BANK0 SYSTEM ' Pin 2 Mask
00000035 00051 RM2 EQU RAM_START + 015h
00052 ; C:\PBP246\PBPPIC14.RAM 00021 RR1 VAR BYTE BANK0 SYSTEM ' Pin 1 Register
00000036 00053 RR1 EQU RAM_START + 016h
00054 ; C:\PBP246\PBPPIC14.RAM 00023 RR2 VAR BYTE BANK0 SYSTEM ' Pin 2 Register
00000037 00055 RR2 EQU RAM_START + 017h
00056 ; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS 00001 loops VAR WORD
00000038 00057 _loops EQU RAM_START + 018h
00058 ; C:\PBP246\16F877A.BAS 00022 PORTL VAR PORTB
00000006 00059 _PORTL EQU PORTB
00060 ; C:\PBP246\16F877A.BAS 00023 PORTH VAR PORTC
00000007 00061 _PORTH EQU PORTC
00062 ; C:\PBP246\16F877A.BAS 00024 TRISL VAR TRISB
00000086 00063 _TRISL EQU TRISB
00064 ; C:\PBP246\16F877A.BAS 00025 TRISH VAR TRISC
00000087 00065 _TRISH EQU TRISC
00066 #define _PORTC_0 PORTC, 000h
00067 #define _PORTC_3 PORTC, 003h
00068 #define _PORTC_2 PORTC, 002h
00069 INCLUDE "PBP_INTERPUT2.MAC"
00001
00121 LIST
00070 INCLUDE "C:\PBP246\PBPPIC14.LIB"
00001 ;******************************************************************
00002 ;* PBPPIC14.LIB *
00003 ;* *
00004 ;* By : Leonard Zerman, Jeff Schmoyer *
00005 ;* Notice : Copyright (c) 2004 microEngineering Labs, Inc. *
00006 ;* All Rights Reserved *
00007 ;* Date : 12/20/04 *
00008 ;* Version : 2.46 *
00009 ;* Notes : *
00010 ;******************************************************************
00045 LIST
00046 ; Oscillator is 4MHz
01110 LIST
0000 01111 ORG 0 ; Reset vector at 0
01125 LIST
0000 283E 01126 goto INIT ; Finish initialization
MPASM 03.80 Released PBP_INTERPUT2.ASM 6-15-2008 11:45:37 PAGE 3
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
01165 LIST
0004 01166 ORG 4 ; Interrupt vector at 4
0004 0008 01167 return ; Return from interrupt without setting GIE
06136 LIST
0005 01A3 06137 PAUSE clrf R1 + 1
0006 00A2 06138 PAUSEL movwf R1
0007 30FF 06139 pauseloop movlw -1 ; 1 (9)
0008 07A2 06140 addwf R1, F ; 1
0009 1C03 06141 btfss STATUS, C ; 1 / 2
000A 07A3 06142 addwf R1 + 1, F ; 1 / 0
000B 1C03 06143 btfss STATUS, C ; 2
000C 2839 06144 goto DONE
000D 3003 06145 movlw (PAUSE_DELAY) >> 8 ; 1
000E 00A1 06146 movwf R0 + 1 ; 1
000F 30DF 06147 movlw low (PAUSE_DELAY) ; 1
0010 2013 06148 call PAUSEUSL ; -2 (PAUSEUSL gives you 2 less than you ask for)
0011 2807 06149 goto pauseloop ; 2
06193 LIST
0012 01A1 06194 PAUSEUS clrf R0 + 1 ; 1
0013 3EE8 06195 PAUSEUSL addlw -24 ; 1 Subtract overhead
0014 00A0 06196 movwf R0 ; 1
0015 09A1 06197 comf R0 + 1, F ; 1
0016 30FC 06198 movlw -4 ; 1
0017 1C03 06199 btfss STATUS, C ; 1 / 2
0018 281C 06200 goto pauseush ; 2 / 0
0019 07A0 06201 pauseusloop addwf R0, F ; 1
001A 1803 06202 btfsc STATUS, C ; 1 / 2
001B 2819 06203 goto pauseusloop ; 2 / 0
001C 07A0 06204 pauseush addwf R0, F ; 1 Do an extra countdown
06205 CLRWDT?NOP ; 1 Keep Watchdog clear
M ifndef NO_CLRWDT
001D 0064 M clrwdt
M else
M nop
M endif
001E 0FA1 06206 incfsz R0 + 1, F ; 1 / 2
001F 2819 06207 goto pauseusloop ; 2 / 0
0020 1820 06208 btfsc R0, 0 ; 1 / 2
0021 2822 06209 goto $ + 1 ; 2 / 0 Burn an extra cycle
0022 1CA0 06210 btfss R0, 1 ; 1 / 2
0023 2826 06211 goto pauseusdone ; 2 / 0
0024 0000 06212 nop ; 1
0025 2826 06213 goto $ + 1 ; 2 Burn an extra 2 cycles
0026 0008 06214 pauseusdone return ; 2 + 3 (call + setup)
07004 LIST
0027 00A2 07005 CMPNE movwf R1
0028 3005 07006 movlw 5 ; Mask for < >
07007 ; goto CMP ; Fall through
07023 LIST
0029 00A8 07024 CMP movwf R4 ; Save compare state
002A 0823 07025 movf R1 + 1, W ; Flags = MSB(R0) - MSB(R1)
002B 0221 07026 subwf R0 + 1, W
002C 1D03 07027 btfss STATUS, Z ; If unequal then done
MPASM 03.80 Released PBP_INTERPUT2.ASM 6-15-2008 11:45:37 PAGE 4
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
002D 2830 07028 goto cmpnoteq
002E 0822 07029 movf R1, W ; Flags = LSB(R0) - LSB(R1)
002F 0220 07030 subwf R0, W
0030 3004 07031 cmpnoteq movlw 4 ; W = 4 if R0 < R1
0031 1803 07032 btfsc STATUS, C
0032 3001 07033 movlw 1 ; W = 1 if R0 > R1
0033 1903 07034 btfsc STATUS, Z
0034 3002 07035 movlw 2 ; W = 2 if R0 == R1
0035 0528 07036 andwf R4, W ; Mask for compare state
0036 1D03 07037 btfss STATUS, Z
0037 30FF 07038 movlw -1
0038 2839 07039 goto DONE
07401 LIST
0039 1383 07402 DONE bcf STATUS, IRP ; 1 Set FSR to bank 0/1
003A 1303 07403 bcf STATUS, RP1 ; 1 Show direct bank 0
003B 1283 07404 bcf STATUS, RP0 ; 1
07405 CLRWDT?NOP ; 1 Hit Watchdog timer
M ifndef NO_CLRWDT
003C 0064 M clrwdt
M else
M nop
M endif
003D 0008 07406 DONERET return ; 2 Done
07430 LIST
003E 07431 INIT
07469 LIST
003E 07470 main
00071
00072
00073 ; C:\PBP246\16F877A.BAS 00012 BANK0 $0020, $007F
00074 ; C:\PBP246\16F877A.BAS 00013 BANK1 $00A0, $00EF
00075 ; C:\PBP246\16F877A.BAS 00014 BANK2 $0110, $016F
00076 ; C:\PBP246\16F877A.BAS 00015 BANK3 $0190, $01EF
00077 ; C:\PBP246\16F877A.BAS 00016 EEPROM $2100, $21FF
00078 ; C:\PBP246\16F877A.BAS 00017 LIBRARY "PBPPIC14"
00079 ; C:\PBP246\16F877A.BAS 00018 DEFINE CODE_SIZE 8
00080
00081 ; C:\PBP246\16F877A.BAS 00020 include "PIC14EXT.BAS"
00082
00083 ; C:\PBP246\16F877A.BAS 00027 include "PBPPIC14.RAM"
00084
00085 ; D:\MCD\PRACTISE\PBP_INTERPUT2.BAS 00002 loops = 0
00086 MOVE?CW 000h, _loops
M CHK?RP _loops
M if (((_loops) & 180h) == 0)
M if (PREV_BANK == 1)
M bcf STATUS, RP0
M endif
M if (PREV_BANK == 2)
M bcf STATUS, RP1
M endif
M if (PREV_BANK == 3)
M bcf STATUS, RP0
MPASM 03.80 Released PBP_INTERPUT2.ASM 6-15-2008 11:45:37 PAGE 5
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
M bcf STATUS, RP1
M endif
00000000 M PREV_BANK = 0
M endif
M
M if (((_loops) & 180h) == 80h)
M if (PREV_BANK == 0)
M bsf STATUS, RP0
M endif
M if (PREV_BANK == 2)
M bsf STATUS, RP0
M bcf STATUS, RP1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -