单片机读写24C02的汇编程序

发布者:快乐时刻最新更新时间:2012-10-12 来源: 21ic关键字:单片机  24C02  汇编程序 手机看文章 扫描二维码
随时随地手机看文章
;简洁的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的汇编程序

上一篇:单片机控制银行利率屏的设计
下一篇:单片机和 FIFO 的接口汇编程序

推荐阅读最新更新时间:2024-03-16 13:10

基于51单片机射频RFID卡考勤人数计数系统设计
一.硬件方案 “考勤管理系统”是以RFID射频卡为信息识别载体的适用于企业单位或学校的考勤管理系统。 本设计由51单片机电路+RFID模块电路+1602液晶显示电路+按键电路+蜂鸣器报警电路+电源电路组成。: 二.设计功能 (1)系统有3张卡,分别代表依次是张三、李四、王二。 (2)任何一个人刷卡成功能,1602液晶响应显示,未刷卡显示空“ ”位置上空的,刷卡成功后相应位置显示有人。 (3)液晶第二行显示刷卡人数,即出勤总人数。 (4)按下按键表示上课,如果签到人数和总人数不符合,蜂鸣器报警处理。 三.设计原理图 (1)原理图主要采用AD软件进行设计,如图: (2)PCB图如下: 四.软件设计 (1)程序流程图
[单片机]
基于51<font color='red'>单片机</font>射频RFID卡考勤人数计数系统设计
STM32单片机串口接收数据的方法
串口作为单片机开发的一个常用的外设,应用范围非常广。大部分时候,串口需要接收处理的数据长度是不定的。那么怎么才能判断一帧数据是否结束呢,今天就以STM32单片机为例,介绍几种接收不定长数据的方法。 首先,我们需要打开一个串口,使用STM32CubeMx来配置,如下: 然后打开串口中断、添加发送和接收的DMA,DMA参数设置为默认即可,如下图。(DMA可根据自身需求选择是否打开) 配置一下时钟等,点击生成代码,这样就可以使用串口了。首先我们定义一个串口接收的结构体,并定义一个结构体变量,如下: #define RX_MAXLEN 200 //最大接收数据长度 typedef struct{ uint
[单片机]
STM32<font color='red'>单片机</font>串口接收数据的方法
基于Atmega16单片机的PSD数据采集控制电路设计
根据高精度光电位置灵敏探测器(PSD)的工作原理及输出特性,本文介绍了一套基于单片机技术的PSD输出信号数字采集电路的设计方案。通过Atmega16型单片机控制AD1674模/数转换、AD7501多路转换等实现对PSD输出模拟信号的数字化转换和采集。电路结构简单、成本低廉、体积较小,广泛适用于各实验室的PSD输出信号采集模拟实验。 0 引言 PSD作为一种精密的光电位置传感器,具有灵敏度高、响应时间短、位置分辨率高、光谱响应范围大等特点,因此被广泛应用于现代光电检测技术中,尤其是高精度、高速度的数据采集技术中。如何在极短的响应时间内实现多数据的采集,成了采集PSD输出数据的关键。本文基于单片机技术,设计搭建了一套高速的PSD输
[单片机]
基于Atmega16<font color='red'>单片机</font>的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我,哈哈 好了先给个图,这个是按照手机上的设计的~~你看了就懂了 别的就不费话了,一看图不就全明白了 然后就是今天的
[单片机]
AVR<font color='red'>单片机</font>(学习ing)—(一)、ATMEGA16的I\0端口的使用—01
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
[单片机]
51<font color='red'>单片机</font>基础之流水灯(二)
基于单片机的高精度数字直流电流源设计
1 引言 直流电流源是一种应用广泛的电子仪器,对于要求输出电流可调的情况,最简单实用的方法是通过软件控制来实现。使用单片机作为主控部件,系统设计简单方便。本文设计的直流电流源是以凌阳61单片机系统 为核心,采用12位外部扩展MAX531DA和MAX197AD芯片,并在外部电流输出模块中引入PI控制 ,构成电流闭环,有效消除了由于电子器件本身以及外界干扰造成的输出误差,大大提高了电流源的精度。 图1 系统结构图 2 系统原理与设计方案 系统主电路采用全桥整流电路作为负载电路电源,并选用大功率三极管 串联电路进行电流输出。控制电路使用凌阳61单片机,单片机扫描键盘显示接口,当有键按下时,键值通过83编码器CD4532读给单片机。单片机
[单片机]
基于<font color='red'>单片机</font>的高精度数字直流电流源设计
MCU 面临 800V 电动汽车牵引逆变器的 3 种挑战
电动汽车 (EV) 牵引逆变器是电动汽车的核心。它将高压电池的直流电转换为多相(通常是三相)交流电来驱动牵引电机并控制制动能量的再生。电动汽车电子设备正在从 400V 架构转向 800V 架构,这正在逐步现实、普及,更高的电压会带来至少三个好处: - 快速充电 - 在相同电流下提供双倍的电量。 - 通过使用碳化硅 (SiC) 提高效率和功率密度。 - 通过使用更细的电缆来减轻重量,从而减少 800V 相同额定功率所需的电流。 在牵引逆变器中,微控制器(MCU)是系统的大脑,通过模数转换器(ADC)执行电机控制、电压和电流采样,使用磁芯计算磁场定向控制(FOC)算法,使用脉宽调制 (PWM) 信号驱动功率场效应晶体管
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved