Возможно я нуб...ну немогу я понять как этот шим устроен Так и не разобрался, Таймер-0 переключает группы светиков или тоже участвует в ШИМе
Если несложно наваяй маленькую прожку (Для ATtiny2313) , чтоб сама яркость меняла на светике, сначала повышала, как наберёт полную яркость то понижала... Очень хочу понять принцып! Ага?
И ещё, как выводиться на порты инфа записанная в DATA ?
В основном цикле программы пишем изменение переменных яркости 3 цветов:
Код:
Do
For R = 0 To 255 Waitms 10 Next R
For B = 255 To 0 Step -1 Waitms 10 Next B
For G = 0 To 255 Waitms 10 Next G
Loop
В событии Таймер-0 происходит увеличение переменной PWM на 1.
Если значение R, G, B > 0 , то при значении PWM = 0 включим соответствующие порты (Set R, Set G Set B)
Если значение R, G, B совпало с PWM, отключим соответствующий канал.
Когда PWM достигнет 255, сбросим её в 0 и выключим R, G, B (Reset R, Reset G, Reset B). И так по кругу.
Таким образом, порты будут включены на 1-255 тактов таймера 0. Чем больше тактов включено, тем ярче горит светодиод. Для равномерного восприятия яркости глазом, необходимо учесть логарифмическую зависимость. В приведённой выше ссылке это реализовано.
В теории я ход всего понял:
Таймер-0 подсчитывает импульсы и записывает их количество в переменную PWM.
Далее идёт сравнение PWM и другой переменной и.т.д....
Большое спосибо. Наконецто!!!!
Можно небольшие подробности:
Что означает "Prescale = 1" "Step -1"
Строчка "On Timer0 Timer0isr" - означает, - включить таймер-0 и при переполнении перйти на "Timer0isr" -- ???
Спосибо за внимание, если будут вопросы в дальнейшем - поможешь..
очень хочу разобраться хоь с эти языком...
Здрасти, я долго ждать не заставил.... ШУТКА
Собственно вопрос: имеем - между PORTB , PORTD.6 и PORTD.0 , PORTD.1 , PORTD.2 включены светики ( АНОДАМА НА PORTB , PORTD.6 ) как реализовать эффекты с помощью оператора DATA 1 , 2 , 3 , n...?????
Точнее как правельно записать значения в таблицу ( какое число равно какому порту по счёту, или как происходит вывод инфы)
И как значения этой таблицы вывести на порты?
Да и ШИМ регулировка яркости отдельно работает, а вот в свою прогу засандалить тож невыходит, иль хотяб чтоб кнопками яркость регулировать для нескольких светиков тож ума не приложу
Прошу прощения за сопли на форуме, просто запутался совсем, а разобраться охота.
По каким пасобиям учились вы? Я всё, что не читал, либо вобше непойму, либо там скубные примеры, которые даже я придумаю....
По каким пасобиям учились вы? Я всё, что не читал, либо вобше непойму, либо там скубные примеры, которые даже я придумаю....
Самый лучший учебник, чужие исходники
Да, но в этих исходниках всё так запутано и есть такие "фразы" которых в своей справке я ненахожу.
Вобщем всё что у меня из справок я вложу в архив, может пригодиться кому....
Жду ещё умных мыслей
Вложения:
Комментарий к файлу: Всё чё у меня по справкам имееться BASCOM_8051_KULISH.rar [283.17 KiB]
Скачиваний: 475
так вот...
как мне на выходе получить типа M1 для вывода константы?
такой код не рабит как положено..
Код:
Increm: Incr I Cls If I = 1 Then Lcd M1 '--| If I = 2 Then Lcd M2 '--| вывожу константу на жки If I = 3 Then Lcd M3 '--| If I = 3 Then I = 1 ' переход на 1 первый пункт меню Goto Debo 'переход к опросу кнопок Return
а код типа M ; I на жки выводит мне 01,02,03 = некатит кароч...
есть ли другой способ получить M1 M2 M3 на выходе жки?
Зарегистрирован: Чт май 17, 2007 09:44:13 Сообщений: 268 Откуда: Украина, г. Кривой Рог
Рейтинг сообщения:0
Здрасте,
Не могу заставить работать ds18s20 в протеусе. Постоянно 0 показывает. Может есть у кого рабочий код. Посмотреть, да разобраться в своих ошибках.
Спасибо.
Здрасте, Не могу заставить работать ds18s20 в протеусе. Постоянно 0 показывает. Может есть у кого рабочий код. Посмотреть, да разобраться в своих ошибках. Спасибо.
Цитата:
$regfile = "2313def.dat" $baud = 9600 $crystal = 4000000 Config Lcd = 16 * 1 Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6 Config 1wire = Portd.5 Dim Byte0 As Byte Dim Byte1 As Byte Dim Signtemperatura As String * 1 Dim T1 As Byte Dim T2 As Byte Dim I As Integer Do 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 750 1wreset 1wwrite &HCC 1wwrite &HBE Byte0 = 1wread() Byte1 = 1wread() If Byte1 >= 248 Then Byte0 = &HFF - Byte0 Byte1 = &HFF - Byte1 Signtemperatura = "-" Else Signtemperatura = "+" End If T1 = Byte0 / 16 T2 = Byte1 * 16 T1 = T1 + T2 Cls Lcd Signtemperatura ; T1 ; "C" Wait 2 Loop End
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения