×
FPGA/DSP > DSP系统 > 详情

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

发布时间:2020-06-28 发布时间:
|
;*************************************************************
;* 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 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
TMS320C6678处理器的VLFFT演示