Здравствуйте. Была поставлена задача сделать одно внутреннее и одно внешнее прерывание и плюс генерация ШИМ сигнала. Я сделал все работало в протеусе. Но при проверке на стенде программа отказывается работать. Я не смог найти ошибок. У меня мало опыта в программирование микроконтроллеров. Не судите строго))
.include "m16def.inc"
.ORG 0 RJMP _START .ORG $002 RJMP INT0_COMP .org $012 RJMP TIM0_OVF //---------- _START: SEI LDI R18,HIGH(RAMEND) OUT SPH,R18 LDI R19,LOW(RAMEND) OUT SPL,R19
//---------- стека LDI R30,0b00000001 OUT DDRC,R30 OUT DDRA,R30
LDI R29,0b00000100 OUT PORTD,R29
LDI R29,0b10000000 OUT DDRD,R29 //----------
LDI R22,0b00000101 OUT TCCR0,R22 LDI R22,0b00000001 OUT TIMSK,R22 //----------
LDI R22,0b01000000 OUT GICR,R22//установкой второго бита в GICR разрешает внешнее прерывание INT0 LDI R23,0b00000010 OUT MCUCR,R23//возникновение сигнала на INT0 по спадающему фронту сигнала на выводе //---------- INT0 на прерывание LDI R29,0x80 OUT OCR2,R29
LDI R20,0b01110011 OUT tccr2,R20
//---------- SEI//разрешение глобальных прерываний
_PROG_INT0: CPI R25,0b00000110 BREQ _LED
CPI R27,0b00001110 BReQ _LED_2 RJMP _PROG_INT0 _LED: LDI R26,0b00000001 OUT PORTC,R26 LDI R22,0b00000000 OUT GICR,R22 RJMP _PROG_INT0 _LED_2: LDI R21,0b00000001 OUT PORTA,R21 //---------- LDI R22,0b00000000 OUT TCCR0,R22 LDI R22,0b00000000 OUT TIMSK,R22 //---------- RJMP _PROG_INT0
//---------- INT0_COMP: CLI SBIC PIND,2 RJMP INT0_COMP INC R25 RJMP VIX
TIM0_OVF: CLI INC R27 RJMP VIX
VIX: SEI RETI
|