Кто может программировать под микроконтроллеры (ATMega8)?
Добавлено: 2010-05-20 14:47:41
Есть на сайте такие? Нужна помощь по програмке
Если у меня опускаются руки, это значит, я потянулся к кувалде
https://forum.lissyara.su/
огласите стоимость, чтоли?ksvserega писал(а):Есть на сайте такие? Нужна помощь по програмке
это какой-то децкий микроконтроллер, сложный чтоли?Гость писал(а):точно знаю что парадокс под контроллеры не пишет
Код: Выделить всё
l2: sbis pinb,1
rjmp l2Код: Выделить всё
l5: clr r16
out portb,r16
out portc,r16
out portd,r16
cbi portb,1 <--------- здесь случайно не SBI должно быть?
ldi YH,high(25000)
ldi YL,low(25000)
rcall l8
brtc l6
sbi portb,0
ldi YH,high(12500)
ldi YL,low(12500)
На выходных восстановлю у себя протеус, можете выложить в нем проект куда-нибудь?Для выхода из цикла что-то (или кто-то) должен установить 1-й бит pinb. Как этот бит ставится???
Код: Выделить всё
l3: sbic pinb,1
rjmp l3Код: Выделить всё
clr r16
out portb,r16
out portc,r16
out portd,r16
cbi portb,1Код: Выделить всё
l3: sbic pinb,1
rjmp l3
clr r16
out portb,r16
out portc,r16
out portd,r16
cbi portb,1
rjmp l2
l4: clr r16
out TCCR1B,r16Код: Выделить всё
.device ATmega8
.include "m8def.inc"
.cseg
.org $0000 rjmp l1
.org $0008 rjmp l4
.org $0012 rjmp l1
#define XTAL 1000000
#define DELAY_ONE_MILLISECOND (XTAL / 4 / 1000)
l1: ldi r16,high(RAMEND)
out SPH, r16
ldi r16,low(RAMEND)
out SPL,r16
ser r16
out ddrb,r16
out ddrc,r16
out ddrd,r16
cbi ddrb,1
ldi r16,$04
out TIMSK,r16
ldi XH,high(65535)
ldi XL,low(65535)
in XL,TCNT1L
in XH,TCNT1H
rcall l5
clr r16
ldi r16, (1<<WDCE)|(1<<WDE)
out WDTCR, r16
ldi r16, (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0)
out WDTCR, r16
wdr
ldi r24,LOW(1000)
ldi r25,HIGH(1000)
rcall mswait
wdr
clr r16
out portb,r16
out portc,r16
out portd,r16
cbi portb,1
out TCNT1H,r16
out TCNT1L,r16
ldi r16,2
out TCCR1B,r16
sei
l2: sbis pinb,1
rjmp l2
wdr
clr r16
out TCCR1B,r16
in XL,TCNT1L
in XH,TCNT1H
rcall l5
clr r16
out TCNT1H,r16
out TCNT1L,r16
ldi r16,2
out TCCR1B,r16
l3: sbic pinb,1
rjmp l3
rjmp l2
l4: clr r16
out TCCR1B,r16
ser r16
out TCNT1H,r16
out TCNT1L,r16
reti
l5: clr r16
out portb,r16
out portc,r16
out portd,r16
cbi portb,1
ldi YH,high(25000)
ldi YL,low(25000)
rcall l8
brtc l6
sbi portb,0
ldi YH,high(12500)
ldi YL,low(12500)
rcall l8
brtc l6
sbi portd,7
ldi YH,high(8333)
ldi YL,low(8333)
rcall l8
brtc l6
sbi portd,6
ldi YH,high(6250)
ldi YL,low(6250)
rcall l8
brtc l6
sbi portd,5
ldi YH,high(5000)
ldi YL,low(5000)
rcall l8
brtc l6
sbi portb,7
ldi YH,high(4167)
ldi YL,low(4167)
rcall l8
brtc l6
sbi portb,6
ldi YH,high(3571)
ldi YL,low(3571)
rcall l8
brtc l6
sbi portd,4
ldi YH,high(3125)
ldi YL,low(3125)
rcall l8
brtc l6
sbi portd,3
ldi YH,high(2778)
ldi YL,low(2778)
rcall l8
l6: brtc l7
sbi portd,2
ldi YH,high(2500)
ldi YL,low(2500)
rcall l8
brtc l7
sbi portd,1
ldi YH,high(2273)
ldi YL,low(2273)
rcall l8
brtc l7
sbi portd,0
ldi YH,high(2083)
ldi YL,low(2083)
rcall l8
brtc l7
sbi portc,5
ldi YH,high(1923)
ldi YL,low(1923)
rcall l8
brtc l7
sbi portc,4
ldi YH,high(1786)
ldi YL,low(1786)
rcall l8
brtc l7
sbi portc,3
ldi YH,high(1667)
ldi YL,low(1667)
rcall l8
brtc l7
sbi portc,2
ldi YH,high(1563)
ldi YL,low(1563)
rcall l8
brtc l7
sbi portc,1
ldi YH,high(1471)
ldi YL,low(1471)
rcall l8
brtc l7
sbi portc,0
ldi YH,high(1389)
ldi YL,low(1389)
rcall l8
brtc l7
sbi portb,5
ldi YH,high(1316)
ldi YL,low(1316)
rcall l8
brtc l7
sbi portb,4
ldi YH,high(1250)
ldi YL,low(1250)
rcall l8
brtc l7
sbi portb,3
ldi YH,high(1190)
ldi YL,low(1190)
rcall l8
brtc l7
sbi portb,2
l7: ret
l8: clt
cp XH,YH
brlo l9
cp XH,YH
brne l10
cp XL,YL
brsh l10
l9: set
l10: ret
mswait:
sbiw r24, 1
brcc mswait1
ret
mswait1:
nop
ldi r26, low(DELAY_ONE_MILLISECOND -4)
ldi r27, high(DELAY_ONE_MILLISECOND -4)
mswait2:
sbiw r26, 1
brne mswait2
rjmp mswait
Использовать сторожевой таймер для сброса - интересная мысль. А зачем после установки таймера используется задержка?ksvserega писал(а):Победил таки. Кому интересно, вот код
Код: Выделить всё
l1: ldi r16,high(RAMEND)
out SPH, r16
ldi r16,low(RAMEND)
out SPL,r16
ser r16
out ddrb,r16
out ddrc,r16
out ddrd,r16
cbi ddrb,1
clr r16
ldi r16, (1<<WDCE)|(1<<WDE)
out WDTCR, r16
ldi r16, (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0)
out WDTCR, r16
wdr
ldi r16,$04
out TIMSK,r16
ldi XH,high(65535)
ldi XL,low(65535)
in XL,TCNT1L
in XH,TCNT1H
rcall l5
ldi r24,LOW(1000)
ldi r25,HIGH(1000)
rcall mswait
wdr
clr r16
out portb,r16
out portc,r16
out portd,r16
cbi portb,1
out TCNT1H,r16
out TCNT1L,r16
ldi r16,2
out TCCR1B,r16
sei
Код: Выделить всё
l2: sbis pinb,1
rjmp l2