Код: Выделить всё
sbi PortB,0 ;подать 1 на PB0
cbi PortB,0 ;подать 0 на PB0Код: Выделить всё
sbi PortB,0 ;подать 1 на PB0
nop
cbi PortB,0 ;подать 0 на PB0Код: Выделить всё
sbi PortB,0 ;подать 1 на PB0
cbi PortB,0 ;подать 0 на PB0Код: Выделить всё
sbi PortB,0 ;подать 1 на PB0
nop
cbi PortB,0 ;подать 0 на PB0Код: Выделить всё
.device atmega8a
.nolist
.include "D:\prg\AVRStudio419\AvrAssembler2\Appnotes\m8Adef.inc"
.list
;=======Работа с сервоприводом
.cseg
.org 0
rjmp Init
Init:
ser r16
out DDRB,r16 ;весь регистр B ориентировали на выход
ldi r16,Low(RamEnd) ;инициализация стека
out SPL,r16
ldi r16,High(RamEnd)
out SPH,r16
Start:
sbi PortB,0 ;подать 1 на PB0
rcall Delay_1
cbi PortB,0 ;подать 0 на PB0
rcall Delay_2
Loop: rjmp Start
Delay_1:
clr r16
ldi r17,2 ;задаем длительность импульса
Loop_Delay_1:
dec r16
brne Loop_Delay_1
dec r17
brne Loop_Delay_1
ret
Delay_2:
clr r16
ldi r17,24 ;задаем длительность оставшейся части периода (логический 0)
Loop_Delay_2:
dec r16
brne Loop_Delay_2
dec r17
brne Loop_Delay_2
ret