微處理器以字節(jié)為單位,讀寫X24C45的程序如下:SKBITP1.5;SK接在P1.5口CEBITP1.6;CE接在P1.6口DIOBITP1.7;DI與DO接在P1.7口WRDSEQU80H;各個指令字STOEQU81HENASEQU82HWRITEEQU83HWRENEQU84HRCLEQU85HREADEQU86HDATAHIEQUR0;數(shù)據(jù)的高位寄存器DATALOEQUR1;數(shù)據(jù)的低位寄存器ADDREQUR2;地址寄存器COUNTEQUR3;計數(shù)器INSTEQUR4;命令寄存器ORG0000H;程序復(fù)位地址LJMPBEGINORG0100H;程序起始地址BEGINMOVSP,#60H;初始化堆棧
微處理器以字節(jié)為單位,讀寫X24C45的程序如下:
SK BIT P1.5 ;SK接在P1.5口
CE BIT P1.6。籆E接在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 ;數(shù)據(jù)的高位寄存器
DATALO EQU R1 ;數(shù)據(jù)的低位寄存器
ADDR EQU R2 ;地址寄存器
COUNT EQU R3 ;計數(shù)器
INST EQU R4 ;命令寄存器
ORG 0000H ;程序復(fù)位地址
LJMP BEGIN
ORG 0
100H ;程序起始地址
BEGIN
MOVSP,#60H ;初始化堆棧指針
CLR CE ;復(fù)位控制信號
CLR SK
CLR DIO
MOV A,#RCL ;進行一次調(diào)出操作以便設(shè)置“先前調(diào)用”鎖存器
MOV INST,A
SETB CE
LCALL OUTBYT
CLR CE
MOV A,#WREN ;設(shè)置“寫允許”鎖存器
MOV INST,A
SETB CE
LCALL OUTBYT
CLR CE
MOV A,#05H ;讀地址5中的內(nèi)容,并保在寄存器DATALO與DATAHI中
MOV ADDR,A
LCALL RDWRD
MOV A,#
09H ;將前面地址5中讀出的內(nèi)容寫入地址9中
MOV ADDR,A
LCALL WDWRD
MOV A,#STO ;進行一次存儲操作
MOV INST,A
SETB CE
LCALL OUTBYT
CLR CE
DONE: LJMP DONE ;循環(huán)直到復(fù)位
;將寄存器DATALO與DATAHI中的內(nèi)容寫入X24C45,地址由寄存器ADDR指定。
WRWRD SET CE。粚⒓拇嫫鱀ATALO與DATAHI中的內(nèi)容寫入寄存器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 ;輸出數(shù)據(jù)的高字節(jié)
MOV A,DATALO
MOV INST,A
LCALL OUTBYT ;輸出數(shù)據(jù)的高字節(jié)
CLR CE
RET
;讀由寄存器ADDR指定的地址中的內(nèi)容,并存入寄存器DATALO與DATAHI中。
RDWRD: SET CE ;讀寄存器ADDR指定的地址中內(nèi)容
MOV A,ADDR
RL A ;將地址編入指令中
RL A
RL A
ORL A,#READ
MOV INST,A
LCALL SEND7 ;送出7位指令字
SETB DIO
LCALL CLOCK ;設(shè)置時鐘為讀數(shù)據(jù)作準(zhǔn)備
MOV COUNT,#10H;讀進
16位數(shù)據(jù)