(b)软件从CPU程序流程图如图3-2所示。
此CPU程序主要完成了键盘、显示功能。与主CPU进行串行通信,通过键盘可以设置各种参数,如可以设置触发字,当满足触发条件时进行触发并显示
图3-2 从 CPU(AT89C51)程序流程
3.2 中断服务子程序
图3-2 中断服务子程序
3.3 AT24C04程序设计
我们利用AT24C04对数据进行存储和掉电保护。与AT89C51相连时,P3.5用作SDA线,P3.4用作SCL线。
AT24C04的程序流程:
图3-3 AT24C04流程
总线协议:
•总线空闲:SCL和SDA都保持高电平。
•开始信号:SCL保持高电平的状态下,SDA出现下降沿。出现开始信号以后, 总线被认为"忙"。
•停止信号:SCL保持高电平的状态下,SDA出现上升沿。停止信号过后,总线被认为"空闲"。
•总线忙: 在数据传送开始以后,SCL为高电平的时候,SDA的数据必须保持稳定,只有当SCL为低电平的时候才允许SDA上的数据改变。
开始信号:
START_BIT: SETB SDA ;SDA为高电平
NOP
SETB SCL ;SCL 为高电平
NOP
CLR SDA ;SDA为低电平
NOP
CLR SCL ;SCL 为低电平
RET
;---------------------------------------------------------------------------
停止信号:
STOP_BIT: CLR SDA ;SDA为低电平
NOP
SETB SCL ;SCL 为高电平
NOP
SETB SDA ;SDA为高电平
NOP
CLR SCL ;SCL 为低电平
RET
;-------------------------------------------------------------------------------------------
发送一个字节:
SEND: MOV R0,#08H ;R0为8 H
SEND0:RLC A ;A左移
MOV SDA,C ;数据传输
ETB SCL ;SCL 为高电平
ACALL DEALY ;延时
CLR SCL ;SCL 为低电平
DJNZ R0 ,SEND0 ;R0=0时转SEND0
SETB SDA ;SDA为高电平
RET
接收一个字节:
REV: MOV R0,#08H ;R0为8 H
MOV C,SDA ;数据接受
RLC A ;A左移
CLR SCL ;SCL 为低电平
DJNZ R0,REV0 ;R0=0时转SEND0
RET
;-----------------------------------------------------------------------
接收一个应答位:
ACKI:SETB SCL ;SCL 为高电平
上一页 [1] [2] [3] [4] [5] [6] 下一页