Пятница, 29.03.2024, 09:31
СТЭМ: МИИЗ Прошлый век
Приветствую Вас Гость | RSS
Навигация
Категории раздела
Caterpillars Blog [317]
Личный блог С.Белазова
Бред Профессора [227]
Мысли вслух от Мирона
Дневник Степкина [222]
Элеоновы письма [118]
Личный блог Элеон
Яйца Динозавра [146]
Отложенное в нашу корзинку Dinozavr'ом
Записки Сэра Ваха [6]
персональный раздел servax'а
Майдан [81]
Блог для всех (общий)
Академия мастерства [1]
Полезные статьи из различных источников
Мемориал [74]
Об ушедших от нас...
Новые публикации
[04.12.2022]►СТЭМ
Переломный момент (3)
[20.04.2022]►Эксклюзив
Факирское-чудесное (0)
[18.05.2021]►Эксклюзив
По следу Кастанеды (0)
[15.05.2021]►Эксклюзив
Сарафанное радио (0)
[11.12.2019]►Эксклюзив
Синдром ЧуковскАго (0)
Новые сайты
[18.11.2021]►Музыка
Рок-посевы (0)
[26.02.2020]►Культура и искусство
Булат Окуджава, биография, стихи и песни (0)
[07.02.2019]►Блоги
Один Высоцкий (3)
Главная » 2011 » Январь » 13 » Развлекаюсь
23:37
Развлекаюсь
Нельзя объять необъятное
(с) Козьма Прутков

Обдумывая тут одну свою мелкую хоббийную проблему, посожалел немного, что не разбираюсь в программировании микроконтроллеров, но решил попробовать.
Немного поизучал теорию, а потом два вечера бился с суровой реальностью.
Вообще надо было сделать динамическое управление семисегментным индикатором, то есть это когда цифры на нем горят не все сразу, а зажигаются поочередно быстро-быстро. Глаза не замечают мерцания, и кажется, что все цифры горят одновременно.
Наковырял я таки к сегодняшнему вечеру некую тестовую программку, цитировать не буду, вряд ли кому интересно, да и нечего там особенно цитировать. А вот видео с экрана работы эмулятора хочу выложить:

Бледное подобие быстрого-быстрого зажигания. Все-таки эмулятор.

PS. Язык программирования - Ассемблер. Тянет меня к ассемблеру smile

Категория: Caterpillars Blog | Просмотров: 802 | Добавил: caterpillar | Рейтинг: 0.0/0
Всего комментариев: 5
0  
1 caterpillar   (13.01.2011 23:48)
А, не удержусь, процитирую biggrin

Code

;.include "d:\documents\AVR\ASM\APPNOTEs\2313def.inc"
.include "c:\program files\atmel\avr tools\avrassembler2\APPNOTEs\tn2313def.inc"

.def temp = r16
.def param0 = r17
.def param1 = r18
.def counter = r19
.def delay0 = r20
.def delay1 = r21
.def dig5 = r22
.def digit = r23

.dseg
digits: .byte 6

.cseg
.org 0
RESET:  ;External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset
  rjmp start
  rjmp INT_0
  rjmp INT_1
  rjmp TIMER1_CAPT
  rjmp TIMER1_COMPA
  rjmp TIMER1_OVF
  rjmp TIMER0_OVF
  rjmp USART0_RX
  rjmp USART0_UDRE
  rjmp USART0_TX
  rjmp ANALOG_COMP
  rjmp PCINT
  rjmp TIMER1_COMPB
  rjmp TIMER0_COMPA
  rjmp TIMER0_COMPB
  rjmp USI_START
  rjmp USI_OVERFLOW
  rjmp EE_READY
  rjmp WDT_OVERFLOW
  
