Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Продам/куплю/услуги » Сделайте мне нахаляву: динамическая индикация


Сделайте мне нахаляву: динамическая индикация

Сообщений 1 страница 2 из 2

1

от Модератора:
еще раз рарушите правила - забаню!
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)

0

2

Ты бы для начала определился тебе надо с общим катодом(минусом) или анодом(плюсом) и местным поисковиком воспользовался: "совтовые часы сбрасываются на ноль. Почему?".

Отредактировано Александр Д. (2013-03-05 09:53:06)

0


Вы здесь » Программирование ATMEL в BASCOM. » Продам/куплю/услуги » Сделайте мне нахаляву: динамическая индикация