Вот одним управлять научился, а вот как двумя?
Знаю что надо поочереди транзисторы включать, интересует именно сама программа. С какой скоростью и т.д.
Спасибо
.include "2313def.inc"
; ***** объявление переменных *****************
.def del_set =r9
.def lcd =r24
.def tmp =r25
.def count =r26
.def second =r29
; ************** векторы прерываний ***********
rjmp RESET ;Reset Handle
reti ;irq0
reti ;irq1
reti ;timer1
reti ;timer1 comA
reti ;timer1 over
rjmp OVER0 ;timer0 over
reti ;spi
reti ;uart
reti ;uart
reti ;uart
reti ;anacomp
; *********************************************
; ***** вектор прерывания переп. Т1 ***********
OVER0:
ldi tmp,177
out TCNT0,tmp ;корректировка таймера
;**************** ПОДПРОГРАММЫ ****************
rcall clock
rcall out_display
reti
; ***** выход из обработчика прерывания *******
; ***** подпрограмма секундного счетчика ******
clock:
inc count
cpi count,198
brne nochange
clr count
inc second
mov tmp,second
andi tmp,0x0f
cpi tmp,10
brne nochange
andi second,0xf0
ldi tmp,0x10
add second, tmp
cpi second,0x60
brne nochange
clr second
nochange:
ret
; ***** вывод на дисплей **********************
out_display:
cbi portD,0
cbi portD,1
inc lcd
cpi lcd,1
brne d2
sbi portD,0
rjmp digit1
d2:
cpi lcd,2
brne d3
sbi portD,1
rjmp digit2
d3:
clr lcd
digit1:
mov tmp,second
swap tmp
andi tmp,0x0f
out EEAR, tmp
sbi EECR, EERE
in tmp, EEDR
out portB,tmp
rjmp exit
digit2:
mov tmp,second
andi tmp,0x0f
out EEAR, tmp
sbi EECR, EERE
in tmp, EEDR
out portB,tmp
exit:
ret
; ***** обработка прерывания сброса ***********
reset:
ldi second,0
clr tmp ;очистка регистра
ldi tmp,$6f ;установка значений битов регистра
out SPL,tmp ;установка начального адреса стека
clr tmp
sei
clr tmp
ldi tmp,0x02 ;установка значений битов регистра
out TIMSK,tmp ;установка битов в TIMSK
clr tmp
ldi tmp,0x04
out TCCR0,tmp ;запуск таймера
ldi tmp,177
out TCNT0,tmp
clr count
ldi tmp,0xff
out DDRB,tmp
out DDRD,tmp
next:
rjmp next
; ***** сегмент EЕPROMа ***********************
.eseg
.org 0
table1:
.db 0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10, 0xFF
;dig 0 1 2 3 4 5 6 7 8 9
aliens писал(а):Расскажите ламеру что означает запись 1<<что-то (SE,CS02)
aliens писал(а):eseg
.org 0
table1:
.db 0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10, 0xFF
;dig 0 1 2 3 4 5 6 7 8 9
aliens писал(а):Расскажите ламеру что означает запись 1<<что-то (SE,CS02)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6