微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 2051对X25045的写入和读出汇编程序

2051对X25045的写入和读出汇编程序

时间:10-12 来源:互联网 点击:
;*************************************************************
;* title: X25045
;*实现2051对 X25045 的写入和读出,及看门狗超时周期的设置。
;* version: 1.0
;* last date: 01.03.27
;* target: At89c2051 at 12Mhz
;* design by: Heyuesheng 010-64889568
;*************************************************************
;**** define register ****

;**** code


ORG 0000H
AJMP START

ORG 0040H
START: MOV SP,#60H
MOV R0,#10H;将状态寄存器置为 00010000(即无写保护,看门狗超时周期为 600 毫秒)
ACALL WRSR

TEST:
MOV R0,#89H;定义R0 为写入的数据(89H)
MOV R1,#00H;定义R1 为写入数据的地址(00H)
ACALL WRITE

MOV R0,#51H;定义R0 为写入的数据(51H)
MOV R1,#01H;定义R1 为写入数据的地址(01H)
ACALL WRITE

MOV R1,#00H;定义R1 为读出数据的地址(00H)
ACALL READ
MOV R4,A;将读出的数据存入 R4

MOV R1,#01H;定义R1 为读出数据的地址(01H)
ACALL READ
MOV R5,A;将读出的数据存入 R5

SJMP TEST
;*******本子程序写状态寄存器
;*入口参数:R0
WRSR: SETB P1.4
MOV R7,#10H
ACALL DELAY
CLR P1.4

MOV A,#01H;写状态寄存器指令
ACALL SIN

MOV A,R0;将状态寄存器置为 R0 的值
ACALL SIN

SETB P1.4
RET


;*******写使能子程序
;*入口参数:无
WREN: SETB P1.2 ;将 WP 写保护管脚置高,打开写保护。
SETB P1.4
MOV R7,#10H
ACALL DELAY
CLR P1.4

MOV A,#06H;写使能指令
ACALL SIN

SETB P1.4
RET

;*******写入子程序
;*入口参数:
;*R0 要写入的数据
;*R1 要写入的地址
WRITE: ACALL WREN

SETB P1.4
MOV R7,#10H
ACALL DELAY
CLR P1.4
MOV A,#02H;写指令
ACALL SIN

MOV A,R1;写入数据的开始地址
ACALL SIN

MOV A,R0;将 RO 的值写入地址为 R1的单元
ACALL SIN

SETB P1.4
RET


;*******读出子程序
;*R1 要读出数据的地址
READ: SETB P1.4
MOV R7,#10H
ACALL DELAY
CLR P1.4

MOV A,#03H;读指令
ACALL SIN
MOV A,R1;读以 R1 为地址的数据
ACALL SIN

ACALL SOUT
MOV R0,A

SETB P1.4
RET

;*******串行写入
SIN: MOV R3,#8
LOOP1: RLC A
MOV P1.1,C
SETB P1.0
CLR P1.0
DJNZ R3,LOOP1
RET
;*******串行读出
SOUT: MOV R3,#8
MOV A,#00H
LOOP2: CLR C
MOV C,P1.3
RLC A
SETB P1.0
CLR P1.0
DJNZ R3,LOOP2
RET
;*******延时子程序
;*入口参数:R7
DELAY: MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,DELAY
RET

END

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top