ASEMBLER - Mikro-kontroler 8051 - Przerwania

ASEMBLER - Mikro-kontroler 8051 - Przerwania

Wątek przeniesiony 2018-11-07 15:45 z Newbie przez Marooned.

  • Rejestracja: dni
  • Ostatnio: dni
0

Witam serdecznie! :)

Niestety z asemblerem jako tako zbytnio styczności nie miałem, a muszę zrobić prosty program, który podczas przerwania włącza lub wyłącza miganie diody, zwracam się do Was z pytaniem. Póki co napisałem coś takiego (miganie diody dopiero zrobię później, póki co chce by działało prawidłowo przerwanie ):

Kopiuj
	ORG 0
	LJMP main
	ORG 0003H	
	CPL P1.2	;jest to port z diodą - zmiana stanu diody
	RETI
	ORG 60H
main:
	SETB EA
	SETB EX0
	JMP $

Program działa w ten sposób, że jeśli wcisnę przycisk odpowiadający za przerwanie INT0, to zaświeci się dioda. Potem program powinien wrocic do wykonywania dalszej czesci programu, jednak tego nie robi, tylko ciągle wykonuję przerwanie ( dioda cały czas zmienia swój stan ). Z tego co się dowiedziałem, to mógłbym użyć flagi na T2COM, ale niezbyt wiele mi to mówi.
Bardzo proszę o pomoc :)

dodanie znacznika <code class="asm"> - furious programming

  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
ORG 0
	LJMP main
	ORG 0003H
EXT0INT:
	LJMP obsluga_int0
	ORG 60H
main:
	SETB EA
	SETB EX0
	JMP $
obsluga_int0:
	CPL P1.2
	RETI

Wychodzi na to, że nawet jak wyłączę przycisk przerwania to po przerwaniu skacze do JMP $ i znów do przerwania. Nawet jeśli wcisnę go raz jeszcze to nic się nie dzieje...

dodanie znacznika <code class="asm"> - furious programming

  • Rejestracja: dni
  • Ostatnio: dni
1

Dobra, już wiem jak. Wystarczyło dodać:

Kopiuj
setb IT0

aby przerwanie było aktywowane zboczem :))

dodanie znacznika <code class="asm"> - furious programming

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.