Red de conocimientos turísticos - Conocimientos sobre calendario chino - Acerca del programa de ensamblaje del reloj del microcontrolador (preferiblemente diagrama esquemático de ISIS 7) CORREO ELECTRÓNICO: 545939772@qq.com

Acerca del programa de ensamblaje del reloj del microcontrolador (preferiblemente diagrama esquemático de ISIS 7) CORREO ELECTRÓNICO: 545939772@qq.com

Compile un programa, primero configure la hora del calendario del DS1302 en 2011-6-29?16:25:30 para comenzar y muestre la hora del calendario a través de la pantalla LCD en tiempo real.

Programación en lenguaje ensamblador:

¿T_RST? P1.2; ¿DS1302 restablece el pin de línea

bit T_CLK? P1.3; ¿Pin de línea de reloj DS1302?

¿T_IO? P1.4 ;PIN de línea de datos DS1302

RS BIT P1.7 ;Definición de línea de control LCD1602

RW BIT P1.6

E BIT P1.

;40h~46h almacena el valor inicial de "segundos, minutos, horas, días, meses, semanas, años"; el formato es coherente con el formato del registro

; 30h~3fh almacena los segundos, minutos, horas, días, meses, semanas y años leídos por 1302, el formato es el mismo que el del registro

;30h~3fh almacena los segundos, minutos. , horas, días y meses leídos por 1302 , semana, año; el formato es el mismo que en el registro

;30h~3fh almacena los segundos, minutos, horas, días, meses, semanas. , y años leídos hasta 1302.

El formato es el mismo que el registro

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

ORG?0000H

AJMP PRINCIPAL

ORG?0030H

MAIN:MOV SP,# 50H

ACALL?INIT

MOV A,#80H ;Escriba la dirección inicial del búfer de visualización en la primera fila y columna, y comience a mostrar el fecha:

ACALL?

ACALL?WC51DDR

MOV A,#'A' ?

ACALL?WC51DDR

MOV A,# 'T'

ACALL?WC51DDR

MOV A,#'E'

ACALL? p> MOV A,#0C0H ;Escriba la dirección inicial del búfer de visualización como fila 2, columna 1 para iniciar la visualización TIME:

ACALL?WC51R

MOV A,#'T' ?

ACALL?WC51DDR

MOV A,#'I'

ACALL?WC51DDR

MOV A,#'M'

ACALL ?p>

MOV A,#':'

ACALL?WC51DDR

MOV?40H,#30h; 46h son los valores iniciales

MOV?41H,#25h

MOV?42H,#16h

MOV?43H,#29h

MOV?44H,#06h

MOV?45H,#03 ?

MOV?H,#11h

LCALL SET1302?;Escribir fecha 11-06 -29, hora 16 a DS1302 :25:30?Miércoles

REP:LCALL GET1302

MOV A,#86H ;Escriba la dirección inicial de la primera línea del búfer de visualización, y la séptima columna muestra la fecha actual

REP:LCALL GET1302

MOV A,#86H ;Escriba la dirección inicial de la primera línea del búfer de visualización, y la séptima columna muestra la fecha actual

REP :MOV?H,#03 ?WC51R

MOV A,#'2'?

ACALL?WC51DDR

MOV A,#'0' ?

¿ACALL?

MOV A,36H; Divide el año en decenas y unidades, convierte los caracteres para mostrar

MOV B, #10H

DIV?AB

¿AÑADIR?A,#30H

¿ACALL?WC51DDR?

MOV?A,B

¿AÑADIR?A,#30H

ACALL?WC51DDR

MOV A,#'-' ?

ACALL?WC51DDR ?

MOV A,34H ;mes dividido en decenas y dígitos , convertir visualización de caracteres

MOV B,#10H

DIV?AB

ADD?A,#30H

ACALL?WC51DDR ?

MOV?A,B

¿AÑADIR?A,#30H

ACALL?WC51DD

R

MOV A,#'-' ?

ACALL?WC51DDR ?

MOV A,33H ; Divida el día en decenas y unidades, convierta los caracteres Mostrar

MOV B,#10H

DIV?AB

¿AÑADIR?A,#30H

ACALL?WC51DDR ?

MOV?A,B

ADD?A,#30H

ACALL?WC51DDR

MOV A,#0c6H ;Escribir para mostrar el buffer El inicio La dirección de la hora actual se muestra en la posición inicial de la fila 2 y la columna 7

ACALL?MOV B,#10H

DIV?AB

ADD? A,#30H

¿ACALL?WC51DDR?

MOV?A,B

¿AÑADIR?A,#30H

ACALL ?WC51DDR

MOV A,#':' ?

ACALL?WC51DDR ?

MOV A,31H ;dividir en decenas y dígitos, convertir visualización de caracteres

MOV B,#10H

DIV?AB

¿AÑADIR?A,#30H

ACALL?WC51DDR ?

MOV?A,B

¿AÑADIR?A,#30H

ACALL?WC51DDR

MOV A,#':' ?

ACALL?WC51DDR ?

MOV A,30H ; Divida los segundos en decenas y unidades, convierta los caracteres para mostrar

MOV B,#10H

DIV ?AB

