导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→我有一个,写得不怎么样,但可以用,供你参考;

* 37826: x5045程序设计

   Lichunfu 
Lichunfu发表的帖子 

 我有一个,写得不怎么样,但可以用,供你参考;
SCK  BIT P1.5  ;X5045时钟
SDI  BIT P1.6  ;X5045串行数据输入线
CS50  BIT P1.7  ;X5045片选信号, "0"有效
SDO  BIT P3.2  ;X5045串行数据输出线
;X5045 命令定义
WREN  EQU 06H  ;写使能命令(置位写使能锁存器)
WRDI  EQU 04H  ;写保护命令(复位写使能锁存器)
RDSR  EQU 05H  ;读状态寄存器命令
WRSR  EQU 01H  ;写状态寄存器命令
READD  EQU 03H  ;读数据命令(其中D3为数据地址A8)
WRITED  EQU 02H  ;写数据命令(其中D3为数据地址A8)
;*******************************************************************
;X5045 WatchDog应用程序集
;===================================================================
;功能:向X5045串行输出8Bit数据
;入口参数:A=数据
;出口参数:(无)
;影响资源:A、R6
;占用堆栈:2
;===================================================================
SDO8B:
 MOV R6, #08H
SDO8B0:
 CLR SCK
 RLC A
 MOV SDI, C
 SETB SCK
 DJNZ R6, SDO8B0
 RET
;===================================================================
;功能:从X5045串行读出8Bit数据
;入口参数:(无)
;出口参数:A=数据
;影响资源:A、R6
;占用堆栈:2
;===================================================================
SDI8B:
 SETB SCK
 MOV R6, #8
SDI8B0:
 SETB SDO
 CLR SCK
 NOP
 MOV C, SDO
 RLC A
 SETB SCK
 DJNZ R6, SDI8B0
 RET
;===================================================================
;功能:检查WIP标志,只到WIP标志无效时退出
;入口参数:(无)
;出口参数:(无)
;影响资源:A、R6、R7
;占用堆栈:4
;===================================================================
CHKWIP:
 MOV R7, #200  ;设置最大循环次数
CHKWIP0:
 CLR SCK
 CLR CS50
 MOV A, #RDSR
 CALL SDO8B
 CALL SDI8B
 SETB CS50
 SETB SCK
 JNB ACC.0, CHKWIP1
 DJNZ R7, CHKWIP0
CHKWIP1:
 RET
;===================================================================
;功能:写X5045控制字节
;入口参数:ROMData=控制字节
;出口参数:(无)
;影响资源:A、R6、R7
;占用堆栈:8
;===================================================================
WRSRWDT:
 CLR SCK
 CLR CS50
 MOV A, #WREN
 CALL SDO8B
 SETB CS50
 NOP
 CLR CS50
 MOV A, #WRSR
 CALL SDO8B
 MOV A, ROMData
 CALL SDO8B
 SETB CS50
 SETB SCK
 CALL CHKWIP
 RET
;===================================================================
;功能:向X5045写入一字节数据
;入口参数:ROMData=数据、DPTR=数据存储地址
;出口参数:(无)
;影响资源:A、PSW、R6、R7
;占用堆栈:8
;===================================================================
WRDROM:
 CLR SCK
 CLR CS50
 MOV A,#WREN
 CALL SDO8B  ;允许写
 SETB CS50
 NOP
 CLR CS50  ;激活写操作
 MOV A, DPH
 RRC A
 MOV A, #WRITED
 MOV ACC.3, C ;插入地址第8位
 CALL SDO8B
 MOV A, DPL
 CALL SDO8B  ;写入存储地址
 MOV A, ROMData
 CALL SDO8B  ;写入数据
 SETB CS50  ;结束写操作
 SETB SCK
 CALL CHKWIP
 RET
;===================================================================
;功能:从X5045读出一字节数据
;入口参数:DPTR=数据存储地址
;出口参数:A=数据
;影响资源:A、PSW、R6
;占用堆栈:4
;===================================================================
RDDROM:
 MOV A, DPH
 RRC A
 CLR SCK
 CLR CS50
 MOV A, #READD
 MOV ACC.3, C
 CALL SDO8B  ;送读数据命令和第8位地址
 MOV A, DPL
 CALL SDO8B  ;送数据低8位地址
 CALL SDI8B  ;读取数据
 SETB CS50
 SETB SCK
 RET
;===================================================================
;功能:清除WatchDog定时器
;入口参数:(无)
;出口参数:(无)
;影响资源:A、DPTR、PSW、R6
;占用堆栈:4
;===================================================================
CLRWDT:
 CLR CS50
 NOP 
 SETB CS50
 RET


发表时间:2003年7月22日10:20:55

  
回复该帖

本主题共有 14 帖,分页:>>>>>该主题的所有内容[14]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  37834.[详细]下面是一个测试成功的程序,请试验,若不能成功,请在上电后延时2秒后再进行读写,是否成功,都请回复,..
摘要:下面是一个测试成功的程序,请试验,若不能成功,请在上电后延时2秒后再进行读写,是否成功,都请回复,谢谢 ;**************************************************************......(2540字)
- [APEARLIU][1071次] 2003年7月22日

  71892.[详细][原创]大侠我的X5045调不通啊,数据读出总是零
摘要:找不出错误,硬件没有问题阿,有没有哪位大侠,把主程序调用的过程发上来瞧瞧,找不出问题啊,急死了[em00]......(100字)
- [lvbin1980][1274次] 2005年1月21日

  37896.[详细]Lichunfu,你的程序我改动如下,怎么还是不行,莫非是硬件有问题???..
摘要:SCK   BIT P2.0  ;X5045时钟 SDI   BIT P1.7  ;X5045串行数据输入线&......(3645字)
- [baolqkun][1375次] 2003年7月22日

[上一篇帖子]:帮一下大虾们,现在有没有人可以帮一下我这个新手呀,我要用PIC编一个程序,很多麻烦,可以帮我一下吗?
[下一篇帖子]:实际耗散功率应该这样算。输入电压Vin,输入电流Iin,输入功率Pz=Vin*Iin;输出电压Vo,