Коты, обЬясните, толи глюк, толи я чёт недопонимаю
Вот кусок программы, собственно часов.
Переменная S есть Word,
но считает до 255
В симуляторе считает и больше, но Протеусе и в железе, только до 255
Пол дня голову ломал, пока тупо не стал перебирать все переменные
И как только выставил
M as word, всё пошло нормально
Кто может разяснит?
Код: Выделить всё
$crystal = 8000000
$regfile = "ATtiny2313.dat"
Config Portb = Output
Ddrd = &B1111010
Config Timer0 = Timer , Prescale = 64
Dim S As Word
Enable Interrupts
Enable Timer0
On Timer0 Pulse
Dim I As Byte , Cifri(4) As Word , Cifra As Word , Tochka As Word
Dim M As Word , H As Byte
Dim T As Byte
Do
M = S / 60
Tochka = S Mod 2
Cifri(1) = M / 10
I = Cifri(1) * 10
Cifri(2) = M - I
Cifri(3) = H / 10
I = Cifri(3) * 10
Cifri(4) = H - I
S = S + 1
Waitms 10
Loop
Pulse:
Stop Timer0
Portb = &H00
T = T + 1
Select Case T
Case 1 : Reset Portd.3
Set Portd.6
Case 2 : Reset Portd.4
Set Portd.3
Case 3 : Reset Portd.5
Set Portd.4
Case 4 : Reset Portd.6
Set Portd.5
End Select
Cifra = Cifri(t)
If T = 4 Then T = 0
Portb = Lookup(cifra , Value_table)
If Portd.4 = 0 And Tochka = 1 Then Set Portb.7 Else Reset Portb.7
Start Timer0
Return
Value_table:
Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7D , &H07 , &H7F , &H6F