вот кот проги:
- Код: Выделить всё
.cseg
.org 0
reset:
ldi r16,LOW(RAMEND)
out spl,r16
ldi r17,$ff ;zagruzajem v 17 registr 255
out ddrd,r17 ;nastraivajem PB na vyxod
cbi ddrb,1 ;podtiazka na Pb1
sbi portb,1 ;vkliuchiajem Pb1
check: ;podprograma proverki knopki
sbis pinb,1 ;proveriajem knopku na PD1
rjmp LED_ON ;jesli srabotalo idiom na LED_ON
rjmp start ;jesli nesrabotalo idiom na start(snova vysylajem pachki impulsav)
start: ;podprograma START
ldi r18,20 ;zagruzajem v r18 200 t.e zacyklivajem pachki impulsav
start1: ;pervaja chiast
dec r18 ;umenshajem r18 na 1
sbi portd,4 ;vkliuchiajem irLED na Pd4
ldi r28,1 ;zagruzajem v r28 dlinu zaderzki(podprogramy delay)
rcall delay ;vyzyvajem podprogramu zaderzki(delay)
cbi portd,4 ;vykliuchiajem irLED na Pd4
ldi r28,1 ;zagruzajem v r28 dlitelnost zaderzki, tak kak snova budem vyzyvat podprogramu zaderzki
rcall delay ;snova vyzyvajem podprogramu zaderzki(delay)
sbi portd,4 ;vkliuchiajem irLED na PB4
cpi r18,0 ;sravnivajem r18 s 0
brne start1 ;jesli ne nol perexodim na start1
ret ;a jesli 0 vyxodim is podprogramy
rjmp check
delay: ;podprograma zaderzki
delay1: ;jejo pervaja chiast
ldi r27,2 ;zagruzajem v r27 7
delay2: ;jejo vtoraja chiast
ldi r26,7 ;zagruzajem v r26 2
delay3: ;jejo trietaja chiast
dec r26 ;umenshajem r26 na 1
cpi r26,0 ;sravnivajem s 0
brne delay3 ;jesli ne nol perexodim na delay3,a jesli nol idiom dalshe
dec r27 ;umenshajem r27 na 1
cpi r27,0 ;sravnivajem s 0
brne delay2 ;perexodim na delay2,a jesli 0 idiom dalshe
dec r28 ;umenshajem r28 na 1
cpi r28,0 ;sravnivajem s 0
brne delay1 ;jesli ne nol idiom na delay1,a jesli 0 idiom dalshe
ret ;vyxodim is podprogramy delay
wait: ;prosta zaderzka dlia morganija ledom
wait1: ;jejo pervaja chiast
ldi r27,25 ;zagruzajem v r27 100
wait2: ;jejo vtoraja chiast
ldi r26,25 ;zagruzajem v r26 100
wait3: ;jejo trietaja chiast
dec r26 ;umenshajem r26 na 1
cpi r26,0 ;sravnivajem s 0
brne wait3 ;jesli ne nol perexodim na delay3,a jesli nol idiom dalshe
dec r27 ;umenshajem r27 na 1
cpi r27,0 ;sravnivajem s 0
brne wait2 ;perexodim na delay2,a jesli 0 idiom dalshe
dec r28 ;umenshajem r28 na 1
cpi r28,0 ;sravnivajem s 0
brne wait1 ;jesli ne nol idiom na delay1,a jesli 0 idiom dalshe
ret ;vyxodim is podprogramy delay
LED_ON:
cbi portd,4 ;vykliuchiajem IRled
sbi portd,6 ;vkliuchiajem led na pd6
rcall wait; ;vyzyvajem zaderzku chtoby lampachka morgnula
cbi portd,6 ;vykliuchiajem led na pd6
rjmp start ;perexodim na start
;36khz = r28 * r27 * r26 * 0.000001
;36khz = 1 * 7 * 2 * 0.000001
Код программ заключайте в BBCode-тег CODE <V>