Red de conocimiento informático - Descarga de software - ¿Usar el chip Elan 153 para hacer una marquesina y encender y encender automáticamente las luces en secuencia?

¿Usar el chip Elan 153 para hacer una marquesina y encender y encender automáticamente las luces en secuencia?

Hardware: EM78P153, el pin 4 está conectado a 5 V, el pin 11 está conectado a tierra, un condensador 104 está conectado entre los pines 4-11, salida P60-P67

Software:

; =========================================== ====== ========================

;Nombre de archivo: LedRun.dt

;CPU: EM78P153S

Edición: 1.0

Fabricado por: yingang /burn_life

=============== === ================================================= === =====

; Definición de registro del sistema:

; ====================== === ================================================= =

IO_P5 equ 0x05; registro de control del puerto 5

IO_P6 equ 0x06; registro de control del puerto 6

IO_CONT equ 0; p> IO_PD equ 0x0b; registro de control PD (0 es válido) * P62 P61 P60 * P52 P51 P50

IO_PH equ 0x0d; registro de control PH (0 es válido) P60~P67 (excepto P63)

IO_OD equ 0x0c; registro de control OC P60~P67 (excepto P63)

IO_WDT equ 0x0e; registro de control WTD WDTE EIS * * * * * *

IO_IM equ; 0x0f; registro de máscara de interrupción * * * * * EXIE ICIE TCIE

;----------------------- ----- --------------------------------------------- ----- ---------------

PTRTARGET equ 0x00; resultado de direccionamiento indirecto

TCC equ 0x01; p>

PC equ 0x02; Contador de programa PC

ESTADO equ 0x03; Registro de estado GP PS1 PS0 T P Z DC C

PTR equ 0x04; p> PORT5 equ 0x05; registro de datos de Port5

PORT6 equ 0x06; registro de datos de Port6

INTF equ 0x0f;

TCIF

STARTADRESS equ 0x10

ENDADRESS equ 0x2f

;====================== ==================================================== ==

; Definición de variable de capa de aplicación:

delaycount1 EQU 0x21; para rutina de retraso

delaycount2 EQU 0x22; bitCount EQU 0x23; para Led_Run

shiftReg EQU 0x24

========================== ==================================================== =======

ORG 0000h

nop

jmp principal 3 encendido

***** ************************************************** * *****************************

;Borrar memoria

;* *** ************************************************* *******************************

Clr_Ram:

mov a, @0x10 ;78P153: Dirección inicial

mov PTR, a

otra vez:

clr PTRTARGET

mov a, PTR

inc PTR

and a, @0x2f

xor a, @0x2f; 78P153: dirección final

jbs STATUS, 2

jmp otra vez

ret

; =========================== ====== ============================================== ====== ==

; inicialización del puerto IO

; ======================= ======== =========================================== ======== ====

Init_CPUIO:

mov a, @11111111B; P6 no tiene pull-up

iow IO_PH

mov a, @ 11111111B; Sin menú desplegable

iow IO_PD

mov a, @00000000B Sin drenaje abierto

iow IO_OD;

mov a, @00000000B ;Puerto6 = bajo

mov PORT6, a

mov a, @00000000B ;

t

iow IO_P6

mov a, @00000000B

mov PORT5, a

mov a, @00000000B P5 salida 0;

iow IO_P5

clr INTF

ret

; ================ ==================================================== =================

;Programa de retraso

;=============== = ================================================== = ==================

Retraso150ms:

MOV A, @0XE0

Retardo MOV1, A

loop22:

MOV A, @0XFF

MOV delaycount2, A

loop11:

wdtc

nop

Retardo DJZ2

Bucle JMP11

Retardo DJZ1

Bucle JMP22

RET

;----------------------------------------- ---- --------------------------

;Programa de marquesina

;-- -------------------------------------------------- ------------------

Led_Run:

mov a, @8

mov bitCount, a

mov a, 0x01

mov shiftReg, a

Led_Left:

mov a, shiftReg salida a P6

mov PORT6, a

rlc shiftReg; desplazamiento a la izquierda

llamada Delay150ms; intervalo 150ms

djz bitCount

jmp Led_Left

;------------------------------------------

mov a, @8;

mov bitCount, a

Led_Right:

mov a, shiftReg

mov PORT6 , a ; Salida a P6

rrc shiftReg ; Desplazamiento a la derecha

call Delay150ms

djz bitCount

jmp Led_Right

p >

ret

org 0300H

;*************************** *** ****************************

*****************************

; Programa principal

***; ************************************************** * ****************************

Principal:

no

llamar a Clr_Ram

;------------------------------------ - ----------------------

llamar a Init_CPUIO

nop

MainLoop:

wdtc

llamar a Led_Run

jmp MainLoop

finalizar