Red de conocimientos turísticos - Información de alquiler - Cómo programar semáforos usando cmP (Omron)

Cómo programar semáforos usando cmP (Omron)

Selección del microcontrolador de origen: AT89S52

Código de programa

ORG 0000H

AJMP START

ORG 0003H

p>

LJMP INT00

ORG 0013H

LJMP INT10

INICIO: MOV SP, #60H

SETB EX0

p>

SETB EX1

SETB EA

; LCALL ST00

PRINCIPAL: LCALL ST10

LCALL ST20

LCALL ST30

LCALL ST40

LJMP PRINCIPAL

ST00: MOV A, #00

MOV P2, A

p>

ST10: MOV R7, #30

ST11: MOV R0, #0DEH

MOV P2, R0

LCALL DELAY1S

RET

ST20: MOV R4, #05

ST21: MOV R0, #0DDH

MOV P2, R0

MOV R5, #05

L22: LCALL DELAY01S; retardo 0.5S

DJNZ R5, L22

MOV R0, #0DFH

MOV P2, R0

MOV R5, #05

L23: LCALL DELAY01S; retardo 0.5S

DJNZ R5, L23

DJNZ R4, ST21

RET

ST30: MOV R7, #20

MOV R0, #0F3H

MOV P2, R0

LCALL DELAY1S

RET

ST40: MOV R4, #05

ST41: MOV R0, #0EBH

MOV P2, R0

MOV R5, #05

L42: LCALL DELAY01S; retardo 0.5S

DJNZ R5, L42

MOV R0, #0FBH

MOV P2, R0

MOV R5, #05

L43: LCALL DELAY01S; retardo 0.5S

DJNZ R5, L43

DJNZ R4, ST41

; JMP ST10

RET

DELAY1S: MOV R3, # 50; número de ciclos de 20ms (50 veces)

CLR A

DIS0: MOV A, R7

LCALL X0

DJNZ R3, DIS0

DJNZ R7, DELAY1S

RET

DELAY01S: MOV R7, #05; R2 almacena el número de ciclos de 20 ms (5 veces)

CLR A

DIS1: MOV A, R4

LCALL X0

DJNZ R7, DIS1

RET

DELAY10MS: MOV R2, escaneo de teclas #20 subrutina de 10 ms;

DEL1: MOV R6, #248

DJNZ R6, $

DJNZ R2, DEL1

MOV R6, #00

MOV R2, #00

RET

TAB: DB 3FH, 06H, 5BH, 4FH

DB 66H, 6DH, 7DH, 07H

DB 7FH, 6FH, 77H, 7CH

DB 39H, 5EH, 79H, 71H

DB 40H, 00H

X0: MOV R6, A

MOV R1, #40H R3, R4, R5,

MOV A, R6

MOV B, #10

DIV AB

MOV @R1,A

INC R1

MOV @R1,B

MOV DPTR,#TAB< / p>

MOV A, @R1

MOVC A, @A DPTR

MOV P0, A

CLR P3.7

LCALL DELAY10MS

SETB P3.7

DEC R1

MOV DPTR, #TAB

MOV A, @R1< / p>

MOVC A, @A DPTR

MOV P0, A

CLR P3.6

LCALL DELAY10MS

SETB P3.6

RET

INT00: MOV 36H, R7

PUSH 36H

MOV 37H, R0

PUSH 37H

MOV 39H, R3

PUSH 39H

MOV R7, #10; botón de emergencia, parada de tráfico norte y sur, ambos semáforos en rojo, duración de 10 Segundo.

MOV P2, #0DBH

RETARDO DE LLAMADA LC1S

POP 39H

POP 37H

POP 36H p>

MOV R7, 36H

MOV R0, 37H

MOV P2, R0

MOV R3, 39H

RETI

INT10: MOV 36H, R7; R7----XIANSHIMIAOSHU

PUSH 36H; R0----p2 ​​muestra el estado de la luz

MOV 37H, R0;

EMPUJAR 37H

MOV 38H, R6

EMPUJAR 38H

MOV 39H, R3

EMPUJAR 39H

; JNB P3.4, SV1

; JNB P3.5, SV2

; >SV1: MOV R7, #10; Hay mucho tráfico de norte a sur, cambie a dirección norte-sur

MOV R0, #0DEH

MOV P2, R0

LCALL DELAY1S

AJMP RETN

SV2: MOV R7, #10 hay mucho tráfico de este a oeste, así que cambie a la dirección de este a oeste

MOV R0, #0F3H

MOV P2, R0

LCALL DELAY1S

AJMP RETN

RETN: POP 39H

MOV R3, 39H

POP 38H

MOV R6, 38H

POP 37H

MOV R0, 37H

POP 36H

MOV R7, 36H

RETI