Знатоки BASCOM! Просмотрите, пожалуйста, мой ПЕРВЫЙ В ЖИЗНИ код на микроконтроллер (ATTINY2313) и укажите на принципиальные ошибки. Проект банальный: часы. Порт В - на сегменты индикатора, порт d - на включения общего на индикаторе (через КТ315) и опрос 2-х кнопок. С настройками таймера не заморачивался, хотел просто понять логику работы...
Код: Выделить всё
$regfile = "AtTiny2313.dat"
$crystal = 1000000
Config Timer0 = Timer , Prescale = 1
Declare Sub My_led
Dim H As Byte , M As Byte , S As Byte
Dim T(4) As Byte
Dim Ncount As Word
Dim Q As Byte
Dim Tmp As Byte
Ncount = 0
H = 9
M = 55
S = 0
Config Portb = Output
Config Portd = Output
Config Pind.0 = Input
Config Pind.1 = Input
Config Debounce = 200
Set Pind.0
Pind.0 = 1
Set Pind.1
Pind.1 = 1
On Timer0 Pulse
Enable Interrupts
Enable Timer0
'************
Do
Debounce Pind.0 , 0 , H_ed , Sub
Debounce Pind.1 , 0 , M_ed , Sub
T(1) = H \ 10
T(2) = H Mod 10
T(3) = M \ 10
T(4) = M Mod 10
Call My_led
Loop
End 'end program
'************************
Sub My_led
For Q = 1 To 4
Select Case T(q)
Case 1 : Portb = &B11111001
Case 2 : Portb = &B10100100
Case 3 : Portb = &B10110000
Case 4 : Portb = &B10011001
Case 5 : Portb = &B10010010
Case 6 : Portb = &B10000010
Case 7 : Portb = &B11111000
Case 8 : Portb = &B10000000
Case 9 : Portb = &B10010000
Case 0 : Portb = &B11000000
End Select
Select Case Q
Case 1 : If T(1) <> 0 Then
Set Portd.2
Waitms 10
Reset Portd.2
End If
Case 2 : Tmp = S Mod 2
If Tmp = 0 Then Portb.7 = 0
Set Portd.3
Waitms 10
Reset Portd.3
Case 3 : Set Portd.4
Waitms 10
Reset Portd.4
Case 4 : Set Portd.5
Waitms 10
Reset Portd.5
End Select
Next Q
End Sub
'************************
Pulse:
Ncount = Ncount + 1
If Ncount => 31250 Then
Ncount = 0
S = S + 1
End If
If S > 59 Then
S = 0
M = M + 1
End If
If M > 59 Then
M = 0
H = H + 1
If H > 23 Then H = 0
End If
Return
'************************
H_ed:
Waitms 100
H = H + 1
If H > 23 Then H = 0
Return
'************************
M_ed:
Waitms 100
M = M + 1
If M > 59 Then M = 0
Return
Последний раз редактировалось
dhouse Вт апр 20, 2010 13:56:02, всего редактировалось 1 раз.