📄 mplxkey.lst
字号:
007B 3401 00231 retlw 1
007C 3402 00232 retlw 2
007D 3403 00233 retlw 3
007E 3404 00234 retlw 4
007F 3405 00235 retlw 5
0080 3406 00236 retlw 6
0081 3407 00237 retlw 7
0082 3408 00238 retlw 8
0083 3409 00239 retlw 9
0084 340A 00240 retlw 0a
0085 340B 00241 retlw 0b
0086 340C 00242 retlw 0c
0087 340D 00243 retlw 0d
0088 340E 00244 retlw 0e
0089 340F 00245 retlw 0f
00246 ;
00247 ;SavePorts, saves the porta and portb condition during a key scan
00248 ;operation.
008A 00249 SavePorts
008A 0805 00250 movf PORTA,W ;Get sink value
008B 00A0 00251 movwf PABuf ;save in buffer
008C 0185 00252 clrf PORTA ;disable all sinks
008D 0806 00253 movf PORTB,W ;get port b
008E 00A1 00254 movwf PBBuf ;save in buffer
008F 30FF 00255 movlw 0xff ;make all high
MPASM 01.40 Released MPLXKEY.ASM 1-16-1997 16:24:40 PAGE 6
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0090 0086 00256 movwf PORTB ;on port b
0091 1683 00257 bsf STATUS,RP0 ;select page 1
0092 1381 00258 bcf OptionReg,7 ;enable pull ups
0093 30F0 00259 movlw B'11110000' ;port b hi nibble inputs
0094 0086 00260 movwf TRISB ;lo nibble outputs
0095 1283 00261 bcf STATUS,RP0 ;page 0
0096 0008 00262 return
00263 ;
00264 ;RestorePorts, restores the condition of porta and portb after a
00265 ;key scan operation.
0097 00266 RestorePorts
0097 0821 00267 movf PBBuf,W ;get port n
0098 0086 00268 movwf PORTB
0099 0820 00269 movf PABuf,W ;get port a value
009A 0085 00270 movwf PORTA
009B 1683 00271 bsf STATUS,RP0 ;select page 1
009C 1781 00272 bsf OptionReg,7 ;disable pull ups
009D 0185 00273 clrf TRISA ;make port a outputs
009E 0186 00274 clrf TRISB ;as well as PORTB
009F 1283 00275 bcf STATUS,RP0 ;page 0
00A0 0008 00276 return
00277 ;
00278 ;
00A1 00279 UpdateDisplay
00A1 0805 00280 movf PORTA,W ;present sink value in w
00A2 0185 00281 clrf PORTA ;disable all digits sinks
00A3 390F 00282 andlw 0x0f
00A4 008C 00283 movwf TempC ;save sink value in tempC
00A5 160C 00284 bsf TempC,4 ;preset for lsd sink
00A6 0C8C 00285 rrf TempC, F ;determine next sink value
00A7 1C03 00286 btfss STATUS,C ;c=1?
00A8 118C 00287 bcf TempC,3 ;no then reset LSD sink
00A9 180C 00288 btfsc TempC,0 ;else see if Msd
00AA 28B8 00289 goto UpdateMsd ;yes then do Msd
00AB 188C 00290 btfsc TempC,1 ;see if 3rdLsd
00AC 28B5 00291 goto Update3rdLsd ;yes then do 3rd Lsd
00AD 190C 00292 btfsc TempC,2 ;see if 2nd Lsd
00AE 28B2 00293 goto Update2ndLsd ;yes then do 2nd lsd
00AF 00294 UpdateLsd
00AF 0811 00295 movf LsdTime,W ;get Lsd in w
00B0 390F 00296 andlw 0x0f ; /
00B1 28BA 00297 goto DisplayOut
00B2 00298 Update2ndLsd
00B2 0E11 00299 swapf LsdTime,W ;get 2nd Lsd in w
00B3 390F 00300 andlw 0x0f ;mask rest
00B4 28BA 00301 goto DisplayOut ;enable display
00B5 00302 Update3rdLsd
00B5 0810 00303 movf MsdTime,W ;get 3rd Lsd in w
00B6 390F 00304 andlw 0x0f ;mask low nibble
00B7 28BA 00305 goto DisplayOut ;enable display
00B8 00306 UpdateMsd
00B8 0E10 00307 swapf MsdTime,W ;get Msd in w
00B9 390F 00308 andlw 0x0f ;mask rest
MPASM 01.40 Released MPLXKEY.ASM 1-16-1997 16:24:40 PAGE 7
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00BA 00309 DisplayOut
00BA 20BF 00310 call LedTable ;get digit output
00BB 0086 00311 movwf PORTB ;drive leds
00BC 080C 00312 movf TempC,W ;get sink value in w
00BD 0085 00313 movwf PORTA
00BE 0008 00314 return
00315 ;
00316 ;
00BF 00317 LedTable
00BF 0782 00318 addwf PCL, F ;add to PC low
00C0 343F 00319 retlw B'00111111' ;led drive for 0
00C1 3406 00320 retlw B'00000110' ;led drive for 1
00C2 345B 00321 retlw B'01011011' ;led drive for 2
00C3 344F 00322 retlw B'01001111' ;led drive for 3
00C4 3466 00323 retlw B'01100110' ;led drive for 4
00C5 346D 00324 retlw B'01101101' ;led drive for 5
00C6 347D 00325 retlw B'01111101' ;led drive for 6
00C7 3407 00326 retlw B'00000111' ;led drive for 7
00C8 347F 00327 retlw B'01111111' ;led drive for 8
00C9 3467 00328 retlw B'01100111' ;led drive for 9
00CA 3477 00329 retlw B'01110111' ;led drive for A
00CB 347C 00330 retlw B'01111100' ;led drive for b
00CC 3439 00331 retlw B'00111001' ;led drive for C
00CD 345E 00332 retlw B'01011110' ;led drive for d
00CE 3479 00333 retlw B'01111001' ;led drive for E
00CF 3471 00334 retlw B'01110001' ;led drive for F
00335
00336 ;
00337 ;
00338
00339 end
MPASM 01.40 Released MPLXKEY.ASM 1-16-1997 16:24:40 PAGE 8
SYMBOL TABLE
LABEL VALUE
ADCON0 00000008
ADCON1 00000088
ADCS0 00000006
ADCS1 00000007
ADIE 00000006
ADIF 00000001
ADON 00000000
ADRES 00000009
C 00000000
CHS0 00000003
CHS1 00000004
Count 0000000F
DC 00000001
Debnce 00000013
DebnceOn 00000001
DisplayOut 000000BA
F 00000001
FSR 00000004
GIE 00000007
GO 00000002
GO_DONE 00000002
Get4567 00000077
Get89ab 00000075
GetKeyValue 00000064
GetValCom 00000078
Getcdef 00000074
INDF 00000000
INTCON 0000000B
INTE 00000004
INTEDG 00000006
INTF 00000001
IRP 00000007
InitPorts 00000020
InitTimers 0000002A
KeyFlag 00000012
LedTable 000000BF
LsdTime 00000011
MsdTime 00000010
NOT_DONE 00000002
NOT_PD 00000003
NOT_RBPU 00000007
NOT_TO 00000004
NewKey 00000014
NoKey 00000062
OPTION_REG 00000081
OptionReg 00000001
PABuf 00000020
PBBuf 00000021
PCFG0 00000000
PCFG1 00000001
PCL 00000002
PCLATH 0000000A
PORTA 00000005
MPASM 01.40 Released MPLXKEY.ASM 1-16-1997 16:24:40 PAGE 9
SYMBOL TABLE
LABEL VALUE
PORTB 00000006
PS0 00000000
PS1 00000001
PS2 00000002
PSA 00000003
RBIE 00000003
RBIF 00000000
RP0 00000005
RP1 00000006
RestorePorts 00000097
RowValEnd 0000006E
SKreturn 00000060
STATUS 00000003
SavePorts 0000008A
Scan1 00000048
ScanKeys 00000042
ScanNext 0000004B
ServKey 00000003
ServiceInterrupts 00000036
ServiceKey 00000012
ServiceTMR0 0000003B
Start 0000000D
StatBuffer 0000002E
T0CS 00000005
T0IE 00000005
T0IF 00000002
T0SE 00000004
TMR0 00000001
TRISA 00000085
TRISB 00000086
TempC 0000000C
TempD 0000000D
TempE 0000000E
Update2ndLsd 000000B2
Update3rdLsd 000000B5
UpdateDisplay 000000A1
UpdateLsd 000000AF
UpdateMsd 000000B8
W 00000000
WBuffer 0000002F
Z 00000002
_CP_OFF 00003FFF
_CP_ON 00003FEF
_HS_OSC 00003FFE
_LP_OSC 00003FFC
_PWRTE_OFF 00003FF7
_PWRTE_ON 00003FFF
_RC_OSC 00003FFF
_WDT_OFF 00003FFB
_WDT_ON 00003FFF
_XT_OSC 00003FFD
__16C71 00000001
keyhit 00000000
MPASM 01.40 Released MPLXKEY.ASM 1-16-1997 16:24:40 PAGE 10
SYMBOL TABLE
LABEL VALUE
loop 0000000F
noentry 00000002
pop
push
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00C0 : XXXXXXXXXXXXXXXX ---------------- ---------------- ----------------
All other memory blocks unused.
Program Memory Words Used: 205
Program Memory Words Free: 819
Errors : 0
Warnings : 0 reported, 0 suppressed
Messages : 0 reported, 6 suppressed
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -