When a RTC is installed with battery backup the time only needs setting once. There are no routines within your code to utilise the settime: and by including the line
Shiftout IO, SCLK, LSBFIRST, [$8e, 128] writes are disabled.

Could I suggest you have two programs one to set the initial time which includes the settime:, without Shiftout IO, SCLK, LSBFIRST, [$8e, 128] line and a second program that does not include settime:.

You are stuck with a two stage programing process but the second program will not include the unused settime: code.

There are other alternatives as others have suggested one would be to read the date from the RTC and compare to the initial settings. What are the readings from the RTC before any time is set? Is the default reading on power up 01/01/00 for example. If so then simply test for the year being 00 and if it is set the time else skip over it.

Let me know what the default power up readings are and then I can help with the code.