|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
分担风雨、分担阳光,用汇编或懂汇编者请进了 |
作者:nongcunren 栏目:单片机 |
ORG 0000H AJMP MAIN ORG 0030H CS BIT P3.2 SCK BIT P3.3 SI BIT P3.4 SO BIT P3.5 X5045状态寄存器写入程序 功能:对状态寄存器进行设置。 入口:ACC是修改值。 WRSR:LCALL STAX PUSH ACC MOV A,#06H ;输出WREN LCALL BYTE_OUT LCALL STAX MOV A,#01H ;输出WRSR LCALL BYTE_OUT POP ACC ;输出设置值 LCALL BYTE_OUT LCALL ENDX LCALL WIP_CHK ;等待WIP=0 RET X5045状态寄存器读出程序 功能:读出状态寄存器当前值。 出口:ACC是当前值。 RDSR:LCALL STAX MOV A,#05H LCALL BYTE_OUT LCALL BYTE_IN LCAL ENDX RET 其他子程序 WIP_CHK:LCALL RDSR ;等待X25045结束内部写周期 JB ACC.0,WIP_CHK ;??????????????? RET STAX:SETB CS ;启动X25045指令 NOP ;先拉高CS,再拉你SCK,最后拉低CS CLR SCK NOP CLR CS NOP RET ENDX:CLR SCK ;结束X25045指令 SETB CS ;先拉低SCK后拉高CS NOP NOP RET BYTE_OUT:MOV R4,#08H ;向X25045写入一字节数据 BOUT1:CLR SCK RLC A MOV SI,C SETB SCK NOP NOP DJNZ R4,BOUT1 RET BYTE_IN:MOV R4,#08H ;从X25045读出一字节数据 BIN1:CLR SCK MOV C,SO RLC A SETB SCK NOP NOP DJNZ R4,BIN1 RET RST_DOG:SETB CS ;复位看门狗定时器 NOP CLR CS NOP SETB CS RET MAIN: MOV SP,#60H ACALL RST_DOG CLR A ACALL WRSR …… END 程序执行到?处就执行不下去了请大家不吝指点一二! |
2楼: | >>参与讨论 |
作者: nongcunren 于 2005/5/9 10:32:00 发布:
我改写后 ORG 0000H AJMP MAIN ORG 0030H CS BIT P3.2 SCK BIT P3.3 SI BIT P3.4 SO BIT P3.5 X5045状态寄存器写入程序 功能:对状态寄存器进行设置。 入口:ACC是修改值。 WRSR:LCALL STAX PUSH ACC MOV A,#06H ;输出WREN LCALL BYTE_OUT LCALL STAX MOV A,#01H ;输出WRSR LCALL BYTE_OUT POP ACC ;输出设置值 LCALL BYTE_OUT LCALL ENDX ;LCALL WIP_CHK ;等待WIP=0 RET X5045状态寄存器读出程序 功能:读出状态寄存器当前值。 出口:ACC是当前值。 RDSR:LCALL STAX MOV A,#05H LCALL BYTE_OUT LCALL BYTE_IN LCAL ENDX RET 其他子程序 WIP_CHK:LCALL RDSR ;等待X25045结束内部写周期 JB ACC.0,WIP_CHK RET STAX:SETB CS ;启动X25045指令 NOP ;先拉高CS,再拉你SCK,最后拉低CS CLR SCK NOP CLR CS NOP RET ENDX:CLR SCK ;结束X25045指令 SETB CS ;先拉低SCK后拉高CS NOP NOP RET BYTE_OUT:MOV R4,#08H ;向X25045写入一字节数据 BOUT1:CLR SCK RLC A MOV SI,C SETB SCK NOP NOP DJNZ R4,BOUT1 RET BYTE_IN:MOV R4,#08H ;从X25045读出一字节数据 BIN1:CLR SCK MOV C,SO RLC A SETB SCK NOP NOP DJNZ R4,BIN1 RET RST_DOG:SETB CS ;复位看门狗定时器 NOP CLR CS NOP SETB CS RET MAIN: MOV SP,#60H CLR P1.2;启动蜂鸣器 ACALL RST_DOG CLR A ACALL WRSR CPL CS 延时100MS …… END |
3楼: | >>参与讨论 |
作者: xuhuadong 于 2005/5/9 10:51:00 发布:
p3.5/=0 可以用示波器量p3.5的变化,应该4次移位后为低电平才退出,为高电平不退出 |
4楼: | >>参与讨论 |
作者: xuhuadong 于 2005/5/9 10:56:00 发布:
我分析错了, 应该是16sck变化,p3.5最后变0,如果不变,又发16sck, 用双总示波器分析,看硬件有没有问题,在分析软件 |
5楼: | >>参与讨论 |
作者: nongcunren 于 2005/5/9 11:09:00 发布:
谢谢了~ |
6楼: | >>参与讨论 |
作者: 王桂明 于 2005/5/9 13:11:00 发布:
您有OICQ吗?我的OICQ是53615227,我有个关于UPD6121的问题请教您 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |