您当前的位置:五五电子网电子知识单片机-工控设备51单片机AT93C46汇编读写示例程序(测试OK) 正文
AT93C46汇编读写示例程序(测试OK)

AT93C46汇编读写示例程序(测试OK)

点击数:7348 次   录入时间:03-04 11:38:25   整理:http://www.55dianzi.com   51单片机

AT93C46汇编读写示例程序; 说明: 软件包仅适用于93C46 8位存储器结构状态,软件包可嵌入到80C51 ROM中任一空间。
; fosc = 12MHz
;----------------------------------------------------------
    R31    EQU    1FH 
    
    CS    EQU    P1.0    ;片选端
    SK    EQU    P1.1    ;模拟时钟信号输出端
    DI    EQU    P1.2    ;串行数据输出端
    DO    EQU    P1.3    ;串行数据输入端
;----------------------------------------------------------
    ORG    0000H
    JMP    MAIN

    ORG    0100H
MAIN:
    MOV    R0,#7FH
    CLR    A
    MOV    @R0,A
    DJNZ    R0,$-2
    MOV    SP,#60H
MAIN1:
    MOV    R0,#30H
    MOV    R7,#16
    MOV    A,#1
    MOV    @R0,A
    INC    R0
    INC    A
    DJNZ    R7,$-3
            
    CALL    EWNE        ;擦写允许
    MOV    A,#01100000B    ;地址"11xxxxx"
    CALL    INADR        ;输出地址
    
    CALL    EWNE        ;片擦除(将整个存储器置为"1")
    MOV    A,#01000000B    ;片擦除地址
    CALL    INADREW        ;输出地址        
    CALL    DLY10ms    
    
    CALL    RD16        ;读指定地址单元的数据
            
    CALL    WRITE        ;将数据写入指定地址单元
    
    CALL    ERASE        ;擦除(将指定地址单元置为"1")    
    MOV    A,#01H        ;地址
    CALL    INADREW        ;输出地址        
    CALL    DLY10ms
    
    CALL    RD16        ;读
    
    CALL    EWNE        ;擦/写禁止
    MOV    A,#0        ;地址"00xxxxx"
    CALL    INADR        ;输出地址
        
    JMP    MAIN1
;==========================================================
;----------------------------------------------------------
;将存在80C51内RAM 30H为首地址的16字节数据依次写入93C46首址00H的EEPROM
;注意: 93C46上电复位后,芯片处于写保护状态,所以在擦写操作前,应开启"写允许".
;否则无法写入数据.

WRITE:    
    MOV    A,#01100000B    ;地址"11xxxxx"
    CALL    INADR        ;输出地址    
    MOV    R0,#30H        ;置源数据区首址
    MOV    R1,#00H        ;置93C46写入单元首址
    MOV    R7,#16        ;字节数
    CALL    WRIT6    
    RET
;----------------------------------------------------------
;将AT93C46 首址为00H的16字节数据读出并存入80C51以30H为首址的内RAM中

RD16:    MOV    R0,#20H        ;置数据存储区首址
    MOV    A,#00H        ;置93C46读出单元首地址    
    MOV    R7,#16        ;字节数送R7
    LCALL    STATRD        ;启动读
    LCALL    INADR        ;输出93C46读出单元首址
RD160:    
    LCALL    READ        ;读出一个字节数据
    MOV    @R0,A        ;存一个字节数据
    INC    R0        ;指向下一存储单元地址
    DJNZ    R7,RD160    ;判16字节数据读完否?未完继续
    CLR    CS        ;16字节数据读完,置93C46低功耗备用状态
    CALL    DLY10ms        ;延时10ms,以便进行芯片的其它功能操作
    RET
;----------------------------------------------------------
;入口: 数据区首址在R0,93C46单元地址在R1,写入的字节数在R7中
    
WRIT6:            
    LCALL    STATWR        ;启动写
    MOV    A,R1        ;置93C46写入单元地址
    LCALL    INADR        ;输出93C46写入地址单元
    MOV    A,@R0        ;读写入数据

[1] [2] [3]  下一页


本文关键字:程序  51单片机单片机-工控设备 - 51单片机