DS18B20+DS1302项目报告(4)

2020-02-21 18:33

MOVC

mov mov A,@A+DPTR

dptr,#tab a,b

lcall xsj

;以上显示分

mov bcd,second ;秒数值赋给bcd

lcall bcd_dec mov lcd,#0c6h lcall xzl mov dptr,#tab

MOVC

A,@A+DPTR

lcall xsj

MOVC

mov lcall mov mov A,@A+DPTR

lcd,#0c7h xzl dptr,#tab a,b

lcall xsj ;以上显示秒

ret

;///////////////////////////// ;bcd转十进制 bcd_dec: mov

a,bcd

mov b,#16 div ab ret

;a中放置十位,b中放置个位

;////////////////////////////// ;lcd写指令子程序 xzl:

clr rw

clr rs setb

en

16

lcall delay3 clr en ret

;///////////////////////////// ;lcd写数据子程序 xsj:

mov lcd,a

clr rw setb setb

rs en

lcall delay3 clr en ret

;///////////////////////////// ;延时子程序 delay3:

mov r5,#4

;延时5ms

d0: mov r6,#255

djnz djnz ret

r6,$ r5,d0

;///////////////////////////// ;表格 tab:

DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h ;0到9

;-------------------------------------------------------------- EEPROM:

MOV R0,#27H

;要写入的数据,TH,TL

MOV R1,#00H ; 要保存数据的首地址 MOV R2,#02H

;数据的长度

REP: CLR A

MOV A,@R0

17

MOV B,A

LCALL WR_Byte ;调用24c02写子程序 INC R1 INC R0

DJNZ R2,REP RET

;-----------------------------------------

WR_Byte: LCALL Begin ;调用启动24c02子程序 REP_S1:

MOV A,#0A0H ;写器件地址

;调用发送一个字节到I2C总线子程序 ;调用应答信号检测程序

LCALL Send_B LCALL WAITACK

JC REP_S1 ;没有应答则重发数据

A,R1 ;写入地址

REP_S2: MOV

LCALL Send_B ;调用发送一个字节子程序 LCALL WAITACK JC REP_S2

A

A,B ;写入数据

REP_S3: CLR

MOV

LCALL Send_B LCALL WAITACK JC REP_S3

LCALL STOP ;调用停止子程序 LCALL Delay ;10MS延时 RET

;//////向IIC总线发送一个字节数据子程序///////////////////////////// ;入口参数:A---待发送数据存放在A中

;////////////////////////////////////////////////////////////////// Send_B: MOV R7,#08H ;发送位数 S_B: RLC A

18

MOV SDA,C NOP

SETB SCL NOP

CLR SCL

DJNZ R7,S_B ;8位发送完毕? NOP RET

;//////检测应答信号////////////////////////////////////////////// ;出口参数:C---是否有应答信号

;//////////////////////////////////////////////////////////////// WAITACK: SETB

NOP

SETB SCL NOP

C,SDA

SDA ;释放SDA信号线

REP3: MOV

CLR SCL NOP RET

;***************** RD_EEPROM:

MOV R0,#27H MOV R1,#00H

;设置读出数据保存首地址 ;送读数首地址

MOV R2,#02H ;要读2个数

REP1: LCALL RD_Byte ;调用24c02读子程序

MOV @R0,A ;把读出数据送到TH,TL INC R0

;保存数据地址加一,保存在27H,28H单元中,

27H为TH,28H为TL

INC R1 ;

19

DJNZ R2,REP1 RET

;

;//////读24c02操作子程序/////////////////////////////////////// ;输入参数:R2---要读的字节地址, ;输出参数: A---结果

;////////////////////////////////////////////////////////////// RD_Byte: REP_S4:

LCALL MOV

Begin A,#0A0H

;启动信号

;器件地址

LCALL Send_B LCALL WAITACK JC REP_S4

MOV

;调用发送一个字节子程序

REP_S5:

A,R1 ;送读数地址

LCALL Send_B LCALL WAITACK JC REP_S5

LCALL

Begin ;重发启动信号

;读数

REP_S6:

MOV A,#0A1H LCALL Send_B LCALL WAITACK

JC REP_S6

LCALL Receive_B ;调用从I2C总线上接收一个字节数据子

程序

LCALL Stop RET IIC

总线上接收一个字节数据子程序

;//////从

////////////////////////////// ;出口参数:A---接收数据存放在A中

;////////////////////////////////////////////////////////////////////

20


DS18B20+DS1302项目报告(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:教科版三年级科学上册第一单元知识点整理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: