The software below is based on Stipe Predanić‘s original Oporcon code, but substantially modified to suit the changed hardware configurations.
All the code is for use with the DS1992L-F5 1K RAM iButton, and limited to 32 controls.
Oporcon Punching box written in Mikroelektronika BASIC (free to use , with a very generous 2k program size limitation.)
Key Changes from Stipe’s original
- Crystal runs at 4.194Mhz
- Control will beep until the time is set.
- LED will flash on the minute for the first five minutes.
- After five minutes there is a quiet beep every minute.
- Box number is set by port-B, using a dip switch or hard wired.
Make sure MCLRE and BROWNOUT are disabled when blowing the PIC because there is an increased risk of transients tripping a reset when using a step-up regulator,
27:07:2013 – version 1.10.
- Double read check for the real time clock iButton.
- Added data check when copying the scratch memory.
- right click to download.
01:12:2012 – version 1.00
- right click to download.
Oporcon Hand-Held reader written in Mikroelektronika BASIC.
n.b. the code is at the absolute 2k limit for the PIC 16F628.
Change the code to suit the start and finish punching-box numbers, typically 0 & 31
16:12:2012 – version 1.02
- additional error checking code squeezed in !
- right click to download
Window/ Delphi Software for PC
16:12:2012 – version 1.01
- Improved user interface
- Improved iButton memory-read algorithm
- major change to ini file format (see sample raydel.ini file for usage)
- changed interface format for FjwW ( see sample KOR and TLN files )
- n.b. OR format export not completed.
- right click to download
In the epunch sw 1.10 write to button part has following code:
‘calculate location of 4th byte of the time in page (0-31)
endbyte=$31 and (Lo(location) + 3) ‘ use low 5 bits only (0-31)
Should I change endbyte to some value?
Currently I have to remove js[2]=endbyte line from code to be able punch successfully. However I would like to use all possible checks that code is written to button correctly.
‘ check if scratchpad is correct
if (js[0]=Lo(location)) and
(js[1]=Hi(location)) and
(js[2]=endbyte) then