51单片机驱动I2C(24C02)汇编语言程序

发布者:心满意足最新更新时间:2015-08-26 来源: eefocus关键字:51单片机  驱动I2C  汇编语言 手机看文章 扫描二维码
随时随地手机看文章
;程序说明:将MPU内部的55h~~~58h中的内容由外部中断0经I2C总线写到24c02中,然后由外部中断1将所写的内容读到 
;MPU内部数据存储器60H~~63H 
 
SCL EQU P1.1  
SDA EQU P1.0  
org 0000h 
jmp begin 
org 0003H 
ljmp write 
org 0013H 
ljmp read 
 
;主程序 
begin: 
mov 55H,#41H 
mov 56h,#42h 
MOV 57h,#43H 
MOV 58H,#44H 
mov tcon,#0 
setb ex0 
setb ex1 
setb ea 
main: 
nop 
jmp main 
 
;********************************************************** 
;读24C02的数据的程序 
read:     
ACALL START ;开始信号 
MOV A,#0A0H ;发从机的地址 
ACALL SEND ;发送控制字 
ACALL ACKI;接收应答 
JC OUTEND ;不响应,转结束 
MOV A,#00H;设置要读取从器件的片内地址 
ACALL SEND 
ACALL ACKI 
JC OUTEND 
ACALL START ;开始信号 
ORL A,#0A1H;设置控制字,准备接收 
ACALL SEND ;发送控制字 
ACALL ACKI 
JC OUTEND 
MOV R2,#4 ;准备接收数据的字节数 
MOV R1,#60H ;接收字节存放在主器件中的地址60H 
IN0: 
ACALL REV ;接收一个字节 
ACALL ACKO;主机向24C02发送应答信号 
MOV @R1,A ;把接收到数据存放到存储单元中 
INC R1 
DEC R2 
CJNE R2,#1,IN0 ;判断是否为最后一个接收字节 
ACALL REV ;接收最后一个字节 
ACALL ACKN; 
MOV @R1,A ;把接收到数据存放到存储单元中 
OUTEND: 
ACALL STOP ;停止信号 
jnb p3.3,$ 
reti 
 
 
;********************************************************** 
;写24C02的数据的程序 
write: 
LCALL START ;开始信号 
MOV A,#0A0H ;定控制字,准备发送 
ACALL SEND ;发送控制字 
ACALL ACKI ;接收应答 
JC WRITEEND ;从器件不响应,转结束 
MOV A,#00H ;设置从器件片内地址 
ACALL SEND ;发送片内地址 
ACALL ACKI 
JC WRITEEND 
MOV R2,#4;设置发送字节数 
MOV R1,#55H ;主器件中要发送数据的头地址 
OUT1: 
MOV A,@R1 
ACALL SEND;发送数据 
ACALL ACKI; 
JC WRITEEND 
INC R1 
DJNZ R2,OUT1 ;发送未结束,继续发送 
WRITEEND: 
ACALL STOP ;停止信号 
jnb p3.2,$;防止再次中断 
reti 
;******************************************************** 
;******************** 
;I2C模拟程序 
;开始信号 
START: 
CLR SCL  
SETB SDA 
ACALL DELAY   
SETB SCL 
ACALL DELAY  
CLR SDA  
ACALL DELAY   
CLR SCL  
RET  
; 停止信号: 
 STOP:CLR SCL  
 CLR SDA  
 ACALL DELAY  
 SETB SCL  
 ACALL DELAY  
 SETB SDA  
 ACALL DELAY  
 RET  
; 接收一个字节 
 REV: MOV R0,#08H  
 REV0: SETB SCL  
 LCALL DELAY 
 MOV C,SDA 
 RLC A  
 CLR SCL  
 LCALL DELAY 
 DJNZ R0,REV0  
 RET  
;发送一个字节  
SEND: 
MOV R0,#08H  
CLR SCL  
SEND0: 
RLC A   
MOV SDA,C   
SETB SCL   
ACALL DELAY  
CLR SCL  
DJNZ R0,SEND0 
SETB SDA  
RET  
;接收一个应答位: 
ACKI: 
SETB SCL   
ACALL DELAY   
MOV C,SDA  
CLR SCL  
RET  
; 发送一个接收应答位 
 ACKO: 
 CLR SDA 
 ACALL DELAY 
 SETB SCL 
  ACALL DELAY 
 CLR SCL 
  ACALL DELAY 
 SETB SDA 
  ACALL DELAY 
 RET  
 ;发送一个非接收接收应答位 
 ACKN: 
 SETB SDA 
 ACALL DELAY 
 SETB SCL 
 ACALL DELAY 
 CLR SCL 
 ACALL DELAY 
DELAY: 
NOP 
NOP 
NOP 
RET 
END
关键字:51单片机  驱动I2C  汇编语言 引用地址:51单片机驱动I2C(24C02)汇编语言程序

上一篇:51单片机的LCD1602液晶屏密码锁汇编程序
下一篇:51单片机的串口测试C语言程序

推荐阅读最新更新时间:2024-03-16 14:30

