;简洁的24C02读写汇编程序
;--------------------------------------------
I2C_SDA EQU P1.6 ; PIN 5
I2C_SCL EQU P1.7 ; PIN 6
;=============================================
I2C_WRITE: ; WRITE 8 BYTES TO EEROM ; INPUT: A - A*8 = EEROM START ADDR
; R0 - RAN START ADDR
; USE: C, A, R0, R6, R7
ACALL I2C_START
ACALL OUT
MOV R6, #8
WR_LP:MOV A, @R0
ACALL OUT
INC R0
DJNZ R6, WR_LP
AJMP I2C_STOP
;==========================================
I2C_READ: ; READ 8 BYTES FROM EEROM ; INPUT: A - A*8 = EEROM START ADDR
; R0 - RAN START ADDR
; USE: C, A, R0, R6, R7
ACALL I2C_START
ACALL OUT
MOV R6, #8
MOV A, #0A1H; #RDCMD
ACALL OUTS
BRDLP:
MOV R7, #8
SETB I2C_SDA
INLP: CLR I2C_SCL
ACALL DELAY6
SETB I2C_SCL
NOP
MOV C, I2C_SDA
RLC A
DJNZ R7, INLP
CLR I2C_SCL
MOV @R0, A
INC R0
DJNZ R6, ACKLP
;;;;----------------------------
I2C_STOP:
CLR I2C_SDA
ACALL DELAY5
SETB I2C_SCL
ACALL DELAY5
SETB I2C_SDA
DELAY6:
NOP
DELAY5:
NOP
RET
;;-----------------------------
I2C_START:
SWAP A
RR A
MOV R6, A
MOV A, #0A0H; #WTCMD
ACALL OUTS
MOV A, R6
RET
;-------------------------------
ACKLP:
CLR I2C_SDA
SETB I2C_SCL
ACALL DELAY5
CLR I2C_SCL
AJMP BRDLP
;=======================
OUTS:
SETB I2C_SDA
SETB I2C_SCL
ACALL DELAY5
CLR I2C_SDA
ACALL DELAY5
CLR I2C_SCL
;========================
OUT:
SETB C
MOV R7, #9
OTLP: RLC A
NOP
MOV I2C_SDA, C
NOP
NOP
SETB I2C_SCL
ACALL DELAY5
CLR I2C_SCL
DJNZ R7, OTLP
RET
;========================
END
关键字:单片机 24C02 汇编程序
引用地址:
单片机读写24C02的汇编程序
推荐阅读最新更新时间:2024-03-16 13:10
基于51单片机射频RFID卡考勤人数计数系统设计
一.硬件方案 “考勤管理系统”是以RFID射频卡为信息识别载体的适用于企业单位或学校的考勤管理系统。 本设计由51单片机电路+RFID模块电路+1602液晶显示电路+按键电路+蜂鸣器报警电路+电源电路组成。: 二.设计功能 (1)系统有3张卡,分别代表依次是张三、李四、王二。 (2)任何一个人刷卡成功能,1602液晶响应显示,未刷卡显示空“ ”位置上空的,刷卡成功后相应位置显示有人。 (3)液晶第二行显示刷卡人数,即出勤总人数。 (4)按下按键表示上课,如果签到人数和总人数不符合,蜂鸣器报警处理。 三.设计原理图 (1)原理图主要采用AD软件进行设计,如图: (2)PCB图如下: 四.软件设计 (1)程序流程图
[单片机]
STM32单片机串口接收数据的方法
串口作为单片机开发的一个常用的外设,应用范围非常广。大部分时候,串口需要接收处理的数据长度是不定的。那么怎么才能判断一帧数据是否结束呢,今天就以STM32单片机为例,介绍几种接收不定长数据的方法。 首先,我们需要打开一个串口,使用STM32CubeMx来配置,如下: 然后打开串口中断、添加发送和接收的DMA,DMA参数设置为默认即可,如下图。(DMA可根据自身需求选择是否打开) 配置一下时钟等,点击生成代码,这样就可以使用串口了。首先我们定义一个串口接收的结构体,并定义一个结构体变量,如下: #define RX_MAXLEN 200 //最大接收数据长度 typedef struct{ uint
[单片机]
基于Atmega16单片机的PSD数据采集控制电路设计
根据高精度光电位置灵敏探测器(PSD)的工作原理及输出特性,本文介绍了一套基于单片机技术的PSD输出信号数字采集电路的设计方案。通过Atmega16型单片机控制AD1674模/数转换、AD7501多路转换等实现对PSD输出模拟信号的数字化转换和采集。电路结构简单、成本低廉、体积较小,广泛适用于各实验室的PSD输出信号采集模拟实验。 0 引言 PSD作为一种精密的光电位置传感器,具有灵敏度高、响应时间短、位置分辨率高、光谱响应范围大等特点,因此被广泛应用于现代光电检测技术中,尤其是高精度、高速度的数据采集技术中。如何在极短的响应时间内实现多数据的采集,成了采集PSD输出数据的关键。本文基于单片机技术,设计搭建了一套高速的PSD输
[单片机]
(*(void(*)())0) ()讲解-单片机另类的复位
硬件地址跳到0处 (*(void(*)())0) (); 预备知识 float (*h)(); 表示h是一个指向返回值float类型的函数的指针 (float(*)()) 表示一个 指向返回值float类型的函数的指针 的类型转换符 假设fp是一个函数指针,那么如何调用fp所指向的函数,调用方法如下: (*fp)(); 按照人们的惯性思维,那么我们可以这样写 (*0)(); 上式不能生效,因为运算符*必须要一个指针来做操作数,而且这个指针还必须是个函数指针。所以我们必须要把0强制转换成一个函数指针(指向返回值为void类型的函数的指针) 假设fp是个float指针,声明如下 float
[单片机]
AVR单片机(学习ing)—(一)、ATMEGA16的I\0端口的使用—01
一、ATMEGA16的I\0端口的使用:(只有一个实验,下面的部分每个小节可能有几个实验验证,你懂得) 一—(01)、)—使用4*4行列式按键开关的使用 I/O端口介绍: 直接一个图就哦了,因为根本没什么,就是控制寄存器(这里一定要注意,后面的ATmega16的引脚的功能都是控制寄存器来实现引脚或者器件的功能的,说白了,知道了寄存器,会用了寄存器,再来点51的基础,那这些东西真的就没什么了,AVR单片机很简单的~~~) 我用的就是IAR和Proteus(我这还有AVRStudio和WinAVR,有要的Q我,哈哈 好了先给个图,这个是按照手机上的设计的~~你看了就懂了 别的就不费话了,一看图不就全明白了 然后就是今天的
[单片机]
51单片机基础之流水灯(二)
代码: #include reg52.h #include intrins.h //这个头文件里包含所需左移右移函数 #define LED P2 //宏定义端口P2 void delay(unsigned int u16) //不再赘述 { while(u16--); } void main(void) { unsigned int i; LED=0x7f; delay(50000); while(1) { for(i=0;i 7;i++) { LED=_cror_(L
[单片机]
基于单片机的高精度数字直流电流源设计
1 引言 直流电流源是一种应用广泛的电子仪器,对于要求输出电流可调的情况,最简单实用的方法是通过软件控制来实现。使用单片机作为主控部件,系统设计简单方便。本文设计的直流电流源是以凌阳61单片机系统 为核心,采用12位外部扩展MAX531DA和MAX197AD芯片,并在外部电流输出模块中引入PI控制 ,构成电流闭环,有效消除了由于电子器件本身以及外界干扰造成的输出误差,大大提高了电流源的精度。 图1 系统结构图 2 系统原理与设计方案 系统主电路采用全桥整流电路作为负载电路电源,并选用大功率三极管 串联电路进行电流输出。控制电路使用凌阳61单片机,单片机扫描键盘显示接口,当有键按下时,键值通过83编码器CD4532读给单片机。单片机
[单片机]
MCU 面临 800V 电动汽车牵引逆变器的 3 种挑战
电动汽车 (EV) 牵引逆变器是电动汽车的核心。它将高压电池的直流电转换为多相(通常是三相)交流电来驱动牵引电机并控制制动能量的再生。电动汽车电子设备正在从 400V 架构转向 800V 架构,这正在逐步现实、普及,更高的电压会带来至少三个好处: - 快速充电 - 在相同电流下提供双倍的电量。 - 通过使用碳化硅 (SiC) 提高效率和功率密度。 - 通过使用更细的电缆来减轻重量,从而减少 800V 相同额定功率所需的电流。 在牵引逆变器中,微控制器(MCU)是系统的大脑,通过模数转换器(ADC)执行电机控制、电压和电流采样,使用磁芯计算磁场定向控制(FOC)算法,使用脉宽调制 (PWM) 信号驱动功率场效应晶体管
[嵌入式]