¿AÑADIR?A,#30H

¿ACALL?WC51DDR ?

MOV?A,B

¿AÑADIR?A,# 30H

ACALL?WC51DDR

MOV A,#'?

ACALL?WC51DDR ?

MOV A,35H ;Mostrar semana

AÑADIR?A,#30H

ACALL?WC51DDR

LJMP?REP

;ESCRIBIR subrutina

;Función: Escriba un byte de DS1302, el contenido de la escritura está en el registro B

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

ESCRIBIR: ?MOV?50h,#8? ;Un byte tiene 8 bits, desplazado 8 veces

INBIT1:?MOV?A,?B

RRC?A ; Cambio a CY a través de A

MOV?B,?A

MOV?T_IO,?C ?Mover al chip

SETB?T_CLK

CLR?T_CLK

DJNZ?50h,INBIT1

RET

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

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

;nombre de subrutina SET1302

<

p> ;Función: Establece la hora inicial y el tiempo de inicio del DS1302

;Llamada: ESCRIBIR subrutina

;Parámetros de entrada: tiempo inicial segundos, minutos, horas, días, meses, semanas, año , la unidad es 40h~46h

;Parámetros de salida: Ninguno

;Recursos afectados: A?B?R0?R1?R4?R7?

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

SET1302:CLR?T_RST

CLR?T_CLK

SETB?T_RST

MOV?B, ?#8EH ;Palabra de comando de control

LCALL?WRITE

MOV B,?#00H ;Borrar el bit de protección contra escritura antes de la operación de escritura W

LCALL ?WRITE

SETB T_CLK

CLR T_RST

MOV R0,?#40H ?Segundos, minutos, horas, días, meses, en unidades de 40h a 46h Semanal y datos del año

MOV R7,?#7 ?***7 bytes

MOV R1,?#Escribe el segundo comando de registro

S13021:?T_RST

CLR?T_CLK

SETB?T_RST

¿MOV?WRITE?

MOV?A,?A, ?Escribir segundo dato

MOV?A

LCALL?WRITE

INC?R0 ;Apunta al siguiente calendario, escribe datos de reloj

INC?R1 ?R1 ;apunta al siguiente registro de calendario/reloj

INC?R1

SETB?T_CLK

CLR?T_RST

DJNZ? R7,?S13021 No completado, continúa escribiendo el siguiente

CLR?T_RST

CLR?T_CLK

SETB?T_CLK

R7,?S13021;ESCRIBIR?

SETB?#8EH ;Registro de control

LCALL?WRITE

MOV?B, ?#80H ;Escribir después Al ingresar, active el control de protección contra escritura y configure WP en 1

LCALL?WRITE

SETB?T_CLK

CLR?T_RST ;Finalizar proceso de escritura

RET

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

;GET1302 nombre de subrutina

;Función:Leer tiempo desde DS1302

;Llamada: ESCRIBIR subrutina de escritura, LEER subrutina

;Parámetros de entrada: Ninguno

;Parámetros de salida: segundos y minutos guardados en unidades de 30h~36h, hora, día, mes, semana, año

;Recursos afectados: A?B?R0?R1?R4?R7

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

GET1302:MOV ?R0,?#30H;

MOV R7,#7

MOV R1,#81H ?Comando de registro de cuenta regresiva

G13021:?CLR T_RST

CLR T_CLK

> SETB T_RST?

MOV B, ?R1 ; Escribir comando de registro de cuenta regresiva

LCALL ?WRITE?

LCALL ?READ

MOV ?@R0,A ;Almacenar los datos leídos

INC R0 ;Señalar la siguiente unidad de almacenamiento que guarda el calendario y el reloj

INC R1 ?INC R1

INC R1

SETB T_CLK?

CLR T_RST

DJNZ R7,?G13021 ;leer siguiente

RET

;Subrutina de inicialización de LCD

INIT: ?MOV?A,#00000001H ;Borrar pantalla

ACALL?WC51R

MOV A,#00111000B ; Utilice datos de 8 bits, muestre dos líneas, utilice fuente de 5×7

LCALL?WC51R

MOV A,#00001100B ;pantalla encendida, cursor apagado, los caracteres no parpadean WC51R?

LCALL?WC51R

MOV A,#00000110B? Los caracteres no se mueven, el cursor se mueve un fotograma hacia la derecha automáticamente

LCALL?WC51R

RET

;Comprobar subrutina ocupada

F_BUSY:PUSH?Live

MOV P2,#0FFH

CLR?RS

SETB?RW

ESPERAR: CLR E

SETB?E

JB P2.7,ESPERAR ?Ocupado,espera

POP?ACC ?No ocupado, reanudar sitio

RET

;Escribir subrutina de comando

WC51R:?ACALL?F_BUSY

CLR E

CLR?RS

CLR?RW

SETB?E

MOV?P2,ACC

CLR?E

RET

;Escribir subrutina de datos

WC51DDR :ACALL?F_BUSY

CLR E

SETB?RS

CLR?RW

SETB?E

MOV?P2,ACC

CLR?P2,ACC

¿CLR?

youzhishi.com" target="_blank">Red de conocimientos turísticos All Rights Reserved.