[an error occurred while processing this directive]
|
.include "m128def.inc"
.equ del1=1
.def temp = r16
.def temp2 = r17
.def acc = r18
.def cusb = r20
;==================макросы========================
.macro RByte ;чтение байта из порта F в r0
;rd:
;sbic PINB,7
;rjmp rd
sbi PORTB,4
in cusb,PINF
nop
cbi PORTB,4
.endmacro
.macro ONLEDS ; включение обоих светодиодов
ldi temp, 0
sts PORTG, temp
.endmacro
.macro ONUSB
ldi temp, 0b00000001
sts PORTG, temp
.endmacro
.macro ONSTATUS
ldi temp, 0b00000010
sts PORTG, temp
.endmacro
.macro OFFLEDS
ldi temp, 0b00000011
sts PORTG, temp
.endmacro
.cseg
;ТВП
.org $0000
jmp reset
.org $002C
;jmp eeready
;;EEPROM ready
;=====================begin main program======================
reset:
;initialization
cli
ldi temp,high(RAMEND) ;Stack initialization
out SPH,temp
ldi temp,low(RAMEND)
out SPL,temp
; sleep mode как idle mode
in temp,MCUCR
ori temp,0b00100000
out MCUCR,temp
;конфигурируем порты для начала работы
in temp, SFIOR
ori temp,0b00000100
out SFIOR,temp
; выводы входных портов - в третье состояние
ser temp
out DDRC,temp ;всегда выходные порты
ldi temp, 0b00000011
sts DDRG, temp ; светодиоды
;настройка порта "и туда, и оттуда"
ldi temp, 0b00110000
out DDRB, temp
; ================main program=======================
main:
ONLEDS
;чтение и анализ принимаемых по USB данных
rcall RdAn
ONUSB
sleep
end:
;============подпрограммы=================
RdAn: ;прием из USB
clr temp
sts DDRF,temp ; настройка порта F на прием
RByte
rcall weeprom0
ret
weeprom0: ;запись cusb в EEPROM
cli
wp:
sbic EECR,1
rjmp wp
ldi temp,0
out EEARH,temp
out EEARL,temp
out EEDR,cusb
ldi temp,0b1100
out EECR,temp
sbi EECR,1
sei
ret
E-mail: info@telesys.ru