P87LPC764单片机的I2C总线显示电路
;
┆
以下是显示子程序
DISP:CLRF0;清除无应答标志
MOVI2CFG,#30H;请求成为I2C总线主机
JNBMASTER,$;等待成为I2C总线主机
MOVI2CON,#1CH;清除起动条件
MOVA,R2;取从设备地址
ACALLSEND;发送从设备地址
JBF0,DISP2;无应答信号转移
MOVA,#0;SAA1064子地址
ACALLSEND;发送子地址
JBF0,DISP2;无应答信号转移
MOVA,R1;取SAA1064控制码
ACALLSEND;发送控制码
JBF0,DISP2;无应答信号转移
MOVR4,#04H;四只数码管
DISP1:MOVA,@R0;取字形代码
ACALLSEND;发送字形代码
JBF0,DISP2;无应答信号转移
INCR0;修正显示单元地址
DJNZR4,DISP1;
DISP2:ACALLSSTP;发送停止位
RET;
;发送1个字节
SEND:MOVR4,#8H;设置数据格式为8位
SENDB:MOVI2DAT,A;发送数据位
RLA;取下一个数据位
JNBDRDY,$;等待数据准备好
DJNZR4,SENDB;
MOVI2CON,#0A0H;转换为接收模式
JNBATN,$;等待应答信号
JNBRDAT,SENDE;是应答位吗?
SETBF0;建立无应答信号标志
SENDE:RET;
;发送停止位
SSTP:CLRMASTRQ;取消主机位置
MOVI2CON,#21H;产生总线停止条件
JNBATN,$;等待
MOVI2CON,#20H;清除数据准备好标志
JNBATN,$;等待发送停止条件
MOVI2C0N,#91H;释放I2C总线
CLRTIRUN;停止定时器I的运行
RET
┆
以下是显示子程序
DISP:CLRF0;清除无应答标志
MOVI2CFG,#30H;请求成为I2C总线主机
JNBMASTER,$;等待成为I2C总线主机
MOVI2CON,#1CH;清除起动条件
MOVA,R2;取从设备地址
ACALLSEND;发送从设备地址
JBF0,DISP2;无应答信号转移
MOVA,#0;SAA1064子地址
ACALLSEND;发送子地址
JBF0,DISP2;无应答信号转移
MOVA,R1;取SAA1064控制码
ACALLSEND;发送控制码
JBF0,DISP2;无应答信号转移
MOVR4,#04H;四只数码管
DISP1:MOVA,@R0;取字形代码
ACALLSEND;发送字形代码
JBF0,DISP2;无应答信号转移
INCR0;修正显示单元地址
DJNZR4,DISP1;
DISP2:ACALLSSTP;发送停止位
RET;
;发送1个字节
SEND:MOVR4,#8H;设置数据格式为8位
SENDB:MOVI2DAT,A;发送数据位
RLA;取下一个数据位
JNBDRDY,$;等待数据准备好
DJNZR4,SENDB;
MOVI2CON,#0A0H;转换为接收模式
JNBATN,$;等待应答信号
JNBRDAT,SENDE;是应答位吗?
SETBF0;建立无应答信号标志
SENDE:RET;
;发送停止位
SSTP:CLRMASTRQ;取消主机位置
MOVI2CON,#21H;产生总线停止条件
JNBATN,$;等待
MOVI2CON,#20H;清除数据准备好标志
JNBATN,$;等待发送停止条件
MOVI2C0N,#91H;释放I2C总线
CLRTIRUN;停止定时器I的运行
RET
- 上一篇论文: 基于MSP430的三相电能表SA9904B采集系统
- 下一篇论文: 一种眼科B型超声诊断议