;

;		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操作--松瀚汇编源码的更多相关文章

  1. 松瀚SN8P2501 定时器初始化程序--汇编源码

    /* 松瀚 SN8P2501B 定时器初始化程序 */ INI_IRQ: ;定时器T0初始化 MOV A, #01100000b ;定时器模式Fcpu/4 16M/4/4=1M 1U计一次 B0MOV ...

  2. 松瀚SN8P2711 2722 ADC初始化程序及应用--汇编源码

    /* 松瀚 SN8P2711 2722 ADC初始化程序 及应用实例 */ INIT_ADC: MOV A, #0XB2 // 启动ADC电路 使能AIN通道 B0MOV ADM, A MOV A,# ...

  3. C# Retry重试操作解决方案(附源码)

    一.前言 (1)对于Thread的Abort方法,如果线程当前正在执行的是一段非托管代码,那么CLR就不会抛出ThreadAbortException,只有当代码继续回到CLR中时,才会引发Threa ...

  4. 用普通IO驱动LCD的控制方法-松瀚汇编源程序

    /*************************************** 本例程为IO直接驱动LCD的方法 以下是松瀚MCU汇编源程序 **************************** ...

  5. [IO] C# DirFileHelper文件与文件夹操作类教程与源码下载 (转载)

    点击下载 DirFileHelper.zip 主要功能如下所示 // 摘要: // 向文本文件的尾部追加内容 // // 参数: // filePath: // 文件的绝对路径 // // conte ...

  6. ExcelReport.cs Excel操作类、实例源码下载

    标题一.告别ASP.NET操作EXCEL的烦恼标题二.ASP.NET操作EXCEL 合并单元格 大全... cnblogs/hanzhaoxin/韩兆新的博客园ExcelReport第一篇:使用Exc ...

  7. eclipse连接mysql数据库实现怎删改查操作实例(附带源码)

    package model; public class User { private int id; private String name; private String password; pub ...

  8. 如何用C++封装一个简单的数据流操作类(附源码),从而用于网络上的数据传输和解析?

    历史溯源 由于历史原因,我们目前看到的大部分的网络协议都是基于ASCII码这种纯文本方式,也就是基于字符串的命令行方式,比如HTTP.FTP.POP3.SMTP.Telnet等.早期操作系统UNIX( ...

  9. 《Linux内核设计的艺术》学习笔记(一)从开机加电到加载三个汇编源码

      实验内核版本:0.11 ◆ 从开机到main函数的三步: ① 启动BIOS,准备实模式下的中断向量表和中断服务程序: ② 从启动盘加载OS程序到内存中,加载OS程序的工作就是利用第一步中的中断服务 ...

随机推荐

  1. Winform datagridview相关操作

    datagridview显示行号的2种方法: 方法一: 网上最常见的做法是用DataGridView的RowPostPaint事件在RowHeaderCell中绘制行号: privatevoiddat ...

  2. dorado7第一次使用感受

    今天第一次玩dorado,说一下使用的感受 1.首先是优点: 首先是它的学习文档非常丰富,视频,PDF,PPT,实例,社区一应俱全 界面风格已经帮我们做完,无需担心界面美观的问题 与后台交互非常方便, ...

  3. 李洪强iOS开发本人集成环信的经验总结_02_基本配置

     李洪强iOS开发本人集成环信的经验总结_02_基本配置 来到APPdelegate中做一些配置 01 - 导入头文件 02 - 在didFinishLaunchingWithOptions用法总结 ...

  4. 如何让centos6.5在vm11里上网,连接网络?

    如何让centos在vm里连接网络?步骤有3,方可解决: 1.配置vm的虚拟网络编辑器 2.配置虚拟机centos 3.设置centos的ip地址 一.配置vm的虚拟网络编辑器

  5. Android Studio 快捷键 for Mac OS X 10.5+

    Action Mac OSX Win/Linux 注释代码(//) Cmd + / Ctrl + / 注释代码(/**/) Cmd + Option + / Ctrl + Alt + / 格式化代码 ...

  6. 将win7电脑变身WiFi热点

    转自:http://bbs.feng.com/read-htm-tid-2167498.html 开启windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP),就可以让电脑变成无线路 ...

  7. 安卓使用WIFI调试程序

    不知怎么回事,USB老是掉,真心烦.于是想着用WIFI可不可以调试呢,去百度一搜,果然可以.下面我说一下我的方案. 1.使用APWIFI创建WIFI热点,用安卓手机连接该热点,试试手机可以上网不. 2 ...

  8. 文件写操作--WriteLog

    private static void Write(string sMsg, string fileName) { if (sMsg != "") { try { var dir ...

  9. hunnu 小明的烦恼——找字符串

    http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11544&courseid=0 小明的烦恼——找字符串 ...

  10. selenium WebDriver 获取disabled文本框内容(转)

    有这样一个元素:<input name="name" id="id" type="text" disabled="true& ...