Red de conocimientos turísticos - Información de alquiler - Diseño del curso de cronómetro MCU, ¡urgente! ! ! !

Diseño del curso de cronómetro MCU, ¡urgente! ! ! !

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 completa SET_BRIGHT EQU 04H ;Ciclo de trabajo 15/32 ;Brillo de pantalla ;SET_LIMIT 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

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

; simular el programa principal

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

org 0000h

ajmp principal

ORG 000BH

LJMP Timer0Interrupt

org 0030h

principal:?

MOV SP, #70H

lcall Init_M7219

lcall InitTimer0

MOV SEGUNDO, #95H?;

Bucle:

CALL disp

key_reset:

SETB KEYRESET

JB KEYRESET, key_start

; RETRASO

NOP

NOP

NOP

MOV SEGUNDO, #95H ?p>

<

p> NOP

JB KEYRESET, key_start

JNB KEYRESET, $

CLR ?TR0

MOV A, #0

MOV SEGUNDO, 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

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

InitTimer0:; interrupción de 10 ms

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; 10ms COUNTER_INT, #0

MOV ?COUNTER_INT, #0

MOV A, SEGUNDO

CJNE ?A, #99H, Timer0Int_sec

CJNE ?A, #99H , Temporizador0Int_sec

CLR TR TR, #99H, Temporizador0Int_sec

CJNE ?A, #99H, Temporizador0Int_sec

CJNE ?A, #99H, Temporizador0Int_sec

CLR TR0; desactivar el tiempo

JMP Timer0Interrupt_EXIT?

Timer0Int_sec:

¿AÑADIR A, #01; segundos más 1?

DA A

MOV ?SECOND, A

SWAP 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

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

; función: Init_M7219; Inicializar max719

; entrada: ------------

; -- ?

; Uso: a, b

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

Init_M7219: ;Inicializar Max7219

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

MOV b,#set_limit;establecer número de bits

lcall w_7219

MOV a,#09h ?establecer modo de decodificación

MOV b, #set_model; 00h modo sin decodificación; ffh es el modo de decodificación BCD

lcall w_7219

MOV a, #0ah?

MOV b, #set_bright; brillo 15/32

lcall w_7219

MOV a, #0fh ?Establecer modo de trabajo

MOV b, #set_normal ;Modo de funcionamiento normal

lcall w_7219

MOV a, #0ch ?; Entrar en modo de inicio

MOV b, #set_start

lcall ?w_7219

RET

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

; función: disp? función: mostrar subrutina

; /p>

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

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

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

disp:

MOV r0, #led_buf

MOV r4, #01h

MOV r3, #set_limit

INC r3

disp1:

MOV a, @r0

MOV b, a

MOV a, r4

lcall w_7219

INC r0

INC r4

djnz r3, disp1

RET?

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

; Función: w_7219; Controlador de pantalla;

;

?Transmitir la dirección de 7219

; b ?Transmitir los datos de 7219

; >; Uso: a, r2

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

w_7219.

CLR M7219_clk

CLR M7219_din

CLR ?M7219_load; set load=0

lcall ?sd_7219 ?Transmitir la dirección de 7219

MOV a, b?

lcall sd_7219 ?Transmitir datos

setb M7219_load ?; carga de datos

CLR M7219_din

RET

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

; transmitir datos o subrutina de dirección a 7219

; entrada: a

; salida: max7219

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

sd_7219: ? ; Enviar dirección o datos al 7219

MOV r2, #08h ?

c_sd: ?

CLR C

CLR M7219_clk

RLC a

MOV M7219_din, c; preparar datos

NOP

setb M7219_clk; datos sobre el flanco ascendente

NOP

NOP

NOP

CLR M7219_clk

djnz r2, c_sd

FINALIZAR RET