Код:
$regfile = "m16def.dat" ' specify the used micro
$crystal = 8000000
$lib "lcd4.lib"
'*** Config the timer ***
Config Timer1 = Timer , Prescale = 256 , Clear Timer = 1
' Load the TimerLimit value into the Compare1A (OCR1A) register
Compare1a = 31250
' Set interrupt pointers
On Timer1 Int_1
' When Timer1 moves from 65535 to 0 - not just when it becomes 0
' as Timer1 moves between 0 and 10000, the Timer1 interrupt flag is never set.
On Compare1A Compare_1a_int
' Wwhen Timer1 = Compare1A register
' Enable the use of Timer1
Enable Compare1a
Enable Interrupts
'**************END config Timer**************
Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.2 , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7
Config Lcd = 16 * 2
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
Dim H1 As Integer
Dim H2 As Integer
Dim M1 As Integer
Dim M2 As Integer
Dim S1 As Integer
Dim S2 As Integer
Gosub Clockzero
Locate 2 , 1
Lcd "Hour:"
Locate 2 , 8
Lcd "Min:"
Locate 2 , 13
Lcd "Sec:"
Do
Locate 1 , 13
Lcd S1
Locate 1 , 14
Lcd S2
Locate 1 , 8
Lcd M1
Locate 1 , 9
Lcd M2
Locate 1 , 1
Lcd H1
Locate 1 , 2
Lcd H2
Loop
Int_1:
'empty
Return
Compare_1a_int:
' Reset the Compare1A interrupt flag,
' as this flag is not reset automatically
Reset Tifr.5
S2 = S2 + 1
If S2 = 10 Then S1 = S1 + 1
If S2 = 10 Then S2 = 0
If S1 = 6 Then M2 = M2 + 1
If S1 = 6 Then S1 = 0
If M2 = 10 Then M1 = M1 + 1
If M2 = 10 Then M2 = 0
If M1 = 6 Then H2 = H2 + 1
If M1 = 6 Then M1 = 0
If H2 = 10 Then H1 = H1 + 1
If H2 = 10 Then H2 = 0
If H1 = 2 And H2 = 4 Then Gosub Clockzero
Return
Clockzero:
Let S1 = 0
Let S2 = 0
Let H1 = 0
Let H2 = 0
Let M1 = 0
Let M2 = 0
Let M1 = 0
Let M2 = 0
Return
Переделал программу, учитывая подсказку boez.Нарыл шаблоны с примерами.Запустил на внешнем кварце 8 мгц.Хочу сказать, что это реально работает и за 30 минут никаких отставаний не было.Так же радует и то, что это написано на Бейсике(имхо).
Благодарю за советы.
Добавлено спустя 3 часа 18 минут 5 секунд:Проверил далее.
За 3 часа 25 минут оставание на 1 секунду.Но тем не менее результат уже есть.