首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
IIC Shanghai 2026
行业及技术活动
嵌入式设计资源库
杂志免费订阅
EE直播间
白皮书
小测验
在线研讨会
免费在线工具
厂商资源中心
论坛
博文
电子工程专辑
电子技术设计
国际电子商情
资料
白皮书
研讨会
芯语
文库
登录|注册
登录
用户39557
修改
文章:
35
阅读:
130543
评论:
21
赞:
558
好友
私信
个人主页
文章
35
原创
0
阅读
130543
评论
21
赞
558
原创
FM24CL04.asm
2008-9-15 09:34
2860
12
3
分类:
软件与OS
; FM24CL04铁电存储器的模拟IIC传输测试及其子程序
; 新华龙C8051F020芯片
; 外部时钟,11.0592Mhz
; 模拟IIC
$INCLUDE (C8051F020.INC)
ORG 0000H
LJMP MAIN
MAIN:
MOV SP, #60H
LCALL OTER_INIT
LCALL SYSCLK_INIT
LCALL SWITCH_INIT
LCALL WRDATA
LOOP:
LCALL FRAM
SJMP LOOP
;;--------------------------------
;;其它初始化操作
;;--------------------------------
OTER_INIT:
;;看门狗
CLR EA
MOV WDTCN,#0DEH ;DISABLE WATCHDOG
MOV WDTCN,#0ADH
SETB EA
ORL EMI0CF,#00100011B ;XRAM IN HIGH PORTS
RET
;;--------------------------------
;;时钟
;;--------------------------------
SYSCLK_INIT:
MOV OSCXCN,#67H
CLR A
DJNZ ACC,$
DJNZ ACC,$
DJNZ ACC,$
OSC_WAIT: NOP
MOV A,OSCXCN
JNB ACC.7,OSC_WAIT
MOV OSCICN,#88H ;SELECTED EX_CLK
RET
;;--------------------------------
;;交叉开关及I/O口的输入输出方式
;;--------------------------------
SWITCH_INIT:
MOV XBR0,#00000101B ;UART0, SMBUS
MOV XBR1,#00010100B ;INT1, INT0
MOV XBR2,#01000100B ;ENABLED, UART1
MOV P0MDOUT,#00H
MOV P1MDIN,#0FFH
MOV P1MDOUT,#00H
MOV P2MDOUT,#00H
MOV P3MDOUT,#00H
MOV P3IF,#00H
MOV P74OUT,#00H
RET
;;-----------------------
;;测试数据写程序
;;-----------------------
WRDATA:MOV R1,#0AH
MOV R0,#WR_BUF
WR_L: MOV @R0,#0AAH
INC R0
DJNZ R1,WR_L
RET
;;-----------------------
;;测试
;;-----------------------
FRAM:
CLR WP
MOV N,#10
MOV POINTER,#10H
LCALL WR_NB ;在小于256B空间内写入10B
MOV N,#10
MOV POINTER,#10H
LCALL RD_NB ;在小于256B空间内读出10B
MOV N,#10
MOV POINTERH,#01H
MOV POINTERL,#0F0H
LCALL WR_NBHL ;在大于256B空间内写入10B
MOV N,#10
MOV POINTERH,#01H
MOV POINTERL,#0F0H
LCALL RD_NBHL ;在大于256B空间内读出10B
RET
;***************************************************************************
SDA2 BIT P1.3
SCL2 BIT P1.4
WP BIT P1.5
POINTERH EQU 1FH ;高位地址,空间大于256B时用
POINTERL EQU 1EH ;低位地址,空间大于256B时用
POINTER EQU 20H ;一般地址,空间在256B以下时用
WR_BUF EQU 23H ;欲写的数据缓冲区首址
RD_BUF EQU 33H ;欲读的数据缓冲区首址
N EQU 22H ;字节个数
DEVICE EQU 21H ;器件地址
;;-----启动-----;;
START:LCALL DEL5US
SETB SDA2
LCALL DEL5US
SETB SCL2
LCALL DEL5US
CLR SDA2
LCALL DEL5US
CLR SCL2
LCALL DEL5US
RET
;;-----结束-----;;
STOP:LCALL DEL5US
SETB SCL2
LCALL DEL5US
SETB SDA2
LCALL DEL5US
RET
;;-----应答检查-----;;
CACK:SETB SDA2
LCALL DEL5US
SETB SCL2
LCALL DEL5US
MOV C,SDA2
JC CACK
CLR SCL2
CLR SDA2
LCALL DEL1MS
RET
;;-----应答-----;;
MACK:CLR SDA2
LCALL DEL5US
SETB SCL2
LCALL DEL5US
CLR SCL2
LCALL DEL5US
SETB SDA2
RET
;;-----按顺序写字节数据-----;;
;;入口:ACC
;;资源占用:A、R0、CY、F0、R2
IWRB:LCALL START
MOV A,#0A0H
LCALL WR8BIT
LCALL CACK
MOV A,WR_BUF
LCALL WR8BIT
LCALL CACK
IWEXIT:
LCALL STOP
LCALL DEL10MS
RET
;;-----按顺序读字节数据-----;;
;;入口:从器件地址DEVICE
;;出口:数据读入ACC
;;资源占用:A、R0、CY、F0
IRDB:LCALL START
MOV A,#0A1H
LCALL WR8BIT
LCALL CACK
LCALL RD8BIT
IREXIT:
LCALL STOP
RET
;;-----向从器件指定单元写N个字节数据-----;;
;;入口:传递的地址在POINTER,数据在WR_BUF中,发送字节数在N中
;;资源占用:ACC、R0、R1、R3、C
WR_NB:SETB SDA2
SETB SCL2
LCALL START
MOV A,#0A0H
LCALL WR8BIT
LCALL CACK
MOV A,POINTER
LCALL WR8BIT
LCALL CACK
MOV R3,N
MOV R1,#WR_BUF
WRNB1:MOV A,@R1
LCALL WR8BIT
LCALL CACK
INC R1
DJNZ R3,WRNB1
LCALL STOP
LCALL DEL10MS
RET
;;-----从从器件指定单元读N个字节数据-----;;
;;入口:传递的地址在POINTER,接收数据缓冲区RD_BUF,接收字节数在N中
;;资源占用:ACC、R0、R1、R3、C
RD_NB:MOV R3,N
RDNB1:LCALL START
MOV A,#0A0H
LCALL WR8BIT
LCALL CACK
MOV A,POINTER
LCALL WR8BIT
LCALL CACK
LCALL START
MOV A,#0A1H
LCALL WR8BIT
LCALL CACK
MOV R1,#RD_BUF
RDB: LCALL RD8BIT
MOV @R1,A
DJNZ R3,SACK
LCALL STOP
RET
SACK: INC R1
LCALL MACK
SJMP RDB
;;-----字节发送-----;;
;;入口:要发送的数据在ACC中
;;每发送完一个字节,要调用一次CACK,以判断是否有应答
WR8BIT:PUSH ACC
MOV R0,#08H
WR_BIT:RLC A
MOV SDA2,C
LCALL DEL5US
SETB SCL2
LCALL DEL5US
CLR SCL2
DJNZ R0,WR_BIT
POP ACC
RET
;;-----字节接收-----;;
;;出口:接收到的数据在ACC中
;;每接收完一个字节,要调用一MCACK/MNACK
RD8BIT:MOV R0,#08H
RD_BIT:SETB SDA2
LCALL DEL5US
SETB SCL2
LCALL DEL5US
MOV C,SDA2
RLC A
LCALL DEL5US
CLR SCL2
DJNZ R0,RD_BIT
CLR SDA2
RET
;;-----5US-----;;
DEL5US:NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
;;-----1MS-----;;
DEL1MS:MOV R4,#200
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R4,$-3
RET
;;-----10MS-----;;
DEL10MS:MOV R5,#10
NOP
LCALL DEL1MS
NOP
NOP
DJNZ R5,$-3
RET
;;-----向从器件指定单元写N个字节数据(>256B的EEPROM)-----;;
;;入口:传递的地址在POINTER,数据在WR_BUF中,发送字节数在N中
;;资源占用:ACC、R0、R1、R3、C
WR_NBHL:SETB SDA2
SETB SCL2
LCALL START
MOV A,#0A0H
LCALL WR8BIT
LCALL CACK
MOV A,POINTERH
LCALL WR8BIT
LCALL CACK
MOV A,POINTERL
LCALL WR8BIT
LCALL CACK
MOV R3,N
MOV R1,#WR_BUF
WRNB1HL:MOV A,@R1
LCALL WR8BIT
LCALL CACK
INC R1
DJNZ R3,WRNB1HL
LCALL STOP
LCALL DEL10MS
RET
;;-----从从器件指定单元读N个字节数据(>256B的EEPROM)-----;;
;;入口:传递的地址在POINTER,接收数据缓冲区RD_BUF,接收字节数在N中
;;资源占用:ACC、R0、R1、R3、C
RD_NBHL:MOV R3,N
RDNB1HL:LCALL START
MOV A,#0A0H
LCALL WR8BIT
LCALL CACK
MOV A,POINTERH
LCALL WR8BIT
LCALL CACK
MOV A,POINTERL
LCALL WR8BIT
LCALL CACK
LCALL START
MOV A,#0A1H
LCALL WR8BIT
LCALL CACK
MOV R1,#RD_BUF
RDBHL: LCALL RD8BIT
MOV @R1,A
DJNZ R3,SACKHL
LCALL STOP
RET
SACKHL: INC R1
LCALL MACK
SJMP RDBHL
;***************************
END
写原创有奖励!2025面包板原创奖励正在进行中
最新发表
推荐阅读
明星博主
原创博文
年度排行
博文排行
博文评论
FPGA/CPLD
MCU/ 嵌入式
模拟
电源/新能源
测试测量
通信
智能手机
处理器与DSP
PCB
汽车电子
消费电子
智能硬件
物联网
软件与OS
采购与分销
供应链管理
工程师职场
EDA/ IP/ 设计与制造
无人机
机器人/ AI
医疗电子
工业电子
管理
写博文
点赞(
12
)
收藏
分享到:
上一篇:
第一次开通博客
下一篇:
分频器的VHDL描述
PARTNER CONTENT
换一换>
更多>
突破“存储墙”:云创同芯以全栈自研存储技术,重塑AI时代数据中心动能
云创同芯
2026-01-23
售价仅 1.7 元!STC 高性价比车规级 MCU 推动汽车电子降本升级
STC
2026-02-06
STC 车规 MCU,国产STC32G12K128 为商用汽车提供可靠控制方案
2026-01-26
文章评论
(
0
条评论)
登录
后参与讨论
您需要登录后才可以评论
登录
|
立即注册
发布
用户39557
修改
文章:
35
阅读:
130543
评论:
21
赞:
558
好友
私信
个人主页
文章
35
原创
0
阅读
130543
评论
21
赞
558
最新评论
更多
所见所思,用于制造AI苍蝇。
自做自受 ...
评论博文
2026-2-14
天台吸烟赶蝇有感
万物有命也有情,人类细心总琢磨,来时,现在,将来,永远在地球万物身上寻求可持续生存能力,苍蝇会飞,人类造飞机,胜于苍蝇, ...
自做自受 ...
评论博文
2026-2-14
天台吸烟赶蝇有感
多谢读者点赞鼓励! 如今真可谓是人人落网的时代啦!
自做自受 ...
评论博文
2026-2-14
【创客】1996创建Internet上网-成功 ...
最新
博文
德思特干货 | 单通道、多通道衰减器与 ...
【晶振不起振的系统性解析】 ...
电流探头和电流放大器的区别 ...
资料下载
本周热帖
针对集成电路老化的可靠性检测研究 ...
集成电路超细互连线电迁移可靠性研究 ...
基于时序等价性检查的电路软错误系统 ...
888数字集成电路软错误敏感性分析与可 ...
基于子结构方法的微电子集成电路封装 ...
【瑞萨AI挑战赛】--AI人脸检测 ...
芯享程AWL5963KAR-18与XC6228的硬核较 ...
【Milk-V Duo 开发板】Arduino + Linu ...
深入解析:灯具球压测试
利用EBSD技术精确分析晶粒尺寸与晶界 ...
最新资讯
芯语最新
工信部发布强制性国家标准《汽车车门 ...
深圳发布“人工智能+先进制造”两年行 ...
美国国防部更新1260H清单:长江存储、 ...
原云上贵州大数据集团董事长徐昊被“ ...
美国防部1260H清单调整:长江存储、长 ...
从DeepSeek到Seedance 2.0,国产大模 ...
宝马子品牌发布全新车标
【光电通信】《光电共封装(CPO)和光 ...
【光电智造】大牛谈如何搞定机器视觉 ...
SOC启动流程
EE直播间
更多
在线研讨会
更多
智驱·融合:Allegro面向智能车身应用的芯片全景解决方案
瑞萨电子RA8 MCU硬核巡演
博通霍尔电流传感器:产品介绍在线研讨会
村田产品解决方案在高速光模块中的技术创新探讨
热门
推荐
对接全球供应链,解决元器件选型与替代难题
从仿真到流片:实战案例教你规避IC设计“致命坑”
PC时钟、PCIe互联与系统协同设计含框图
五场深度课:掌握 3D IC 从设计到仿真的核心工具链
我要评论
0
12
分享到微信
分享到微博
分享到QQ
点击右上角,分享到朋友圈
我知道啦
请使用浏览器分享功能
我知道啦
关闭
站长推荐
/6
【有奖小测验】DS9404示波器如何打破带宽预算困局?
凡参与答题并全部答对者均有机会获得由RIGOL所提供的RIGOL定制款U盘(10个)
【直播】边缘AI第5讲,送40套开发板
周三19:30开播第5讲—使用RUHMI模型转换器部署BYOM模型,系统深入掌握边缘AI开发!
报名立领:瑞萨MCU/MPU/边缘AI资料集(共348页);
每场都送出40+块瑞萨MCU开发板,50元E卡/保温杯,数量多多!
报名IIC Shanghai 2026,领浦东丽思卡尔顿酒店顶层餐厅星级自助餐券 ... ... ... ...
2026国际集成电路展览会暨研讨会(3.31-4.1,上海),聚焦AI 芯片、汽车电子、工业控制、通信系统、绿色能源等关键应用场景,打造贯通芯片设计制造、能源技术革新、产品商业化落地的超级产业连接器。
【直播】射频干扰实战指南
详细介绍如何更快地识别、分析和解决复杂频谱环境中的干扰问题,并在现场做出及时、正确的决策。 · 捕获并记录环境中的射频信号 · 对信号进行分类、识别和理解 · 精确定位信号来源 · 采取缓解、纠正或防御措施
2026分享优质内容!一起分300000E币!
你的每一条帖子和回复,都是社区的星光!发得越多,奖励越多! 活动时间:2026年全年(或发完30万E币为止!)
技术圆桌:分享技术,让知识澎湃!(赢E币)
一人提问,众人解惑;一席圆桌,共探真知! 提问/解答都有奖(较去年大幅增加)
首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
IIC Shanghai 2026
行业及技术活动
嵌入式设计资源库
杂志免费订阅
EE直播间
白皮书
小测验
在线研讨会
免费在线工具
厂商资源中心
帖子
博文
返回顶部
×
文章评论(0条评论)
登录后参与讨论