I had a look a http://www.talkingelectronics.com/te...ive_index.html
where it seems you got the code from. there is no pbp version its all asm. puting a pbp extension on a asm file will not convert asm code to pbp code
this compiles for me with mpasm 5.36 , i have preloaded counter to 15
Code:
;****************************************************************;* 2 Digit UP / Down Counter 17/6/2009
;Port B drives two 7 segment displays
;Up Sw on RA2 Down Sw on RA3
;"Units" drive on RA0 "Tens" drive on RA1 *
;* *
;****************************************************************
list P = 16F628A ;microcontroller
include ;registers for F628A
__CONFIG _CP_OFF & _LVP_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF
;code protection - off
;low-voltage programming - off
;power-up timer - on
;watchdog timer - off
;use internal RC for 4MHz - all pins for in-out
;****************************************************************
; variables - names and files
;****************************************************************
;Files for F628A start at 20h
temp1 equ 20h ;for delay
temp2 equ 21h ;for delay
SwUp equ 22h ;
SwDwn equ 23h ;
units equ 24h ;
tens equ 25h ;
Sw_Flag equ 26h ;
;****************************************************************
;Equates
;****************************************************************
status equ 0x03
cmcon equ 0x1F
rp1 equ 0x06
rp0 equ 0x05
;****************************************************************
;Beginning of program
;****************************************************************
reset org 00 ;reset vector address
goto SetUp ;goto SetUp
table addwf PCL,F ;02h,1 add W to program counter
retlw b'00111111' ; "0" -|F|E|D|C|B|A
retlw b'00000110' ; "1" -|-|-|-|C|B|-
retlw b'01011011' ; "2" G|-|E|D|-|B|A
retlw b'01001111' ; "3" G|-|-|D|C|B|A
retlw b'01100110' ; "4" G|F|-|-|C|B|-
retlw b'01101101' ; "5" G|F|-|D|C|-|A
retlw b'01111101' ; "6" G|F|E|D|C|-|A
retlw b'00000111' ; "7" -|-|-|-|C|B|A
retlw b'01111111' ; "8" G|F|E|D|C|B|A
retlw b'01101111' ; "9" G|F|-|D|C|B|A
;****************************************************************
;* port A and B initialisation *
;****************************************************************
SetUp bsf status,rp0
movlw b'00001100' ;Make RA0,1 out RA2,3 in
movwf 05h
clrf 06h ;Make all RB output
bcf status,rp0 ;select programming area - bank0
movlw b'10000000' ;Turn off T0CKI
movwf OPTION_REG
clrf 06h ;Clear Port B of junk
movlw 5 ; preload count to 15
movwf units
movlw 1
movwf tens
clrf Sw_Flag
movlw 07h ;turn comparators off and enable
movwf cmcon ; pins for I/O functions
goto Main
;Delay 10mS 10 x 1,000uS
D_10mS movlw 0Ah
movwf temp2
D_a nop
decfsz temp1,1
goto D_a
decfsz temp2,1
goto D_a
retlw 00
Up btfsc Sw_Flag,2
retlw 00
bsf Sw_Flag,2
incf units,1
movlw 0Ah ;put 10 into w
xorwf units,0 ;compare units file with 10
btfss 03,2 ;zero flag in status file. Will be set if units is 10
retlw 00
clrf units
incf tens,1
movlw 0Ah ;put 10 into w
xorwf tens,0 ;compare units file with 10
btfsc 03,2 ;zero flag in status file. Will be set if tens is 10
clrf tens
retlw 00 ;display passes 99 but not below 0
Dwn btfsc Sw_Flag,3
retlw 00
bsf Sw_Flag,3
decf units,1
movlw 0FFh ;put FFh into w
xorwf units,0 ;compare units file with FFh
btfss 03,2 ;zero flag in status file. Will be set if units is 10
retlw 00
movlw 09
movwf units ;put 9 into units file
decf tens,1
movlw 0FFh ;put 0FFh into w
xorwf tens,0 ;compare tens file with 0FFh
btfsc 03,2 ;zero flag in status file. Will be set if tens is 0FFh
goto $+2 ;tens file is 0FFh Jump down 2 instructions
retlw 00
clrf tens
clrf units
retlw 00 ;display not below 0
Main btfss 05,2 ;test switch-press for UP
call Up ;UP switch pressed
btfss 05,3 ;test switch-press for Down
call Dwn ;Down switch pressed
movlw b'00000001' ;Make RA0 HIGH for units drive
movwf 05h
movf units,0 ;copy unit value into w
call table ;unit display value will return in w
movwf 06h ;output units value
call D_10mS ;call delay
clrf 06h ;clear display
movlw b'00000010' ;Make RA1 HIGH for tens drive
movwf 05h
movf tens,0 ;copy tens value into w
call table ;tens display value will return in w
movwf 06h ;output tens value
call D_10mS ;call delay
clrf 06h ;clear display
btfsc 05,2 ;bit will be zero when sw is pressed
bcf Sw_Flag,2
btfsc 05,3 ;bit will be zero when sw is pressed
bcf Sw_Flag,3
goto Main
END
Bookmarks