zoukankan      html  css  js  c++  java
  • 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		
    	


  • 相关阅读:
    Jquery 图片预览插件 imgPreview
    对request.getSession(false)的理解(附程序员常疏忽的一个漏洞)
    JavaScript拖拽实现(附注释),最经典!最简单!短小精悍!
    如何使用VC++写一个小程序来检测.NetFrameWork版本
    利用TreeView实现C#工具箱效果
    JavaScript中json对象和string对象之间的转化
    Ubuntu Server上搭建可用于生产环境的ASP.NET服务器
    winexec()函数的参数说明(c++)
    C#对文件夹的判断、创建、移动、删除
    C#程序不用安装.NET环境运行(让C#程序脱离.net框架)
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3235276.html
Copyright © 2011-2022 走看看