51单片机逻辑运算指令表与示例
1.逻辑运算 指令 的一般性说明 与、或、异或的逻辑运算指令可以Acc或direct为目标。但是以direct为目标时,另一操作数只能是Acc或立即数。 与、或、异或是对位逻辑运算。 其他逻辑运算指令只对Acc操作。 小循环不影响Cy,大循环Cy在循环圈内。 除了RLC和RRC,逻辑运算指令不影响P以外的标志位。 2.与、或、异或的特殊用途 用ANL指令屏蔽指定位 例:ANL A,#0FH ;屏蔽高4位 用ORL指令将指定位置1 例:ORL A,#0FH ;将低4位置1 用ORL指令拼接一个字节 例:ANL A,#0FH ANL B,#0F0H ORL A,B 用XRL指令将指定位取反
[单片机]
<font color='red'>51单片机</font>逻辑运算指令表与示例
利用汇编语言实现DES加密算法
DES算法是一种数据加密算法。自从1977年公布以来,一直是国际上的商用保密通信和计算机通信的最常用的加密标准。DES算法的实现一般用高级语言。 关键词:加密算法 DES 汇编语言 目前在金融界及非金融界的保密通信中,越来越多地用到了DES算法。DES(Data Encryption Standard)即数据加密算法,是IBM公司于 1977年研究成功并公开发表的。随着我国三金工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡(IC卡)中被广泛应用,以此来实现关键数据的保密。如信用卡持卡人的PIN的加密传输、IC卡与POS间的双向认证、金融交易中的密码键盘等,均用到DES算法。由于密码键盘不可能使用高级语言,所以用
[工业控制]
基于AT89S51单片机的低频信号设计及仿真研究
传统的低频信号源或发生装置,因其大部分采用模拟电路设计的原因,一般具有价格昂贵、输出性能欠佳且不便于调节等问题,工程应用价值较低。为避免传统低频信号源或发生装置的上述技术缺点,降低技术开发成本和提高技术开发效率,文中利用AT89S51可以在线编写程序的特点,结合了DAC接口技术,设计了波形、频率、相位均调节方便并可产生方波、三角波、锯齿波、正弦波四种波形的技术方案。这种新的低频信号源设计方案,可以使得波形信号的产生由单片机查表软件产生,波形的周期依靠程序设置来改变,具有线路简单、结构紧凑、价格低廉、性能优越等优点。 1 设计目标和思路 文中设计目标是完成4种波形信号输出,即正弦波、三角波、方波和锯齿波,并使其在低频范围内具
[单片机]
基于AT89S<font color='red'>51单片机</font>的低频信号设计及仿真研究
基于51单片机之8个独立式键盘驱动程序
#define KEY P1 //键盘所连接的I/O接口组定义 *********************************************************** 函数名:8个独立式键盘驱动程序 调 用:? = Key (); 参 数:无 返回值:unsigned char 键值0~8 结 果:有键按下时返回值为键值1~8,无键按下时返回值为0 备 注:在主函数中不断调用 *********************************************************/ unsigned char Key ( ){ //8个独立键盘处理程序 unsigned char a,
[单片机]
51单片机实验】5-串行接口与键盘接口技术应用
一、实验目的 1.掌握51单片机串行口的应用设计 2.掌握按键的工作原理和消抖动的方法 二、实验设备 1、微机一台,Keil C集成开发环境 2、DP-51PRO.NET综合实验箱 3、Proteus仿真软件 三、实验内容 1、P1接8个按键或拨位开关,P2接8个发光LED,编程实现读入单片机P1状态,通过串行方式1实现自发、自收,并将接收到的内容从P2口的LED显示出来。(注意:TXD(P3.1)和RXD(P3.0)的接线。—实验箱的要求,仿真请忽略) 程序及必要的注释: /*单片机自发自收,将P1口信息传给P2口*/ #include reg51.h void main () { SCON
[单片机]
【<font color='red'>51单片机</font>实验】5-串行接口与键盘接口技术应用
如何在Linux下进行stc51单片机的开发
第一次接触 单片机 ,自然选择了简单的51单片机。然而我的操作系统是 Linux 。在 Windows 下上手51似乎很容易。但是 Linux 上搭建 51 开发环境不是很顺。 那么谈谈 Linux 我如何搭建 STC89C52RC 的开发环境吧。 (一) 选择自己喜好的 代码编辑器 即可。vim , emacs , gedit 等都可以。 (二) 安装编译器。一般选择 sdcc 。一般可从发行版的包管理器中直接安装。 如Arch中:   $ sudo pacman -S sdcc 如果不行,需要自行下载编译。 简单介绍使用sdcc: 假如当前目录有一个写好的源文件 main.c 。 使用如下简单方式即可编译。 $ s
[单片机]
51单片机的边沿触发及电平触发的区别
51单片机的边沿触发及电平触发简介及测量 51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。 这个原理很好理解。但应用时需要特别注意的几点: 1)电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电
[单片机]
解析8051单片机的三种数据传输方式
单片机CPU与外部设备交换信息通常有如下几种方式:无条件传送方式,查询传送方式和中断传送方式。我们以单片机与微型打印机接口为例讲述这三种方式。假定用户要打印三个数据,这三个数据保存在单片机的内部数据存储器10H,11H,和12H中,8051用并口P2与微型打印机的并行数据口DB进行数据交换。 (1)无条件传送方式 这种数据传送方式中没有联络信号,即CPU总是认为打印机在如何时候都是处于“准备好”的状态。这种传送方式中只需要在程序中加入数据送往P2的指令,数据传送便可以实现。但这种数据传送方式有一个致命弱点,数据易丢失,这是因为CPU的速度相当快,而打印机的速度相对来说较慢,其结果是在打印机打印一个数据的时间内,CPU已送来了多
[单片机]
解析80<font color='red'>51单片机</font>的三种数据传输方式
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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