登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | 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
我改写后
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
p3.5/=0
可以用示波器量p3.5的变化,应该4次移位后为低电平才退出,为高电平不退出

4楼: >>参与讨论
xuhuadong
我分析错了,
应该是16sck变化,p3.5最后变0,如果不变,又发16sck,
用双总示波器分析,看硬件有没有问题,在分析软件

5楼: >>参与讨论
nongcunren
谢谢了~
 
6楼: >>参与讨论
王桂明
您有OICQ吗?我的OICQ是53615227,我有个关于UPD6121的问题请教您
 
参与讨论
昵称:
讨论内容:
 
 
相关帖子
XBYTE[0x7ff8]  这个地址是怎么得到的啊??? 请指教!!!
面试时要我做一个编程题,发上来大家看看!
新手急急求教128×64液晶问题
外面的電子鐘表都成本5塊 ?
12位 A/D  得到的数是什么?
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号