вот кот проги:
- Код: Выделить всё • Развернуть
- .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>


 
 
 
  ..а для етого осцилогроф есть..36кз настроил по теорию правильно.Задержка между импулсами 14микросекунд, но в чем же глюк?кто в асме шарит помогите пожалутса:)  а нащет что асм ужос .неправда!хотябы можно смодулирывать код с минимальными затратами памети..ну и что,что в проге лехко запутатса, но также лехко ошибку найти.Я тоже думал ц что асм фуфло пока неузнал что за вещ!
..а для етого осцилогроф есть..36кз настроил по теорию правильно.Задержка между импулсами 14микросекунд, но в чем же глюк?кто в асме шарит помогите пожалутса:)  а нащет что асм ужос .неправда!хотябы можно смодулирывать код с минимальными затратами памети..ну и что,что в проге лехко запутатса, но также лехко ошибку найти.Я тоже думал ц что асм фуфло пока неузнал что за вещ! 
