微处理器以字节为单位,读写X24C45的程序如下:SKBITP1.5;SK接在P1.5口CEBITP1.6;CE接在P1.6口DIOBITP1.7;DI与DO接在P1.7口WRDSEQU80H;各个指令字STOEQU81HENASEQU82HWRITEEQU83HWRENEQU84HRCLEQU85HREADEQU86HDATAHIEQUR0;数据的高位寄存器DATALOEQUR1;数据的低位寄存器ADDREQUR2;地址寄存器COUNTEQUR3;计数器INSTEQUR4;命令寄存器ORG0000H;程序复位地址LJMPBEGINORG0100H;程序起始地址BEGINMOVSP,#60H;初始化堆栈
微处理器以字节为单位,读写X24C45的程序如下:
SK BIT P1.5 ;SK接在P1.5口
CE BIT P1.6 ;CE接在P1.6口
DIO BIT P1.7 ;DI与DO接在P1.7口
WRDS EQU 80H ;各个指令字
STOEQU 81H
ENAS EQU 82H
WRITE EQU 83H
WREN EQU 84H
RCLEQU 85H
READ EQU 86H
DATAHI EQU R0 ;数据的高位寄存器
DATALO EQU R1 ;数据的低位寄存器
ADDR EQU R2 ;地址寄存器
COUNT EQU R3 ;计数器
INST EQU R4 ;命令寄存器
ORG 0000H ;程序复位地址
LJMP BEGIN
ORG 0
100H ;程序起始地址
BEGIN
MOVSP,#60H ;初始化堆栈指针
CLR CE ;复位控制信号
CLR SK
CLR DIO
MOV A,#RCL ;进行一次调出操作以便设置“先前调用”锁存器
MOV INST,A
SETB CE
LCALL OUTBYT
CLR CE
MOV A,#WREN ;设置“写允许”锁存器
MOV INST,A
SETB CE
LCALL OUTBYT
CLR CE
MOV A,#05H ;读地址5中的内容,并保在寄存器DATALO与DATAHI中
MOV ADDR,A
LCALL RDWRD
MOV A,#
09H ;将前面地址5中读出的内容写入地址9中
MOV ADDR,A
LCALL WDWRD
MOV A,#STO ;进行一次存储操作
MOV INST,A
SETB CE
LCALL OUTBYT
CLR CE
DONE: LJMP DONE ;循环直到复位
;将寄存器DATALO与DATAHI中的内容写入X24C45,地址由寄存器ADDR指定。
WRWRD SET CE ;将寄存器DATALO与DATAHI中的内容写入寄存器ADDR指定的地址中
MOV A,ADDR
RL A ;将地址加入指令中
RL A
RL A
ORL A,#WRITE
MOV INST,A
LCALL OUTBYT ;输出写指令
MOV A,DATAHI
MOV INST,A
LCALL OUTBYT ;输出数据的高字节
MOV A,DATALO
MOV INST,A
LCALL OUTBYT ;输出数据的高字节
CLR CE
RET
;读由寄存器ADDR指定的地址中的内容,并存入寄存器DATALO与DATAHI中。
RDWRD: SET CE ;读寄存器ADDR指定的地址中内容
MOV A,ADDR
RL A ;将地址编入指令中
RL A
RL A
ORL A,#READ
MOV INST,A
LCALL SEND7 ;送出7位指令字
SETB DIO
LCALL CLOCK ;设置时钟为读数据作准备
MOV COUNT,#10H;读进
16位数据