Уважаемые форумчани, программирование увлекся недавно, и тут возникла у меня маленькая проблема, прошу помочь тем, кто сможет помочь
.
Написал программу на прерывании. Суть в том что , при нажатии INT_0 или INT_1 мотор должен крутиться в одну из сторон, но по какой то причине, на выходе микроконтроллера сигнал с кнопок не идет, то есть моторы не реагируют, хотя в протеусе все нормально работает.
вот код
.include "m16def.inc"
.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def Temp4=R20
.cseg
.org 0
jmp RESET ; Reset Handler
jmp EXT_INT0 ; IRQ0 Handler
jmp EXT_INT1 ; IRQ1 Handler
jmp TIM2_COMP ; Timer2 Compare Handler
jmp TIM2_OVF ; Timer2 Overflow Handler
jmp TIM1_CAPT ; Timer1 Capture Handler
jmp TIM1_COMPA ; Timer1 CompareA Handler
jmp TIM1_COMPB ; Timer1 CompareB Handler
jmp TIM1_OVF ; Timer1 Overflow Handler
jmp TIM0_OVF ; Timer0 Overflow Handler
jmp SPI_STC ; SPI Transfer Complete Handler
jmp USART_RXC ; USART RX Complete Handler
jmp USART_UDRE ; UDR Empty Handler
jmp USART_TXC ; USART TX Complete Handler
jmp ADC_1 ; ADC Conversion Complete Handler
jmp EE_RDY ; EEPROM Ready Handler
jmp ANA_COMP ; Analog Comparator Handler
jmp TWSI ; Two-wire Serial Interface Handler
jmp EXT_INT2 ; IRQ2 Handler
jmp TIM0_COMP ; Timer0 Compare Handler
jmp SPM_RDY
;RESET: ; Reset Handler
;EXT_INT0: ; IRQ0 Handler
;EXT_INT1: ; IRQ1 Handler
TIM2_COMP: ; Timer2 Compare Handler
TIM2_OVF: ; Timer2 Overflow Handler
TIM1_CAPT: ; Timer1 Capture Handler
TIM1_COMPA: ; Timer1 CompareA Handler
TIM1_COMPB: ; Timer1 CompareB Handler
TIM1_OVF: ; Timer1 Overflow Handler
TIM0_OVF: ; Timer0 Overflow Handler
SPI_STC: ; SPI Transfer Complete Handler
USART_RXC: ; USART RX Complete Handler
USART_UDRE: ; UDR Empty Handler
USART_TXC: ; USART TX Complete Handler
ADC_1: ; ADC Conversion Complete Handler
EE_RDY: ; EEPROM Ready Handler
ANA_COMP: ; Analog Comparator Handler
TWSI: ; Two-wire Serial Interface Handler
EXT_INT2: ; IRQ2 Handler
TIM0_COMP: ; Timer0 Compare Handler
SPM_RDY:
reti
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Reset: ldi Temp, high(RAMEND); ?????? ???????? ?????????
out SPH,Temp ; установление стека
ldi Temp, low(RAMEND) ;
out SPL,Temp ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ldi Temp,0b11111111 ;установка порта А как вывод
out DDRA,Temp ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;
ldi Temp,0b00000000 ;;настройка порта D как ввода
out DDRD,Temp ;;
ldi Temp,0b11111111 ;;Соединяем подтягивающие резисторы
out PortD,Temp ;;Должно обязательно присутствовать при работе с кнопками
;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;
ldi Temp,0b11000000 ; включаем INT_0 и INT_1
out GICR,Temp ;
;
ldi Temp,0b00001010 ;Прерывание по спаду
out MCUCR,Temp ;
;;;;;;;;;;;;;;;;;;;;;;;;;;
ldi Temp, 0b11111111 ; записываем значение в Temp
out PortA, Temp ; отправляем на выход
sei ; разрешить прерывания
cicl: rjmp cicl ; безусловный переход на цикл
EXT_INT1:ldi Temp,0b00000010 ;установление начального значения первого бита
out PortA, Temp
rjmp in_1 ; перход на in_1
in_1: reti ;возврат из подпрограммы обработки прерываний
EXT_INT0:ldi Temp,0b00000100 ;установление начального значения первого бита
out PortA, Temp
rjmp in_2
in_2: reti