Red de conocimiento del abogados - Respuesta jurídica de la empresa - ¡Diseño del curso de cronómetro MCU, se necesita con urgencia! ! ! !

¡Diseño del curso de cronómetro MCU, se necesita con urgencia! ! ! !

El diagrama esquemático es el siguiente,

el programa es el siguiente:

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

; p>; === ============================================ ==

LED_BUF EQU 50H; Mostrar datos primera dirección

COUNTER_INT EQU 3BH; Contador de interrupciones

SEGUNDA EQU 3DH; ===== ============================================;

;Definición constante

;================================= ====== =========== CN_COUNT_INT ?EQU ?100; 10ms * 100 = 1S SET_MODEL EQU 0FFH; Modo de decodificación completo SET_BRIGHT EQU 04H; EQU 01H; Modo de visualización de 2 bits; SET_NORMAL EQU 01H; Modo de prueba SET_START EQU 01H; ¿Ingresar al modo de funcionamiento de inicio?

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

;Definición de asignación de PIN

;= === ============================================== m7219_DIN BIT P3.0 m7219_LOAD BIT P3.1 m7219_CLK BIT P3.2 KEYSTART BIT P1.0 KEYRESET BIT P1.1

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

Programa principal de simulación

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

org 0000h

ajmp principal

ORG 000BH

LJMP Timer0Interrupt

org 0030h

principal:?

mov sp, #70h

lcall Init_M7219

lcall InitTimer0

; MOV SEGUNDO, #95H?; p>Bucle:

CALL disp

key_reset:

SETB KEYRESET

JB KEYRESET, key_start

; DELAY

p>

NOP

NOP

NOP

JB KEYRESET, key_start

JNB KEYRESET, $

CLR ?TR0

MOV A, #0

MOV SEC

OND, A

MOV led_buf, A

MOV LED_BUF 1, A

JMP key_SCAN_END

key_start:

SETB KEYSTART

JB KEYSTART, key_SCAN_END

DELAY

NOP

NOP

NOP

JB KEYSTART, key_SCAN_END

JNB KEYSTART,$

SETB ?TR0

key_SCAN_END: ​​​​

bucle JMP

============================================< / p>

InitTimer0:; interrumpir una vez cada 10ms

MOV TMOD, #01H

MOV TH0, #0D8H

MOV TL0, #0F0H

SETB EA

SETB ET0

RET

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

Temporizador0Interrupción:

PUSH DPH

PUSH DPL

PUSH ACC

MOV TH0, #0D8H

MOV TL0, #0F0H

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

INC COUNTER_INT

MOV ?A, COUNTER_INT el valor del recuento aumenta en 1 en 10 ms

CJNE ?A, #CN_COUNT_INT, Timer0Interrupt_EXIT

MOV ?COUNTER_INT, #0

MOV A, SEGUNDO

CJNE ?A, #99H, Timer0Int_sec

CLR TR0; desactivar el tiempo

JMP Timer0Interrupt_EXIT

Timer0Int_sec:

AGREGAR A, #01; ?

DA A

MOV ?SEGUNDO, A

INTERCAMBIO A

ANL A, #0fH

MOV led_buf, A

MOV A, SEGUNDO

ANL A, #0FH

MOV LED_BUF 1, A

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

Timer0Interrupt_EXIT:

POP ACC

POP DPL

POP DPH

RETI

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

; inicializar max719

; p><

p>; entrada: ------------

; salida: ---------- ?

; b

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

Init_M7219: ?Inicializar Max7219

MOV a, #0bh ?;Establecer límite de escaneo

MOV b , #set_limit; establece el número de bits

lcall w_7219

MOV a, #09h?; establece el modo de decodificación

MOV b, #set_model 00h; no es el modo de código traducido; ffh es el modo de decodificación BCD

lcall w_7219

MOV a, #0ah?; Establecer brillo

MOV b, #set_bright 15; /32 Brillo

lcall w_7219

MOV a, #0fh ?; Establecer modo de trabajo

MOV b, #set_normal modo de trabajo

<; p> lcall w_7219

MOV a, #0ch ?; Ingresar al modo de inicio

MOV b, #set_start

lcall ?w_7219

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

; función: disp?; mostrar subrutina

; entrada: r0

; ------

; uso: r0, r3, r4, a, b

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

disp:

MOV r0, #led_buf

MOV r4, #01h

MOV r3, #set_limit

INC r3

disp1:

p>

MOV a, @r0

MOV b, a

MOV a, r4

lcall w_7219

INC r0

INC r4

djnz r3, disp1

RET?

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

; ; controlador de pantalla;

; entrada: a ?; transmitir la dirección de 7219

; transmitir los datos de 7219

; ----------

; uso: a, r2

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

w_7219:

CLR M7219_clk

CLR M7219_din

CLR ?M7219_load; establecer carga=0

lcall ?sd_721

9?;Transferir la dirección de 7219

MOV a, b?

lcall sd_7219?;Transmitir datos

setb M7219_load?;Carga de datos

CLR M7219_din

RET

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

; función: sd_7219?; Subrutina para transmitir datos o dirección a 7219

; entrada: a

; salida: ? max7219

; uso: ? a, r2

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

sd_7219: ?; dirección al 7219 o datos

MOV r2, #08h ?

c_sd:?

CLR C

CLR M7219_clk

RLC a

MOV M7219_din, c; preparar datos

NOP

setb M7219_clk en flanco ascendente

NOP

p>

NOP

CLR M7219_clk

djnz r2,c_sd

RET END