от Модератора:
еще раз рарушите правила - забаню!
1. пишите понятные названия темы
2. так как просите об услуге - пишите и цену
помогите добрые люди!!!! начал токо общения с авр а тут схема хорошая и деталькип все купил ,но с исходниками а прошивы нету мож кто сможет написать прошиву?
вот сайт где видел
atmega.blog.ru/tag/динамическая+индикация
нужно с общим катодом с (минусом)
вот исходник
$regfile = «m8def.dat» 'говорим компилятору что у нас мега8 $crystal = 8000000 Config Portb = Output , Portd = Output , Config Pinc.3 = Input 'конфигурируем порты на входы и выход Portc.5 = 1 Portc.4 = 1 Dim I As Byte , X As Byte , Y As Byte , Temp As Integer , Bn(10) As Byte , Cifri(5) As Integer 'задаем всякие переменные и массивы ' 'Dotx As Integer Restore Dta ' говорим из какой таблици нужно заносить данные в массив For I = 1 To 10 ' начало цикла Read Bn(i) ' по очереди заносим ячейки из таблици в массив Next ' конец цикла Config Clock = Soft ' конфигурируем совтовые часы (Мы используем Timer2 ATmega8 в асинхронном режиме) _sec = 0 : _min = 0 : _hour = 0 ' задаем конкретные значения времени, с которого часы будут начинать считать при включении питания Config Timer0 = Timer , Prescale = 8 ' конфигурируем таймер 0 чтоб потом на него повесить алгоритм отображения цифр Config Timer1 = Counter , Edge = Falling , Prescale = 1 ' конфигурируем таймер 1 на подсчет импульсов на кварце, припаянного к Xtal1 Xtal2 на 32768 гц БЕЗ КОНДЕРОВ! (Установкой бита CKOPT в ноль , мы подключили к кварцу 32768 Hz. два внутренних конденсатора по 36 пф) On Timer0 Pulse ' назначаем подпрограмму, которая будет запускаться по переполнению 1го таймера Enable Interrupts 'разрешаем прерывания Enable Timer0 Config Debounce = 30 'разрешаем таймер0 ' начало основного цикла Do Debounce Pinc.4 , 0 , Minuti , Sub Debounce Pinc.5 , 0 , Chasi , Sub Temp = _hour * 100 ' «складываем» часы с минутами так чтобы получилось 4х значное число то есть 8часов+59мин = 859 Temp = Temp + _min For I = 1 To 4 ' цикл разбиения склеенных часов с минутами на цифры и занесения каждой в таблицу массива Cifri(i) = Temp Mod 10 ' берем последнюю цифру (9) If Cifri(i) = 0 Then ' проверка последней цифры на 0 Cifri(i) = 10 ' Goto T ' End If ' Temp = Temp — Cifri(i) ' вычитаем из часов/минут последнюю цифру 859—9=850 T: ' Temp = Temp / 10 ' отбрасываем последний ноль 850/10=85 Next 'возвращаемся к началу цикла и заносим следующую цифру в массив Loop 'конец основного цикла End Pulse: ' подпрограмма прерываний таймера 0 Incr X ' увеличиваем х на единицу, для выбора нужных цифр из таблицы Portb = &HFF ' гасим индикатор Portd = Bn(cifri(x)) ' подаем на индикатор цифру из массива Bn с номером cifri(x) Set Portd.2 ' включаем точки на индикаторе разделяющие часы с минутами (они горят все время Y = X — 1 ' считаем какую конкретно цифру, из 4х нужно сейчас зажечь Reset Portb.y ' зажигаем нужную цифру под номером игрик If X = 4 Then X = 0 ' обнуляем х при достижении его величины 4 'End If Return ' возвращаемся на место откуда прервали программу Dta: ' таблица с данными о цифрах зажигает по порядку : 1234567890 Data &H88 , &HB3 , &HBA , &HD8 , &H7A , &H7B , &HA8 , &HFB , &HFA , &HEB ' Minuti: ' подпрограмма обработки кнопки которая прибавляет минуты Incr _min ' увеличиваем значение минут на единицу If _min = 60 Then ' если минуты при нажатии кнопки стали равны 60 то _min = 00 ' минуты равны 00 Incr _hour ' и увеличиваем часы на один End If ' конец если If _hour > 23 Then _hour = 00 'если часы достигли больше 23 то они приравниваются к 00 _sec = 00 ' обнуляем секунды (после нажатия кнопки прибавления минут секунды обновляются для точной настройки времени) Return ' вернутся к месту перехода на подпрограмму ' Chasi: ' метка подпрограммы обработки кнопки прибавления часов Incr _hour ' увеличиваем часы на единицу If _hour > 23 Then _hour = 00 ' обнуляем часы если они больше 23 Return ' вернутся к месту перехода на подпрограмму
Отредактировано Александр Д. (2013-03-05 09:52:05)