您当前的位置:五五电子网电子知识单片机-工控设备51单片机AT93C46的汇编读写软件程序 正文
AT93C46的汇编读写软件程序

AT93C46的汇编读写软件程序

点击数:7410 次   录入时间:03-04 11:56:25   整理:http://www.55dianzi.com   51单片机
;* ========================================================================== *
; 东哥 单片机 学习网  网址:  www.55dianzi.com
; 名称: AT93C46的汇编读写软件包
; 文件名: 93C46_8.ASM
; 程序模块已通过硬件仿真调试,方便实用.
;* ========================================================================== *
; 说明: 软件包仅适用于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        ;启动写

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


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