导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→Lichunfu,你的程序我改动如下,怎么还是不行,莫非是硬

* 37896: x5045程序设计

   baolqkun 
baolqkun发表的帖子 

 Lichunfu,你的程序我改动如下,怎么还是不行,莫非是硬件有问题???
SCK   BIT P2.0  ;X5045时钟
SDI   BIT P1.7  ;X5045串行数据输入线
CS50  BIT P2.2  ;X5045片选信号, "0"有效
SDO   BIT P2.1  ;X5045串行数据输出线
;X5045 命令定义
WREN   EQU 06H  ;写使能命令(置位写使能锁存器)
WRDI   EQU 04H  ;写保护命令(复位写使能锁存器)
RDSR   EQU 05H  ;读状态寄存器命令
WRSR   EQU 01H  ;写状态寄存器命令
READD   EQU 03H  ;读数据命令(其中D3为数据地址A8)
WRITED  EQU 02H  ;写数据命令(其中D3为数据地址A8)
;*******************************************************************

ORG 00H
 LJMP MAIN
MAIN:
 NOP
 LCALL WRSRWDT
 LCALL WRDROM
 LCALL RDDROM
 LCALL CLRWDT
 LJMP  MAIN
;*****************************************************************
;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, #00
 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,#00
 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

END

发表时间:2003年7月22日16:56:08

  
回复该帖

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

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

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

  37900.[详细]关于LICHUNFU的程序改动,你发我了,我的程序是经过硬件测试完全通过的,不过注释不是太完整。我..
摘要:关于LICHUNFU的程序改动,你发我了,我的程序是经过硬件测试完全通过的,不过注释不是太完整。我是直接在PCB板上做的测试,未曾使用过仿真器......(131字)
- [APEARLIU][986次] 2003年7月22日

  37913.[详细]马虎,马虎,自己的错误,我把cs,sdi给整反了,后来终于查到了,不过还是谢谢大家!..
摘要:......(无内容)
- [baolqkun][1294次] 2003年7月22日

[上一篇帖子]:这句话在PCI SEPC 2.1版的第42页第一行
[下一篇帖子]:请教老古:关于您的PCI开发板在你的PCI开发板的CPLD的设计里,IRDY#信号是用一个叫做ONE