Я участвовал в одной теме. Там мы накидали примеров. Выбор ОК ОА, сегменты на произвольные порты. Почему так не сделали? Давно бы дали уже товарищу исходник, чтобы он себе скомпилировал как ему надо.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
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=пробел
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
В данном случае четко определились с типом индикатора,четко определились какие сегменты к каким портам подключать,зачем искать приключения на задницу и предусматривать "Выбор ОК ОА, сегменты на произвольные порты"? Человек мало понимает в программировании,как он сможет переписать под себя? Если вы спец вам проще,я лично ваш исходник не смогу переделать под себя и скомпилировать,не знаю я си,и не знаю
Добавлено after 1 minute 22 seconds: в какой программе компилировать
Можно сделать исходник с дефайнами. Указать человеку, где и как поменять тип общих выводов индикаторов. Порты сегментов индикаторов. Тест, для проверки в протеусе и так далее, рабочая версия. А также тестовые времянки. Показать как компилировать программу. Подобные вещи делались для удалённой работы. Понятно, что не все клиенты так смогут. Но как правило, если клиент умеет держать паяльник, подобный способ работает.
Как это к любым портам? Как аттини узнает как я подключил к нему индикатор?
Несколько детский вопрос. Микроконтроллер никак не узнает. К какому порту что подключать указано в программе. Разница в том, что программу можно написать с жёстким заданием портов, а можно с произвольным выбором. К примеру, тип общего вывода по перемычкам или в настройках. Сегменты при компилировании проекта, дефайнами.
Понятно А есть прошивка минуты только? У меня микроволновка иногда чудит, иногда таймер считает на увеличение, таймер механический, ставишь допустим греть обед на 5 минут а он отсчитывает не в сторону ноля, а в сторону 55 минут, думаю таймер рядом поставить, выставить то же время для контроля
Я уже думал об этом. Написать проект заготовку всяких разных таймеров. И, если не путаю, писал об этом. Я сейчас в отпуске, если будет время, возможно, все-таки сделаю. Своих дел пока хватает.
Не парься. Тебе нужен простой кухонный таймер? Можно сообразить. С музыкой связываться не буду. Максимум пищалка. Позже, может и сделаю. Каким ты видишь таймер? Отдельное устройство. Ни за что не отвечает, просто показывает сколько времени прошло. Можно и обратный. Отключает по времени. Питание.
Есть на PIC16F684, PIC12F683... А так то на любой МК можно запилить все эти таймеры . А хоть и амеги , какая разница ? СИ будет работать в других средах , с минимальной доработкой !
_________________ Не спрашивай по ком звонит колокол, он звонит по тебе !
вообще-то, название темы некорректное. таймер потому и называется таймером, что он делает обратный отсчет от заданного времени до нуля. а с прямым отсчетом (от нуля) называется секундомер.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 47
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения