Где же можно посмотреть номинал такого резистоора ? или другого компонента ? Или как подключить какой то компонент ?
Вот ПУТАНОЕ объяснение в плохом форматировании:
и, очевидно тухнуть при отпускании?Yuraskas писал(а):поставил себе задачу зажигать светодиод при нажатии на кнопку (по прерыванию)
очень странно! Я проверил все Ваши варианты - они не работают так как указано в первом посте, да и не должны, ибо содержат одни и те же ошибки. Разберитесь.Yuraskas писал(а):кнопка заработала, с тем кодом который я приводил выше
Vovan писал(а):и, очевидно тухнуть при отпускании?
.include "m8def.inc"
.cseg
.org 0x0000
RJMP Reset
RJMP INT_0
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RETI
Reset:
LDI R16,low(RAMEND)
OUT SPL,R16
LDI R16,high(RAMEND)
OUT SPH,R16
SEI
CBI DDRD,2 ;конфигурируем PD2 на вход
;SBI PORTD,2
SBI DDRD,0 ;PD0 на выход
CBI PORTD,0 ;зажигаем светодиод при старте МК
LDI R16,0x2 ;по спаду на INT0
OUT MCUCR,R16
LDI R16,1<<INTF0
OUT GICR,R16
Main:
RJMP Main
INT_0:
SBI PORTD,0 ;по прерыванию светодиод гасим
RETI
#include <mega8.h>
interrupt [EXT_INT0] void ext_int0_isr(void)
{
PORTD |= (1 << 0); // "1" на PD0
}
void main(void){
DDRD=0x01; // PD0 выход
PORTD |= (1<<2); // подтяжка на PD2
GICR|=0x40; // INT0: On Mode: Falling Edge INT1: Off
MCUCR=0x02;
GIFR=0x40;
#asm("sei")
while (1){
if (PIND.2){
PORTD &= (~(1 << 0)); // "0" на PD0
} };
}
Yuraskas писал(а):пока только зажигаться (если не горела), либо тухнуть (если горела)
#include <mega8.h>
interrupt [EXT_INT0] void ext_int0_isr(void)
{
PORTD ^= (1 << 0); // переключить светодиод на PD0
}
void main(void){
DDRD=0x01; // PD0 выход
PORTD |= (1<<2); // подтяжка на PD2
GICR|=0x40; // INT0: On Mode: Falling Edge INT1: Off
MCUCR=0x02;
GIFR=0x40;
#asm("sei")
while (1){} }
;CodeVisionAVR C Compiler V1.25.9 Professional
;(C) Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
;http://www.hpinfotech.com
.CSEG
.ORG 0
;INTERRUPT VECTORS
RJMP __RESET
RJMP _ext_int0_isr
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
__GLOBAL_INI_TBL:
.DW 0
_0x08:
__RESET:
CLI
CLR R30
OUT EECR,R30
;INTERRUPT VECTORS ARE PLACED
;AT THE START OF FLASH
LDI R31,1
OUT GICR,R31
OUT GICR,R30
OUT MCUCR,R30
;DISABLE WATCHDOG
LDI R31,0x18
OUT WDTCR,R31
OUT WDTCR,R30
;CLEAR R2-R14
LDI R24,13
LDI R26,2
CLR R27
__CLEAR_REG:
ST X+,R30
DEC R24
BRNE __CLEAR_REG
;CLEAR SRAM
LDI R24,LOW(0x400)
LDI R25,HIGH(0x400)
LDI R26,0x60
__CLEAR_SRAM:
ST X+,R30
SBIW R24,1
BRNE __CLEAR_SRAM
;GLOBAL VARIABLES INITIALIZATION
LDI R30,LOW(__GLOBAL_INI_TBL*2)
LDI R31,HIGH(__GLOBAL_INI_TBL*2)
__GLOBAL_INI_NEXT:
LPM R24,Z+
LPM R25,Z+
SBIW R24,0
BREQ __GLOBAL_INI_END
LPM R26,Z+
LPM R27,Z+
LPM R0,Z+
LPM R1,Z+
MOVW R22,R30
MOVW R30,R0
__GLOBAL_INI_LOOP:
LPM R0,Z+
ST X+,R0
SBIW R24,1
BRNE __GLOBAL_INI_LOOP
MOVW R30,R22
RJMP __GLOBAL_INI_NEXT
__GLOBAL_INI_END:
;STACK POINTER INITIALIZATION
LDI R30,LOW(0x45F)
OUT SPL,R30
LDI R30,HIGH(0x45F)
OUT SPH,R30
;DATA STACK POINTER INITIALIZATION
LDI R28,LOW(0x160)
LDI R29,HIGH(0x160)
RJMP _main
.ESEG
.ORG 0
.DSEG
.ORG 0x160
; 103 interrupt [EXT_INT0] void ext_int0_isr(void)
; 104 {
.CSEG
_ext_int0_isr:
; 105 PORTD |= (1 << 0); // "1" на PD0
SBI 0x12,0
; 106 }
RETI
; 107
; 108 void main(void){
_main:
; 109 DDRD=0x01; // PD0 выход
LDI R30,LOW(1)
OUT 0x11,R30
; 110 PORTD |= (1<<2); // подтяжка на PD2
SBI 0x12,2
; 111 GICR|=0x40; // INT0: On Mode: Falling Edge INT1: Off
IN R30,0x3B
ORI R30,0x40
OUT 0x3B,R30
; 112 MCUCR=0x02;
LDI R30,LOW(2)
OUT 0x35,R30
; 113 GIFR=0x40;
LDI R30,LOW(64)
OUT 0x3A,R30
; 114 #asm("sei")
sei
; 115 while (1){
_0x3:
; 116 if (PIND.2){
SBIC 0x10,2
; 117 PORTD &= (~(1 << 0)); // "0" на PD0
CBI 0x12,0
; 118 } };
RJMP _0x3
; 119 }
_0x7:
RJMP _0x7
; 120
;END OF CODE MARKER
__END_OF_CODE:
Victorovych писал(а):только в "правильном" асме куча мусора
Yuraskas писал(а):[code]
Reset:
LDI R16,low(RAMEND)
OUT SPL,R16
LDI R16,high(RAMEND)
OUT SPH,R16
SEI
CBI DDRD,2 ;конфигурируем PD2 на вход
;SBI PORTD,2
SBI DDRD,0 ;PD0 на выход
CBI PORTD,0 ;зажигаем светодиод при старте МК
LDI R16,0x2 ;по спаду на INT0
OUT MCUCR,R16
LDI R16,1<<INTF0
OUT GICR,R16
Main:
RJMP Main
Duhas писал(а):2АВР, было бы более чем странно, если бы студия и другие СЁ-вые компиляторы работали с разными наборами инструкций ...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10