ORG 0
JMP START
ORG 30H
START: MOV TMOD,#00000010B ;časovač 0, mód 2
MOV TH0,#155 ;interval 100us při 12MHz
MOV TL0,#155
SETB EA ;povolení přerušení od časovače 0
SETB ET0
SETB TR0 ;spuštění časovače
KONEC: JMP KONEC ;nekonečná smyčka
;OBSLUHA PRERUSENI OD CASOVACE 0
ORG 0BH
JMP PRERUS
ORG 50H
PRERUS: CPL P1.1 ;negace stavu portu
RETI
END
ORG 0
JMP START
ORG 30H
START: MOV TMOD,#00000010B ;časovač 0, mód 2
MOV TH0,#55 ;interval 200us při 12MHz
MOV TL0,#55
SETB EA ;povolení přerušení od časovače 0
SETB ET0
TEST: JB P1.0,NASTAV ;test P1.0 na log.1
CLR TR0 ;při P1.0 v log.0 zastavení časovače,
CLR P1.1 nulování P1.1 a znovunastavení hodnoty
MOV TH0,#55 časovače
JMP TEST
NASTAV: SETB TR0 ;při P1.0 v log.1 zapnutí časovače
JMP TEST
KONEC: JMP KONEC
;
;OBSLUHA PRERUSENI
ORG 0BH
JMP PRERUS
ORG 50H
PRERUS: SETB P1.1 ;po 200us nastaví P1.1 do log.1
RETI
END
ORG 0
JMP ZACAT
ORG 30H
ZACAT: MOV TMOD,#00010010B ;časovač 1-mód 1, časovač 0-mód 2
CLR P1.0
CLR P1.1
TEST: JB P1.1,START ;test log.1 na P1.1
JMP TEST
START: MOV TH1,#11111110B ;interval 500us
MOV TL1,#00001100B
SETB EA
SETB ET1
SETB TR1
TEST2: JB 2FH.7,START2
JMP TEST2
START2: MOV TL0,#205 ;interval 50us
MOV TH0,#205
SETB ET0
SETB TR0
KONEC: JMP KONEC
;
;OBSLUHA PRERUS
;
ORG 1BH
JMP OBSLUHA1
ORG 60H
OBSLUHA1: SETB 2FH.7
CPL P1.0
CLR TR1
RETI
;
ORG 0BH
JMP OBSLUHA2
ORG 70H
OBSLUHA2: CPL P1.0
RETI
END
ORG 0
JMP START
ORG 30H
START: MOV R0,#0
MOV R1,#0
MOV TMOD,#00000010B
MOV TL0,#205
MOV TH0,#205
SETB EA
SETB ET0
SETB TR0
KONEC: JMP KONEC
;
;OBSLUHA PRERUSENI
;
ORG 0BH
JMP OBSL1
ORG 60H
OBSL1: CPL P1.0
INC R0
INC R1
CJNE R0,#2,TEST2
CPL P1.1
MOV R0,#0
TEST2: CJNE R1,#4,NAVRAT
CPL P1.2
MOV R1,#0
NAVRAT: RETI
END
© DH servis 2002 - |