Код: Выделить всё
int main(void)
{
DDRD = 0b00000000;
PORTD = 0b11111111;
DDRB = 0b11111111;
PORTB = 0b00000000;
while(1)
if(PIND==0)
{
PORTB=1;
_delay_ms(300);
PORTB=0;
_delay_ms(300);
}
}
Код: Выделить всё
int main(void)
{
DDRD = 0b00000000;
PORTD = 0b11111111;
DDRB = 0b11111111;
PORTB = 0b00000000;
while(1)
if(PIND==0)
{
PORTB=1;
_delay_ms(300);
PORTB=0;
_delay_ms(300);
}
}
Код: Выделить всё
; Turn off global interrupt
cli
; Reset Watchdog Timer
wdr
CLR R15
OUT MCUSR,R15
; Start timed sequence
LDI R16,1<<WDCE|1<<WDE
STS WDTCSR, r16
CBR R16,1<<WDE
STS WDTCSR,R16Код: Выделить всё
.include "m328pdef.inc"
.equ Fo=1000000
.org 0
RJMP START
START:
ldi XL,low(RAMEND) ;
ldi XH,high(RAMEND) ;
out SPH, XH ;
out SPL, XL ;загрузить стек
; Turn off global interrupt
cli
; Reset Watchdog Timer
wdr
CLR R15
OUT MCUSR,R15
; Start timed sequence
LDI R16,1<<WDCE|1<<WDE
STS WDTCSR, r16
CBR R16,1<<WDE
STS WDTCSR,R16
GO:
SER R16
OUT DDRB,R16
OUT PORTB,R15
OUT PORTD,R16
SBIC PIND,0
RJMP PC-1
OUT PORTB,R16
RCALL DEL_300ms
OUT PORTB,R15
RCALL DEL_300ms
RJMP GO
;****
DEL_300ms:
LDI R20,BYTE3(300*Fo/1000/5)
LDI R21,BYTE2(300*Fo/1000/5)
LDI R22,BYTE1(300*Fo/1000/5)
WAIT_DEL:
SUBI R22,BYTE1(1)
SBCI R21,BYTE2(1)
SBCI R20,BYTE3(1)
BRNE WAIT_DEL
RET
;****
.EXIT
Тогда поискать книги Евстифеева для освоения.bafomet911 писал(а):...
У мну английский хромаетне пинайте сильно
знаю что стыдоба...
Код: Выделить всё
.include "m328pdef.inc"
.equ Fo=1000000
.org 0
RJMP START
START:
ldi XL,low(RAMEND) ;
ldi XH,high(RAMEND) ;
out SPH, XH ;
out SPL, XL ;загрузить стек
; Turn off global interrupt
cli
; Reset Watchdog Timer
wdr
CLR R15
OUT MCUSR,R15
; Start timed sequence
LDI R16,1<<WDCE|1<<WDE
STS WDTCSR, r16
CBR R16,1<<WDE
STS WDTCSR,R16
GO:
SER R16
OUT DDRB,R16
OUT PORTB,R15
OUT PORTD,R16
SBIC PIND,0
RJMP PC-1
OUT PORTB,R16
RCALL DEL_300ms
OUT PORTB,R15
RCALL DEL_300ms
RJMP GO
;****
DEL_300ms:
LDI R20,BYTE3(300*Fo/1000/5)
LDI R21,BYTE2(300*Fo/1000/5)
LDI R22,BYTE1(300*Fo/1000/5)
WAIT_DEL:
SUBI R22,BYTE1(1)
SBCI R21,BYTE2(1)
SBCI R20,BYTE3(1)
BRNE WAIT_DEL
RET
;****
.EXIT
Код: Выделить всё
.include "m328pdef.inc"
.equ Fo=1000000
.org 0
RJMP START
START:
ldi XL,low(RAMEND) ;
ldi XH,high(RAMEND) ;
out SPH, XH ;
out SPL, XL ;загрузить стек
; Turn off global interrupt
cli
; Reset Watchdog Timer
wdr
CLR R15
OUT MCUSR,R15
; Start timed sequence
LDI R16,1<<WDCE|1<<WDE
STS WDTCSR, r16
CBR R16,1<<WDE
STS WDTCSR,R16
GO:
SER R16
OUT DDRB,R16
OUT PORTB,R15
OUT PORTD,R16
SBIC PIND,0
RJMP PC-1
OUT PORTB,R16
RCALL DEL_300ms
OUT PORTB,R15
RCALL DEL_300ms
RJMP GO
;****
DEL_300ms:
LDI R20,BYTE3(300*Fo/1000/5)
LDI R21,BYTE2(300*Fo/1000/5)
LDI R22,BYTE1(300*Fo/1000/5)
WAIT_DEL:
SUBI R22,BYTE1(1)
SBCI R21,BYTE2(1)
SBCI R20,BYTE3(1)
BRNE WAIT_DEL
RET
;****
.EXIT
bafomet911 писал(а):АСМ Сцуко Сила Великая!!!! И я ею хочу овладеть!!! Путь Джедая вибираю одако я:)
Может для начало стоило разобраться?bafomet911 писал(а):Вывод-
1)косяк атмел студии!
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/wdt.h>
int main(void)
{
DDRD = 0b00000000;
PORTD = 0b11111111;
DDRB = 0b11111111;
PORTB = 0b00000000;
wdt_enable(WDTO_2S);
wdt_reset();
while(1)
{
//if(PIND==0)
if((PIND & (1<<(0))) == 0)
{
PORTB=1;
_delay_ms(300);
PORTB=0;
_delay_ms(300);
}
wdt_reset();
}
}Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
int main(void)
{
DDRD = 0b00000000;
PORTD = 0b11111111;
DDRB = 0b11111111;
PORTB = 0b00000000;
cli();
asm volatile ("wdr");
MCUSR = 0x00;
WDTCSR = 1<<WDCE|1<<WDE;
WDTCSR &= ~(1<<WDE);
while(1)
{
//if(PIND==0)
if((PIND & (1<<(0))) == 0)
{
PORTB=1;
_delay_ms(300);
PORTB=0;
_delay_ms(300);
}
}
}У Ди Халта неплохой учебник по асму. Спросить у Яндекса "di halt avr. учебный курс", первая же ссылка.BOB51 писал(а):Тогда поискать книги Евстифеева для освоения.