Я участвовал в одной теме. Там мы накидали примеров. Выбор ОК ОА, сегменты на произвольные порты. Почему так не сделали? Давно бы дали уже товарищу исходник, чтобы он себе скомпилировал как ему надо.
Timer1 =timer1pre
On Timer1 tikers:
Enable INTERRUPTS 'включение прерываний
Enable Timer0 'влюч. прерываний по переполнению таймера0
Enable Timer1
stop timer1
Ddrb = &B11111111 ' BAFGEDCH
Portb =&B00000000
Ddrd = &B1111011'&B0001111 '
Portd = &B00000100
rele alias portd.0
Speaker alias portd.1
dim t as byte
dim regim as byte
dim button as byte
Dim Dis As Byte
Dim Freq_num(8) As Byte
'Dim Text As String * 4
dim точка as bit
dim hour as Byte,mine as byte,seco as Byte,seco2 as byte
dim hour_eram as eram Byte,mine_eram as eram byte',seco as Byte
dis=5
regim=0'0
rele=0
gosub set_start
gosub digits
do
if button>0 then
'Sound Speaker , 65 , 1274
stop timer1'incr hour
' gosub pic
Select Case button
Case 5:select case regim
case 0:regim=1:Timer1 =timer1pre
'Sound Speaker , 65 , 1274'Sound Speaker , 50 , 800
case 1:regim=0
case 2:gosub set_start'если время=0 то считываем время из памяти
regim=0
case 3:regim=0
seco=59 ':hour_eram=hour
case 4:regim=0
seco=59':mine_eram=mine
case 5:
end select
Case 3:select case regim
case 0:regim=3:stop timer1:точка=0
case 1:'x=x+100
'if x>2000 then x=2000
case 2:regim=3
case 3:incr hour
if hour>24 then hour=0
case 4:incr mine
if mine>59 then mine=0
case 5:
end select
Case 4:select case regim
case 0:regim=4:stop timer1:точка=0
case 1:'x=t
'x=x-100
'if x<200 then x=200
't=x
case 2:regim=4
case 3:decr hour
if hour>24 then hour=24
case 4:decr mine
if mine>59 then mine=59
case 5:
end select
Case 2:select case regim
case is<3:gosub set_start:if regim=2 then regim=1
case 1:
case 2:
case 3:regim=0:hour_eram=hour:seco=59
case 4:regim=0:mine_eram=mine:seco=59
'case 3:hour=hour_eram
'case 4:mine=mine_eram
case 5:
end select
end select
if regim=1 then rele=1 else rele=0
gosub digits
if regim<3 then start timer1
waitms 100
button=0
end if
if regim=2 and t=255 then gosub pic'Sound Speaker , 65 , 1274
loop
pic:
Sound Speaker ,100,1000
return
set_start:
hour=hour_eram
if hour>100 then
hour_eram=00
mine_eram=01
end if
hour=hour_eram
mine=mine_eram
seco=59
Timer1 =timer1pre
start timer1
return
digits:
Freq_num(5) =hour/10
Freq_num(4) =hour mod 10
Freq_num(3) =mine/10
Freq_num(2) =mine mod 10
'if hour=0 and mine<10 and regim=1 then
if hour=0 and regim=1 then
seco2=59-seco
'seco2=seco2/2
Freq_num(5) =mine/10
Freq_num(4) =mine mod 10
Freq_num(3) =seco2/10
Freq_num(2) =seco2 mod 10
end if
return
tikers:
Timer1 =timer1pre
toggle точка
if regim=1 and точка=1 then incr seco
if seco>59 then
seco=0
decr mine
if mine=255 then
if hour>0 then
mine=59
decr hour
else
mine=0
end if
end if
end if
if hour=0 and mine=0 and seco=59 then
regim=2'переходим в стоп
mine=0
hour=0
stop timer1
точка=1
rele=0
end if
gosub digits
return
Pulse: 'обработка прерывания
Portd.3 =1
Portd.4 =1
Portd.5 =1
Portd.6 =1
button=dis
select case regim
'пауза
case 0:if точка=0 then
freq_num(2)=11
freq_num(3)=11
freq_num(4)=11
freq_num(5)=11
end if
case 3:freq_num(2)=11
freq_num(3)=11
'
case 4:freq_num(4)=11
freq_num(5)=11
end select
Portb = Lookup(freq_num(dis) , Dig)
portb.5=точка
Select Case Dis
Case 5
Portd.6 =0
Case 4
Portd.5 = 0
'portb.5=точка
Case 3
Portd.4 = 0
Case 2
Portd.3 =0
portb.5=rele
End Select
'waitus 500
waitms 3
portb=0
Decr Dis
If Dis = 1 Then Dis = 5
if pind.2=1 then button=0
incr t
Return
Dig:
Data &B11010111
Data &B00010100
Data &B11001101
Data &B01011101
Data &B00011110
Data &B01011011
Data &B11011011
Data &B00010101
Data &B11011111
Data &B01011111
Data &B00001000 '10=прочерк
Data &B00000000 '11=пробел
В данном случае четко определились с типом индикатора,четко определились какие сегменты к каким портам подключать,зачем искать приключения на задницу и предусматривать "Выбор ОК ОА, сегменты на произвольные порты"?
Человек мало понимает в программировании,как он сможет переписать под себя?
Если вы спец вам проще,я лично ваш исходник не смогу переделать под себя и скомпилировать,не знаю я си,и не знаю
Добавлено after 1 minute 22 seconds:
в какой программе компилировать
Можно сделать исходник с дефайнами. Указать человеку, где и как поменять тип общих выводов индикаторов. Порты сегментов индикаторов. Тест, для проверки в протеусе и так далее, рабочая версия. А также тестовые времянки. Показать как компилировать программу. Подобные вещи делались для удалённой работы. Понятно, что не все клиенты так смогут. Но как правило, если клиент умеет держать паяльник, подобный способ работает.
Добавлено after 3 minutes 43 seconds:
[uquote="Толик89",url="/forum/viewtopic.php?p=4052122#p4052122"]Как это к любым портам?
Как аттини узнает как я подключил к нему индикатор?[/uquote]
Несколько детский вопрос. Микроконтроллер никак не узнает. К какому порту что подключать указано в программе. Разница в том, что программу можно написать с жёстким заданием портов, а можно с произвольным выбором. К примеру, тип общего вывода по перемычкам или в настройках. Сегменты при компилировании проекта, дефайнами.
Понятно
А есть прошивка минуты только?
У меня микроволновка иногда чудит, иногда таймер считает на увеличение, таймер механический, ставишь допустим греть обед на 5 минут а он отсчитывает не в сторону ноля, а в сторону 55 минут, думаю таймер рядом поставить, выставить то же время для контроля
Я уже думал об этом. Написать проект заготовку всяких разных таймеров. И, если не путаю, писал об этом. Я сейчас в отпуске, если будет время, возможно, все-таки сделаю. Своих дел пока хватает.
Из мышки выковыряйте..
Можно самому из двух "щелевых" оптопар
сделать, или из старой мышиной оптопары..
Ещё я делал таймер обратного отсчёта на Мега8/88,
Установка времени отсчёта кнопками, но он с секундами..
[uquote="Толик89",url="/forum/viewtopic.php?p=4052297#p4052297"]Энкодера нет, заказывать надо...[/uquote]
Не парься. Тебе нужен простой кухонный таймер? Можно сообразить. С музыкой связываться не буду. Максимум пищалка. Позже, может и сделаю.
Каким ты видишь таймер? Отдельное устройство. Ни за что не отвечает, просто показывает сколько времени прошло. Можно и обратный. Отключает по времени. Питание.
[uquote="Толик89",url="/forum/viewtopic.php?p=4052325#p4052325"]АлександрЛ, у вас этот таймер на фото? https://www.radiokot.ru/forum/viewtopic ... &start=380[/uquote]
Ну, да, вроде.. При чём- я его делал и на Меге8, и на Меге88.. И даже случайно закатал прошивку в Мега328 - если правильно всё сделать- работает.
Есть на PIC16F684, PIC12F683... А так то на любой МК можно запилить все эти таймеры . А хоть и амеги , какая разница ? СИ будет работать в других средах , с минимальной доработкой !
Не спрашивай по ком звонит колокол, он звонит по тебе !
вообще-то, название темы некорректное.
таймер потому и называется таймером, что он делает обратный отсчет от заданного времени до нуля.
а с прямым отсчетом (от нуля) называется секундомер.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.