Proszę o pomoc w zaprogramowanie przerwania pochodzącego od licznika T0 do krótkiego programiku który napisałem.Prośba maja jest aby licznik zliczył 10s (startując równo z odliczaniem do dziesięciu które widac na wyświetlaczu siedmiosegmentowym) i włączył przerwanie które wykona program według pokazanego kodu.Są to moje początki dlatego proszę o wyrozumiałość.
Zaznaczam iż dzięki pomocy forum wykonałem sobie programator wraz z wizualizacją .
Początek napisałem korzystając z etykiety.Program po przerwaniu tradycyjnie. Chcę go pokazać bo jest to mój pierwszy .
Gas to znaczy gaś wyświetlacz sidmiosegmentowy.
Próba programu;
Tutaj chciałbym zrobić przerwanie od licznika T0
aby wykonał poniższą instrukcje.
Z góry dziękuję za pomoc
Dodano po 2 [godziny] 35 [minuty]:
Napisałem coś takiego ale mi nie działa.
Przerwanie zewnętrzne z INT0.
Gas EQU 11111111B
Zero EQU 11000000B
Jeden EQU 11111001B
Dwa EQU 10100100B
Trzy EQU 10110000B
Cztery EQU 10011001B
Piec EQU 10010010B
Szesc EQU 10000010B
Siedem EQU 11111000B
Osiem EQU 10000000B
Dziewiec EQU 10010000B
ORG 0000h
LJMP START
ORG 0003h
LJMP intEX0
START:
SETB EX0
SETB EA
MOV P0,#Zero
MOV P2,#Jeden
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Dwa
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Trzy
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Cztery
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Piec
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Szesc
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Siedem
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Osiem
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Dziewiec
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Jeden
MOV P2,#Zero
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
intEX0:
CLR P0.0
CLR P0.3
CLR P0.4
CLR P0.5
CLR P2.1
CLR P2.2
CLR P2.4
CLR P2.5
CLR P2.6
CLR P1.3
LCALL OPOZNIENIE1S
SETB P0.0
SETB P0.3
SETB P0.4
SETB P0.5
SETB P2.1
SETB P2.2
SETB P2.4
SETB P2.5
SETB P2.6
SETB P1.3
LCALL OPOZNIENIE
CLR P0.1
CLR P0.2
CLR P0.4
CLR P0.5
CLR P0.6
CLR P2.0
CLR P2.3
CLR P2.4
CLR P2.5
CLR P1.2
LCALL OPOZNIENIE1S
SETB P0.1
SETB P0.2
SETB P0.4
SETB P0.5
SETB P0.6
SETB P2.0
SETB P2.3
SETB P2.4
SETB P2.5
SETB P1.2
LCALL OPOZNIENIE
CLR P0.0
CLR P0.3
CLR P0.4
CLR P0.5
CLR P2.0
CLR P2.3
CLR P2.4
CLR P2.5
CLR P2.6
CLR P1.1
LCALL OPOZNIENIE1S
SETB P0.0
SETB P0.3
SETB P0.4
SETB P0.5
SETB P2.0
SETB P2.3
SETB P2.4
SETB P2.5
SETB P2.6
SETB P1.1
LCALL OPOZNIENIE
CLR P0.0
CLR P0.3
CLR P0.4
CLR P0.5
CLR P0.6
CLR P1.0
LCALL OPOZNIENIE1S
SETB P0.0
SETB P0.3
SETB P0.4
SETB P0.5
SETB P0.6
SETB P1.0
LCALL OPOZNIENIE
CLR P0.0
CLR P0.2
CLR P0.3
CLR P0.5
CLR P0.6
CLR P0.7
CLR P2.0
CLR P2.1
CLR P2.2
CLR P2.3
CLR P2.4
CLR P2.5
CLR P1.0
LCALL OPOZNIENIE4S
SETB P0.0
SETB P0.2
SETB P0.3
SETB P0.5
SETB P0.6
SETB P0.7
SETB P2.0
SETB P2.1
SETB P2.2
SETB P2.3
SETB P2.4
SETB P2.5
SETB P1.0
LJMP START
RETI
OPOZNIENIE1S:
WARTOSC1:
MOV R0,#10
WARTOSC2:
MOV R1,#200
WARTOSC3:
MOV R2,#250
DJNZ R2,$
DJNZ R1,WARTOSC3
DJNZ R0,WARTOSC2
RET
OPOZNIENIE4S:
WARTOSC7:
MOV R0,#40
WARTOSC8:
MOV R1,#200
WARTOSC9:
MOV R2,#250
DJNZ R2,$
DJNZ R1,WARTOSC9
DJNZ R0,WARTOSC8
RET
OPOZNIENIE:
WARTOSC4:
MOV R3,#1
WARTOSC5:
MOV R4,#1
WARTOSC6:
MOV R5,#1
DJNZ R5,$
DJNZ R4,WARTOSC6
DJNZ R3,WARTOSC5
RET
END
Zaznaczam iż dzięki pomocy forum wykonałem sobie programator wraz z wizualizacją .
Początek napisałem korzystając z etykiety.Program po przerwaniu tradycyjnie. Chcę go pokazać bo jest to mój pierwszy .
Gas to znaczy gaś wyświetlacz sidmiosegmentowy.
Próba programu;
Gas EQU 11111111B
Zero EQU 11000000B
Jeden EQU 11111001B
Dwa EQU 10100100B
Trzy EQU 10110000B
Cztery EQU 10011001B
Piec EQU 10010010B
Szesc EQU 10000010B
Siedem EQU 11111000B
Osiem EQU 10000000B
Dziewiec EQU 10010000B
LJMP START
START:
MOV P0,#Zero
MOV P2,#Jeden
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Dwa
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Trzy
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Cztery
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Piec
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Szesc
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Siedem
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Osiem
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Dziewiec
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Jeden
MOV P2,#Zero
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
Tutaj chciałbym zrobić przerwanie od licznika T0
aby wykonał poniższą instrukcje.
CLR P0.0
CLR P0.3
CLR P0.4
CLR P0.5
CLR P2.1
CLR P2.2
CLR P2.4
CLR P2.5
CLR P2.6
CLR P1.3
LCALL OPOZNIENIE1S
SETB P0.0
SETB P0.3
SETB P0.4
SETB P0.5
SETB P2.1
SETB P2.2
SETB P2.4
SETB P2.5
SETB P2.6
SETB P1.3
LCALL OPOZNIENIE
CLR P0.1
CLR P0.2
CLR P0.4
CLR P0.5
CLR P0.6
CLR P2.0
CLR P2.3
CLR P2.4
CLR P2.5
CLR P1.2
LCALL OPOZNIENIE1S
SETB P0.1
SETB P0.2
SETB P0.4
SETB P0.5
SETB P0.6
SETB P2.0
SETB P2.3
SETB P2.4
SETB P2.5
SETB P1.2
LCALL OPOZNIENIE
CLR P0.0
CLR P0.3
CLR P0.4
CLR P0.5
CLR P2.0
CLR P2.3
CLR P2.4
CLR P2.5
CLR P2.6
CLR P1.1
LCALL OPOZNIENIE1S
SETB P0.0
SETB P0.3
SETB P0.4
SETB P0.5
SETB P2.0
SETB P2.3
SETB P2.4
SETB P2.5
SETB P2.6
SETB P1.1
LCALL OPOZNIENIE
CLR P0.0
CLR P0.3
CLR P0.4
CLR P0.5
CLR P0.6
CLR P1.0
LCALL OPOZNIENIE1S
SETB P0.0
SETB P0.3
SETB P0.4
SETB P0.5
SETB P0.6
SETB P1.0
LCALL OPOZNIENIE
CLR P0.0
CLR P0.2
CLR P0.3
CLR P0.5
CLR P0.6
CLR P0.7
CLR P2.0
CLR P2.1
CLR P2.2
CLR P2.3
CLR P2.4
CLR P2.5
CLR P1.0
LCALL OPOZNIENIE4S
SETB P0.0
SETB P0.2
SETB P0.3
SETB P0.5
SETB P0.6
SETB P0.7
SETB P2.0
SETB P2.1
SETB P2.2
SETB P2.3
SETB P2.4
SETB P2.5
SETB P1.0
LJMP START
OPOZNIENIE1S:
WARTOSC1:
MOV R0,#10
WARTOSC2:
MOV R1,#200
WARTOSC3:
MOV R2,#250
DJNZ R2,$
DJNZ R1,WARTOSC3
DJNZ R0,WARTOSC2
RET
OPOZNIENIE4S:
WARTOSC7:
MOV R0,#40
WARTOSC8:
MOV R1,#200
WARTOSC9:
MOV R2,#250
DJNZ R2,$
DJNZ R1,WARTOSC9
DJNZ R0,WARTOSC8
RET
OPOZNIENIE:
WARTOSC4:
MOV R3,#1
WARTOSC5:
MOV R4,#1
WARTOSC6:
MOV R5,#1
DJNZ R5,$
DJNZ R4,WARTOSC6
DJNZ R3,WARTOSC5
RET
END
Z góry dziękuję za pomoc
Dodano po 2 [godziny] 35 [minuty]:
Napisałem coś takiego ale mi nie działa.
Przerwanie zewnętrzne z INT0.
Gas EQU 11111111B
Zero EQU 11000000B
Jeden EQU 11111001B
Dwa EQU 10100100B
Trzy EQU 10110000B
Cztery EQU 10011001B
Piec EQU 10010010B
Szesc EQU 10000010B
Siedem EQU 11111000B
Osiem EQU 10000000B
Dziewiec EQU 10010000B
ORG 0000h
LJMP START
ORG 0003h
LJMP intEX0
START:
SETB EX0
SETB EA
MOV P0,#Zero
MOV P2,#Jeden
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Dwa
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Trzy
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Cztery
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Piec
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Szesc
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Siedem
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Osiem
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Zero
MOV P2,#Dziewiec
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
MOV P0,#Jeden
MOV P2,#Zero
LCALL OPOZNIENIE1S
MOV P0,#Gas
MOV P2,#Gas
LCALL OPOZNIENIE
intEX0:
CLR P0.0
CLR P0.3
CLR P0.4
CLR P0.5
CLR P2.1
CLR P2.2
CLR P2.4
CLR P2.5
CLR P2.6
CLR P1.3
LCALL OPOZNIENIE1S
SETB P0.0
SETB P0.3
SETB P0.4
SETB P0.5
SETB P2.1
SETB P2.2
SETB P2.4
SETB P2.5
SETB P2.6
SETB P1.3
LCALL OPOZNIENIE
CLR P0.1
CLR P0.2
CLR P0.4
CLR P0.5
CLR P0.6
CLR P2.0
CLR P2.3
CLR P2.4
CLR P2.5
CLR P1.2
LCALL OPOZNIENIE1S
SETB P0.1
SETB P0.2
SETB P0.4
SETB P0.5
SETB P0.6
SETB P2.0
SETB P2.3
SETB P2.4
SETB P2.5
SETB P1.2
LCALL OPOZNIENIE
CLR P0.0
CLR P0.3
CLR P0.4
CLR P0.5
CLR P2.0
CLR P2.3
CLR P2.4
CLR P2.5
CLR P2.6
CLR P1.1
LCALL OPOZNIENIE1S
SETB P0.0
SETB P0.3
SETB P0.4
SETB P0.5
SETB P2.0
SETB P2.3
SETB P2.4
SETB P2.5
SETB P2.6
SETB P1.1
LCALL OPOZNIENIE
CLR P0.0
CLR P0.3
CLR P0.4
CLR P0.5
CLR P0.6
CLR P1.0
LCALL OPOZNIENIE1S
SETB P0.0
SETB P0.3
SETB P0.4
SETB P0.5
SETB P0.6
SETB P1.0
LCALL OPOZNIENIE
CLR P0.0
CLR P0.2
CLR P0.3
CLR P0.5
CLR P0.6
CLR P0.7
CLR P2.0
CLR P2.1
CLR P2.2
CLR P2.3
CLR P2.4
CLR P2.5
CLR P1.0
LCALL OPOZNIENIE4S
SETB P0.0
SETB P0.2
SETB P0.3
SETB P0.5
SETB P0.6
SETB P0.7
SETB P2.0
SETB P2.1
SETB P2.2
SETB P2.3
SETB P2.4
SETB P2.5
SETB P1.0
LJMP START
RETI
OPOZNIENIE1S:
WARTOSC1:
MOV R0,#10
WARTOSC2:
MOV R1,#200
WARTOSC3:
MOV R2,#250
DJNZ R2,$
DJNZ R1,WARTOSC3
DJNZ R0,WARTOSC2
RET
OPOZNIENIE4S:
WARTOSC7:
MOV R0,#40
WARTOSC8:
MOV R1,#200
WARTOSC9:
MOV R2,#250
DJNZ R2,$
DJNZ R1,WARTOSC9
DJNZ R0,WARTOSC8
RET
OPOZNIENIE:
WARTOSC4:
MOV R3,#1
WARTOSC5:
MOV R4,#1
WARTOSC6:
MOV R5,#1
DJNZ R5,$
DJNZ R4,WARTOSC6
DJNZ R3,WARTOSC5
RET
END