Код: Выделить всё
.include "tn2313def.inc"
.equ Fo=20000000
.equ eTOP=150*Fo/100000000-1;0x1E //предел счетчика для 20МГц
.equ eBit1=80*Fo/100000000-1;0xF //длительность единичного импулься для лог1
.equ eBit0=45*Fo/100000000-1;x08
;.def Chislo=R20
;*************************************************
.org $00
LDI R16,LOW(RAMEND)
out SPL,R16
RJMP START
.org $04
TIM1_COMPA:
RETI
;*************************************************
;*************************************************
;*************************************************
START:
SBI DDRB,4
SBI PORTB,4 ; PB4/OC1B
SBI DDRB,7
SBI PORTB,7 ; конец синхроимпульса
CLR ZH
LDI R16,1<<SE
OUT MCUCR,R16
LDI R16,eTOP
OUT OCR1AH,ZH
OUT OCR1AL,R16
LDI R24,0
LDI ZL,LOW(DATA*2)
LPM R20, Z+
LPM R21, Z+
LPM R22, Z+
LDI R16,1<<OCIE1A
OUT TIMSK,R16
OUT TIFR,R16
LDI R16,1<<WGM11|1<<WGM10|1<<COM1B1|0<<COM1B0
OUT TCCR1A,R16
LDI R16,1<<WGM13|1<<WGM12|1<<CS10
OUT TCCR1B,R16
SEI
WAIT:
SLEEP
CBI PORTB,7 ; начало синхроимпульса
LDI R16,eBit0
SBRC R20,7
LDI R16,eBit1
OUT OCR1BH,ZH
OUT OCR1BL,R16
LSL R22
ROL R21
ROL R20
INC R24
CPI R24,25
BRLO WAIT
FRAME_OUT:
; LDI R24,0
; LPM R20, Z+
; LPM R21, Z+
; LPM R22, Z+
; CPI ZL,(DATA_END*2+1)
; BRLO WAIT
OUT TCCR1B,ZH
OUT TCCR1A,ZH
OUT TCNT1H,ZH
OUT TCNT1L,ZH
RJMP START
;--- ВЫВОД НА СВЕТОДИОДЫ ---
DATA:
.db 0b10010101, 0b10000001, 0b00110011, 0b00000001, 0b11111111, 0b11000011 ; 1,2
DATA_END:
;.db 0b00000000, 0b00000000, 0b11111111, 0b00000000, 0b11111111, 0b00000000 ; 3,4
;.db 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000 ; 5,6
;.db 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000 ; 7,8
;.db 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000 ; 9,10
;.db 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000 ; 11,12
;.db 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000 ; 13,14
;.db 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000 ; 15,16
;.db 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000 ; 17,18
.EXIT