原创 93AA46控制子程序

2006-11-29 00:23 2840 5 5 分类: MCU/ 嵌入式

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


93AA46控制子程序


                                                


一、93AA46与单片机的接口电路


              


                    VCC         


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />       AT<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />89C2051                   


                                              93AA46


            P1.0              CS


            P1.1              DI


            P1.2              CLK


            P1.3              DO


            P1.4              ORG



     93AA46ORG=1´16结构)时的命令集



   


S


命令码


   


DI


DO


        READ


1


10


A5A4A3A2A1A0



D15~D0


擦写使能  EWEN


1


00


1  1  X  X  X  X



高阻


擦除      ERASE


1


11


A5A4A3A2A1A0



RDY/BSY


片擦除    ERAL


1


00


1  0  X  X  X  X



RDY/BSY


        WRITE


1


01


A5A4A3A2A1A0


D15~D0


RDY/BSY


片写      WRAL


1


00


0  1  X  X  X  X


D15~D0


RDY/BSY


擦写禁止  EWDS


1


00


0  0  X  X  X  X



高阻


 


二、控制子程序清单


* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


1RD_DB    16位数据子程序


2WD_DB    16位数据子程序


3WR_B     送命令及地址子程序


4RD        16位数据子程序


5EWDS     擦写禁止子程序


6EREN     擦写使能子程序


* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


I/O口定义


CS    EQU   P1.0


DI    EQU   P1.1


DO   EQU   P1.3


CLK  EQU   P1.2


OG   EQU   P1.4


;读16位数据子程序,待读出数据地址在R3中,读出的16位数据存在20H


21H中。


 


 



RD_DB CLR CS           ;复位93AA46


SETB CS         


CLR CLK       


SETB OG        ;选´16数据结构


RD_DB1 JB DORD_DB1  ;检查93AA46是否正在进行写操作


MOV R7#20H   ;数据存放首址送R7


MOV AR3      ;将待读出数据地址送A累加器(低6位)


          ORL A#80H     READ命令码送A累加器高2


LCALL WR_B      ;送命令及地址


          LCALL RD        ;读16位数据并送20H21H


          CLR CS


          SETB CS


          RET


WR_B  SETB DI         ;送起始位


SETB CLK


CLR CLK


WR_B1  MOV R0#08H   ;送命令及地址


WR_B2  RLC A


          MOV DIC


          SETB CLK


          CLR CLK


          DJNZ R0WR_B2


          RET


RD      MOV R1#02H    ;读16位数据


RD1     MOV R0#08H    


RD2    SETB CLK


           CLR CLK


MOV CDO


RLC A


          DJNZ R0RD2


          MOV @R7A


          INC R7


          DJNZ R1RD1


          RET


;写16位数据子程序。待写入数据地址在R3中,写入的16位数据存在20H]


21H中。F0为写成功与否标志,F0=0,写成功;F0=1,写失败。


WR_DB CLR CS             ;复位93AA46


SETB CS


CLR CLK


SETB OG          ;选´16数据结构


CLR F0


JNB DOWR_DB1   DO=093AA46准备好  


                  

SETB F0             DO=11®F0后返回


          RET


WR_DB1LCALL EWEN       ;送擦写使能命令


MOV AR3         ;将待写入数据地址送A累加器(低6位)


          ORL A#40H        ;送写命令及地址


LCALL WR_B


MOV R7#20H


MOV A@R7       ;写数据(16位)


LCALL WR_B1


INC R7


MOV A@R7


LCALL WR_B1


CLR CS             ;启动写周期


SETB CS


RET


;擦写禁止子程序


EWDS  CLR CS


SETB CS


MOV A#00H       ;送擦写禁止命令


LCALL WR_B


          CLR CS


          SETB CS


RET


 ;擦写使能子程序


EREN   CLR CS


SETB CS


MOV A#30H       ;送擦写使能命令


LCALL WR_B


CLR CS


SETB CS


RET


 


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条