INT_0:  ;External Interrupt Request 0
INT_1:  ;External Interrupt Request 1
TIMER1_CAPT:  ;Timer/Counter1 Capture Event
TIMER1_COMPA:  ;Timer/Counter1 Compare Match A
TIMER1_OVF:  ;Timer/Counter1 Overflow
TIMER0_OVF:  ;Timer/Counter0 Overflow
USART0_RX:  ;USART0, Rx Complete
USART0_UDRE:  ;USART0 Data Register Empty
USART0_TX:  ;USART0, Tx Complete
ANALOG_COMP:  ;Analog Comparator
PCINT:  ;Pin Change Interrupt
TIMER1_COMPB:  ;Timer/Counter1 Compare Match B
TIMER0_COMPA:  ;Timer/Counter0 Compare Match A
TIMER0_COMPB:  ;Timer/Counter0 Compare Match B
USI_START:  ;USI Start Condition
USI_OVERFLOW:  ;USI Overflow
EE_READY:  ;EEPROM Ready
WDT_OVERFLOW:  ;Watchdog Timer Overflow
  reti
seg7table:
  .dw 0b00000001, 0b01001111 ;0 1
  .dw 0b00010010, 0b00000110 ;2 3
  .dw 0b01001100, 0b00100100 ;4 5
  .dw 0b00100000, 0b00001111 ;6 7
  .dw 0b00000000, 0b00000100 ;8 9
start:

; стек
  ldi temp, RamEnd
  out spl, temp

; Порты
; pd0 - pd6 выход
; pb0 - pb5 выход
  ldi temp, 0b01111111
  out ddrd, temp
  ldi temp, 0b00111111
  out ddrb, temp

  

  ; test
g0:  ldi counter, 0

g1:  
  mov param0, counter
  mov param1, counter

  rcall hidedigit

  rcall digitout
  
  rcall delay

  inc counter

  cpi counter, 6
  brne g1
  rjmp g0

;test: rjmp test

; Гашение цифр на индикаторе
hidedigit:
  ldi temp, 0
  out portb, temp
  ldi temp, 255
  out portd, temp
  ret

; Вывод цифры на индикатор
; param0 - цифра
; param1 - позиция, начиная с 0
digitout:
  push param0
  push param1

  ldi temp, 1
l0:  cpi param1, 0
  breq l1
  lsl temp
  dec param1
  rjmp l0
; в temp маска бита порта позиции цифры индикатора
l1:  out portb, temp

  ldi temp, 0
  lsl param0

  ; В Y адрес таблицы индикатора
  ldi zl, low(seg7table*2)
  ldi zh, high(seg7table*2)
  add zl, param0
  adc zh, temp

  lpm temp, z
  out portd, temp
  pop param1
  pop param0
  ret

delay:
  ldi delay1, 10
  ldi delay0, 0
m1:  dec delay0
  brne m1
  dec delay1
  brne m1
  ret
0  
2 miron   (14.01.2011 00:18)
Вот тут наша общественность интересуется: а какова практическая польза от семисегментного индикатора?
Понимая, что хоббийность, всё-таки хотелось бы получить ответ cool
0  
3 caterpillar   (14.01.2011 01:07)
Ну эта, любая индикация каких либо циферек.. Градусы там на улице, скорость/громкость разговора супруги..
Здесь опробован сам принцип вывода ЛЮБЫХ в общем случае циферек на ПОЧТИ ЛЮБОЙ разрядности экран. Ну а там - вешай датчик, обрабатывай и выводи..

Шутка, конечно! biggrin

Это я мозги усохшие разминал.

0  
4 miron   (14.01.2011 01:13)
Дык, это понятно smile Ты лучше скажи, где деньги получать? cool
0  
5 caterpillar   (14.01.2011 01:20)
Ну если black jack со шлюхами на ем построить, то прямо в ем и получать smile
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Привет
Логин:
Пароль:
Календарь
«  Январь 2011  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
31
Поиск
Случайное фото
Тэги
выступление кино актёры текущее шары графоманьяк некрополь Сайт жизнь книги интернет Высоцкий праздники студенты Омск день рождения сцена Музыка день рожденья театр песни МИИЗ праздник юбилей актёр память мысли вслух масленица Природа Бедненко общага стихи Максим Иванов искусство Фотография театр Ермолаевой Весна встреча рыбалка Ночь Музеев песня Степкины песни цветы Теплый ламповый звук УНЧ для наушников мимоходом СССР НАШИ свои рисунки СТЭМ
Статистика

Онлайн всего: 1
Заглянувших: 1
Пользователей: 0
Сегодня отметились
Друзья сайта
Copyright miron © 2008-2024