Zadanie brzmi tak:
Kod: Zaznacz cały
Przestrajany generator przebiegu prostokątnego
Zadania: zaprojektowanie układu, który posiada 3 mikrostyki, pierwszy – do skokowego
zwiększania częstotliwości, drugi – do skokowego zmniejszania częstotliwości, trzeci – do
zmiany zakresu (np. x10), określić zakres generowanych częstotliwości, wykonanie
układu z mikrokontrolerem 89C51/52 lub 89C1051/2051 na uniwersalnej płytce
drukowanej z wyprowadzonymi pinami.
Kod: Zaznacz cały
;poczatek wykonywania programu
ORG 0
;skocz do glownego prgramu
LJMP START
;obsługa przerwania od int0
ORG 0003H
LJMP INTEX0
;obsluga przerwania od int1
ORG 0013H
LJMP INTEX1
START:
CZAS_HIGH EQU 4CH ; starszy bajt ilości impulsów
CZAS_LOW EQU 0 ; młodszy bajt ilości impulsów
MOV P1,#0 ; zeruj wszystkie linie portu P2
; Programowanie trybu pracy timera 0
MOV TMOD,#00000001B ; timer 0 -> tryb 1, timer 1 -> nieużywany, tryb 0
; Programowanie ilości impulsów
MOV R1, #CZAS_LOW
MOV R2, #CZAS_HIGH
MOV TH0,R2
MOV TL0,R1
SETB TR0 ; uruchomienie licznika
PETLA:
JNB TF0,$ ; czekaj na zmianę flagi na '1'
CLR TF0 ; zeruj flagę przepełnia
CPL P2.0 ; neguj bit linii P2.0
; Ponowne programowanie ilości impulsów
MOV TH0,R2
MOV TL0,R1
;inicjacja przerwania
SETB EX0 ;zezwolenie na przerwanie int0
SETB EX1 ;zezwolenie na przerwanie int1
SETB EA ;globalne zezwolenie na przerwania
SJMP $
SJMP PETLA
;******************************************************
INTEX0:
MOV A,R2
MOV R2,#4CH
ADD A,R2
MOV R2,A
RETI
INTEX1:
MOV A,R2
MOV R2,#4CH
SUBB A,R2
MOV R2,A
RETI
END