24C02操作--松瀚汇编源码
; ; P_CLKIIC EQU P1.2
; P_DATIIC EQU P1.3
; PM_DATIIC EQU P1M.3 ; EE_ADDR DS 1 ;地址寄存器
; TMP3_IIC DS 1
; TMP2_IIC DS 1
; TMP1_IIC DS 1
; DATA_TEMP DS 1 ;数据缓存
; R_DATA DS 1 ;读数据寄存器
; W_DATA DS 1 ;写数据寄存器 ;*************************************************
;功能:读出一认定地址的数据
;INPUT: EE_ADDR_H , EE_ADDR_L --> EE_ADDR
;OUTPUT: R_DATA
;影响参数:DATA_TEMP ,TMP1_IIC ,TMP2_IIC ,TMP3_IIC,TMP4_IIC
;======================================
READ_EEPROM:
MOV A,#200
MOV TMP2_IIC,A
READ_EEPROM_LOOP0:
;------------
B0BSET PM_DATIIC ;SET OUT MODEL
CALL STAR_CONDITION
MOV A,#10100000B
B0MOV DATA_TEMP,A
CALL SEND_DATA_ADD ;写模式,写入高3位地址
B0BCLR PM_DATIIC ;IN MODEL
B0BSET P_CLKIIC
B0BTS1 P_DATIIC
JMP READ_EEPROM_LOOP1
DECMS TMP2_IIC
JMP READ_EEPROM_LOOP0
BSET F_ERRIIC
READ_EEPROM_LOOP1:
B0BCLR P_CLKIIC
B0BSET PM_DATIIC ;OUT MODE
MOV A,EE_ADDR
MOV DATA_TEMP,A
CALL SEND_DATA_ADD ;写入低8位地址
B0BCLR PM_DATIIC ;IN MODEL
B0BSET P_CLKIIC
MOV A,#200
MOV TMP2_IIC,A
READ_EEPROM_LOOP2:
B0BTS1 P_DATIIC
JMP READ_EEPROM_LOOP3
DECMS TMP2_IIC
JMP READ_EEPROM_LOOP2
BSET F_ERRIIC
READ_EEPROM_LOOP3:
B0BCLR P_CLKIIC
B0BSET PM_DATIIC ;OUT MODEL
CALL STAR_CONDITION
MOV A,#10100001B
MOV DATA_TEMP,A
CALL SEND_DATA_ADD ;读出数据
B0BCLR PM_DATIIC ;IN MODEL
B0BSET P_CLKIIC
MOV A,#200
MOV TMP2_IIC,A
READ_EEPROM_LOOP4:
B0BTS1 P_DATIIC
JMP READ_EEPROM_LOOP5
DECMS TMP2_IIC
JMP READ_EEPROM_LOOP4
BSET F_ERRIIC
READ_EEPROM_LOOP5:
B0BCLR P_CLKIIC
CALL OUT_DATA_X
B0BSET PM_DATIIC ;OUT MODEL
CALL STOP_CONDITION
B0BCLR PM_DATIIC ;IN MODEL
;-------------
MOV A,DATA_TEMP
MOV R_DATA,A ;8.28
RET
;************************************************************************
;功能:定入一指定地址的数据
;INPUT: EE_ADDR_H , EE_ADDR_L ,W_DATA
;OUTPUT: F_EER ,24写入有错
;影响参数:DATA_TEMP ,TMP1_IIC ,TMP2_IIC ,TMP3_IIC
;===================================================
WRITE_EEPROM:
;先读出,与写入相同则不写 --> 如果读出的数与要写的数一致则不用再写 CALL READ_EEPROM ; MOV A,R_DATA
XOR A,W_DATA
BTS0 FZ
RET ;=================================
MOV A,#3 ;如果写数据失败则重复写 最多写3次
MOV TMP3_IIC,A
;------------
WRITE_EEPROM00:
B0BSET PM_DATIIC ;SET P1.3 OUT MODEL
CALL STAR_CONDITION
MOV A,#10100000B ;写入高3位地址
MOV DATA_TEMP,A
CALL SEND_DATA_ADD ;DEVICE_ADDRESS
B0BCLR PM_DATIIC ;IN MODEL
B0BSET P_CLKIIC
MOV A,#200
MOV TMP2_IIC,A
WRITE_EEPROM_LOOP0:
B0BTS1 P_DATIIC
JMP WRITE_EEPROM_LOOP1
DECMS TMP2_IIC
JMP WRITE_EEPROM_LOOP0
BSET F_ERRIIC
WRITE_EEPROM_LOOP1:
B0BCLR P_CLKIIC
B0BSET PM_DATIIC ;OUT
MOV A,EE_ADDR
MOV DATA_TEMP,A
CALL SEND_DATA_ADD ;写入低8位地址
B0BCLR PM_DATIIC ;IN MODEL
B0BSET P_CLKIIC
MOV A,#200
MOV TMP2_IIC,A
WRITE_EEPROM_LOOP2:
B0BTS1 P_DATIIC
JMP WRITE_EEPROM_LOOP3
DECMS TMP2_IIC
JMP WRITE_EEPROM_LOOP2
BSET F_ERRIIC
WRITE_EEPROM_LOOP3:
B0BCLR P_CLKIIC
B0BSET PM_DATIIC ;OUT
MOV A,W_DATA
MOV DATA_TEMP,A
CALL SEND_DATA_ADD ;写入的数据
B0BCLR P_DATIIC;
B0BCLR PM_DATIIC ;IN MODEL
B0BSET P_CLKIIC
MOV A,#200
MOV TMP2_IIC,A
WRITE_EEPROM_LOOP4:
B0BTS1 P_DATIIC
JMP WRITE_EEPROM_LOOP5
DECMS TMP2_IIC
JMP WRITE_EEPROM_LOOP4
BSET F_ERRIIC
WRITE_EEPROM_LOOP5:
B0BCLR P_CLKIIC
B0BSET PM_DATIIC ;OUT
B0BSET P_DATIIC
JMP $+1
B0BCLR P_DATIIC
CALL STOP_CONDITION
CALL STOP_CONDITION
B0BCLR PM_DATIIC ;IN MODEL
;---------------
;读出比较是否与定入的一致
CALL READ_EEPROM
MOV A,R_DATA
CMPRS A,W_DATA
RET
DECMS TMP3_IIC
JMP WRITE_EEPROM00
BSET F_EEPOM_W
RET
;----------------
OUT_DATA_X:
CLR DATA_TEMP
MOV A,#8H
MOV TMP1_IIC,A
OUT_LOOP1:
B0BCLR PFLAG.2
B0BTS0 P_DATIIC
B0BSET PFLAG.2
;=========================== JMP $+1
JMP $+1
B0BSET P_CLKIIC
JMP $+1
JMP $+1
B0BCLR P_CLKIIC
;==========================
RLCM DATA_TEMP
DECMS TMP1_IIC
JMP OUT_LOOP1
RET
;----------------
SEND_DATA_ADD: ;
MOV A,#8H
MOV TMP1_IIC,A
SEND_LOOP1:
RLCM DATA_TEMP
B0BCLR P_DATIIC
B0BTS0 PFLAG.2
B0BSET P_DATIIC
;===========================
JMP $+1
JMP $+1
B0BSET P_CLKIIC
JMP $+1
JMP $+1
B0BCLR P_CLKIIC
;==========================
DECMS TMP1_IIC
JMP SEND_LOOP1
RLCM DATA_TEMP
RET
;---------
POSITIVE_EDGE: ;起始信号
JMP $+1
JMP $+1
B0BSET P_CLKIIC
JMP $+1
JMP $+1
B0BCLR P_CLKIIC
RET
;----------
STAR_CONDITION: ;结束信号
B0BSET P_CLKIIC
B0BSET P_DATIIC
JMP $+1
JMP $+1
B0BCLR P_DATIIC
JMP $+1
JMP $+1
B0BCLR P_CLKIIC
RET
;------------
STOP_CONDITION: ;
B0BCLR P_DATIIC
B0BSET P_CLKIIC
JMP $+1
JMP $+1
B0BSET P_DATIIC
JMP $+1
JMP $+1
B0BCLR P_CLKIIC
B0BCLR P_DATIIC
RET
24C02操作--松瀚汇编源码的更多相关文章
- 松瀚SN8P2501 定时器初始化程序--汇编源码
/* 松瀚 SN8P2501B 定时器初始化程序 */ INI_IRQ: ;定时器T0初始化 MOV A, #01100000b ;定时器模式Fcpu/4 16M/4/4=1M 1U计一次 B0MOV ...
- 松瀚SN8P2711 2722 ADC初始化程序及应用--汇编源码
/* 松瀚 SN8P2711 2722 ADC初始化程序 及应用实例 */ INIT_ADC: MOV A, #0XB2 // 启动ADC电路 使能AIN通道 B0MOV ADM, A MOV A,# ...
- C# Retry重试操作解决方案(附源码)
一.前言 (1)对于Thread的Abort方法,如果线程当前正在执行的是一段非托管代码,那么CLR就不会抛出ThreadAbortException,只有当代码继续回到CLR中时,才会引发Threa ...
- 用普通IO驱动LCD的控制方法-松瀚汇编源程序
/*************************************** 本例程为IO直接驱动LCD的方法 以下是松瀚MCU汇编源程序 **************************** ...
- [IO] C# DirFileHelper文件与文件夹操作类教程与源码下载 (转载)
点击下载 DirFileHelper.zip 主要功能如下所示 // 摘要: // 向文本文件的尾部追加内容 // // 参数: // filePath: // 文件的绝对路径 // // conte ...
- ExcelReport.cs Excel操作类、实例源码下载
标题一.告别ASP.NET操作EXCEL的烦恼标题二.ASP.NET操作EXCEL 合并单元格 大全... cnblogs/hanzhaoxin/韩兆新的博客园ExcelReport第一篇:使用Exc ...
- eclipse连接mysql数据库实现怎删改查操作实例(附带源码)
package model; public class User { private int id; private String name; private String password; pub ...
- 如何用C++封装一个简单的数据流操作类(附源码),从而用于网络上的数据传输和解析?
历史溯源 由于历史原因,我们目前看到的大部分的网络协议都是基于ASCII码这种纯文本方式,也就是基于字符串的命令行方式,比如HTTP.FTP.POP3.SMTP.Telnet等.早期操作系统UNIX( ...
- 《Linux内核设计的艺术》学习笔记(一)从开机加电到加载三个汇编源码
实验内核版本:0.11 ◆ 从开机到main函数的三步: ① 启动BIOS,准备实模式下的中断向量表和中断服务程序: ② 从启动盘加载OS程序到内存中,加载OS程序的工作就是利用第一步中的中断服务 ...
随机推荐
- 【win8技巧】win8一键截图自动保存到文件夹
以前截图都是按着键盘的PrtSc键,但是这个只是保存到剪贴板,还需要粘贴才行. 现在win8可以直接使用 Win + PrtSc 进行全屏截图,不仅保存到剪贴板,而且自动保存到[库]--[图片]--[ ...
- Layer 1: Single Objects
Layer 1: 单一对象 粗略的说, 在javascript中所有对象都是maps的键值对. 键值对的实体在对象中称为属性( property).属性的key经常为 string类型,而他的valu ...
- 1088-Gnome Sequencing
描述 In the book All Creatures of Mythology, gnomes are kind, bearded creatures, while goblins tend to ...
- Codeforces Round #236 (Div. 2)
A. Nuts time limit per test:1 secondmemory limit per test:256 megabytesinput:standard inputoutput:st ...
- easyui源码翻译1.32--Droppable(放置)
前言 使用$.fn.droppable.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:lbq --放置 拉伸 */ (fun ...
- *[topcoder]LittleElephantAndString
http://community.topcoder.com/stat?c=problem_statement&pm=12854&rd=15709 这道题DIV1 250的,还有点意思. ...
- 微信JSSDK与录音相关的坑
欢迎各位转载, 以让微信团队重视这些恼人的BUG. 请注明出处微信JSSDK与录音相关的坑 by lzl124631x 最近一直在做微信JSSDK与录音相关的功能开发, 遇到了各种奇尺大坑, 时不时冷 ...
- C#微信公众号开发系列教程(接收事件推送与消息排重)
微信服务器在5秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次.这样的话,问题就来了.有这样一个场景:当用户关注微信账号时,获取当前用户信息,然后将信息写到数据库中.类似于pc端网站的注册.可 ...
- 转 脸书pop动画的五个步骤
http://blog.csdn.net/u013741809/article/details/38511741 5 Steps For Using Facebook Pop // 1. Pick ...
- 【转】 Xcode基本操作 -- 不错
原文网址:http://blog.csdn.net/phunxm/article/details/17044337 1.Xcode IDE概览 说明:从左到右,依次是“导航窗格(Navigator)- ...