13.03.2009Как сделать задержку в 1 сек?
Данная программа мигает лампочкой, одну секунду горит, одну не горит. Сделано под частоту процессора в 14.318 MHz , без использования встроенных таймеров и счётчиков, в качестве задержки выступает цикл, в который добавлен «счетчик» на регистре R16, в качестве умножителя. 256 умножается на количество nop.
.include «m16def.inc»
start:
ldi r17,0b0010000;
ldi r18,0b0000000;out ddrb,r17;
out portb,r17;ldi r16,0;
clz;
label1:
inc r16; Задержка в 1 сек
nop; 1
nop; 2
nop; 3
nop; 4
nop; 5
nop; 6
nop; 7
nop; 8
nop; 9
nop; 10
nop; 11
nop; 12
nop; 13
nop; 14
nop; 15
nop; 16
nop; 17
nop; 18
nop; 19
nop; 20
nop; 21
nop; 22
nop; 23
nop; 24
nop; 25
nop; 26
nop; 27
nop; 28
nop; 29
nop; 30
nop; 31
nop; 32
nop; 33
nop; 34
nop; 35
nop; 36
nop; 37
nop; 38
nop; 39
nop; 40
nop; 41
nop; 42
nop; 43
nop; 44
nop; 45
nop; 46
nop; 47
nop; 48
nop; 49
nop; 50
nop; 51
nop; 52
nop; 53
brne label1;out ddrb,r17;
out portb,r18;ldi r16,0;
clz;
label2:
inc r16; Задержка в 1 сек
nop; 1
nop; 2
nop; 3
nop; 4
nop; 5
nop; 6
nop; 7
nop; 8
nop; 9
nop; 10
nop; 11
nop; 12
nop; 13
nop; 14
nop; 15
nop; 16
nop; 17
nop; 18
nop; 19
nop; 20
nop; 21
nop; 22
nop; 23
nop; 24
nop; 25
nop; 26
nop; 27
nop; 28
nop; 29
nop; 30
nop; 31
nop; 32
nop; 33
nop; 34
nop; 35
nop; 36
nop; 37
nop; 38
nop; 39
nop; 40
nop; 41
nop; 42
nop; 43
nop; 44
nop; 45
nop; 46
nop; 47
nop; 48
nop; 49
nop; 50
nop; 51
nop; 52
nop; 53
brne label2;
jmp start;

