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程序的工作就是利用第一步中的中断服务 ...
随机推荐
- uva 1298 - Triathlon
半平面交的题: 这个题目的亮点就是建模: #include<cstdio> #include<algorithm> #include<cmath> #define ...
- zepto源码学习-01-整体感知
在公司一直做移动端的项目,偶尔会做点PC端的东西,但基本上都是和移动端打交道. 移动端嘛必须上zepto,简单介绍下Zepto:它是一个面向高级浏览器的JavaScript框架的,实现JQuery的大 ...
- IDEA 整合Junit实现自动生成测试代码
1.安装插件 junit generator 重启IDEA,完成安装. 2. 选中需要测试的方法,按alt + insert 即可自动生成测试类\方法 3. 设置
- Cassandra命令行CLI的基本使用
启动cassandra-cli服务之后,可以进行CQL的使用. 1. 创建keyspace 可以理解成关系数据库的database [default@testkeyspace] create keys ...
- 李洪强漫谈iOS开发[C语言-024]-表达式与赋值运算符
- [jobdu]把数组排成最小的数
这道题见过,就是把相加的结果作为比较来排序就行了.注意的是comp函数里面要用const引用.而且c++里的字符串直接操作(读入和相加)也很方便. #include <iostream> ...
- YCbCr
http://blog.csdn.net/shizhixin/article/details/4494358 YCbCr 则是在世界数字组织视频标准研制过程中作为ITU - R BT1601 建议的一 ...
- SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-009-带参数的ADVICE2 配置文件为XML
一. 1.配置文件为xml时则切面类不用写aop的anotation package com.springinaction.springidol; public class Magician impl ...
- 引用计数(retainCount)
ClassA.h: #import <Foundation/Foundation.h> @interface ClassA:NSObject { NSString *name; } -(v ...
- 【HDOJ】1204 糖果大战
题目本身不难.类似于dp.f(i)表示手中现有i颗糖果赢的概率,则下一局赢的概率是p(1-q),下一局输的概率是q(1-p),下一句平手的概率是1-p(1-q)-q(1-p),平手包括两人均答对或答错 ...