上限设置:
按SET键选择显示“SHP”,绿色显示屏显示该项参数的数值,选择移位、递增、递减键设置或修改该项参数。该参数表示告警点高于主控设定点的相差值。
下限设置:
按SET键选择显示“SLP”,绿色显示屏显示该项参数的数值,选择移位、递增、递减键设置或修改该项参数。该参数表示告警点低于主控设定点的相差值。
STC 很多都有内部EEPROM,如11或12系列的STC单片机,读写内部EEPROM有一定限制,比如写,必须先擦除再写,而且一次必须擦除一个扇区,所以还是很麻烦的,只能覆盖。要实现你的功能,一点问题没有,上电后先读取上次的计数值,再加1重新写进去就可以了。
以下是EEPROM读写子程序供参考:
------------------------------------------------
读一字节,调用前需打开 IAP 功能,入口:DPTR = 字节地址,返回:A = 读出字节
IAP_READ:
MOV IAP_CONTR,#ENABLE_IAP 打开 IAP 功能, 设置 Flash *** 作等待时间
MOV IAP_CMD,#ISP_IAP_BYTE_READ 设置为IAP/ISP/EEPROM字节读模式命令
MOV IAP_ADDRH,DPH 设置目标单元地址的高8位地址
MOV IAP_ADDRL,DPL 设置目标单元地址的低8位地址
CLR EA
MOV IAP_TRIG,#5AH 先送5Ah,再送A5h到ISP/IAP触发寄存器,每次都需如此
MOV IAP_TRIG,#0A5H 送完A5h后,ISP/IAP命令立即被触发起动
NOP
MOV A,IAP_DATA 读出的数据在IAP_DATA单元中,送入累加器A
SETBEA
LCALL IAP_Disable 关闭 IAP 功能, 清相关的特殊功能寄存器,使CPU处于安全状态,
一次连续的IAP *** 作完成之后建议关闭IAP功能,不需要每次都关
RET
------------------------------------------------
字节编程,调用前需打开 IAP 功能,入口:DPTR = 字节地址, A=须编程字节的数据
IAP_WRITE:
MOV IAP_CONTR,#ENABLE_IAP 打开 IAP 功能, 设置 Flash *** 作等待时间
MOV IAP_CMD,#ISP_IAP_BYTE_PROGRAM 设置为IAP/ISP/EEPROM字节编程模式命令
MOV IAP_ADDRH,DPH 设置目标单元地址的高8位地址
MOV IAP_ADDRL,DPL 设置目标单元地址的低8位地址
MOV IAP_DATA,A 要编程的数据先送进ISP_DATA寄存器
CLR EA
MOV IAP_TRIG,#5AH 先送5Ah,再送A5h到ISP/IAP触发寄存器,每次都需如此
MOV IAP_TRIG,#0A5H 送完A5h后,ISP/IAP命令立即被触发起动
NOP
SETB EA
LCALL IAP_Disable 关闭 IAP 功能, 清相关的特殊功能寄存器,使CPU处于安全状态,
一次连续的IAP *** 作完成之后建议关闭IAP功能,不需要每次都关
RET
------------------------------------------------
擦除扇区, 入口:DPTR = 扇区地址
IAP_Erase:
MOV IAP_CONTR,#ENABLE_IAP 打开 IAP 功能, 设置 Flash *** 作等待时间
MOV IAP_CMD,#03H 设置为IAP/ISP/EEPROM扇区擦除模式命令
MOV IAP_ADDRH,DPH 设置目标单元地址的高8位地址
MOV IAP_ADDRL,DPL 设置目标单元地址的低8位地址
CLR EA
MOV IAP_TRIG,#5AH 先送5Ah,再送A5h到ISP/IAP触发寄存器,每次都需如此
MOV IAP_TRIG,#0A5H 送完A5h后,ISP/IAP命令立即被触发起动
NOP
SETB EA
LCALL IAP_Disable 关闭 IAP 功能, 清相关的特殊功能寄存器,使CPU处于安全状态,
一次连续的IAP *** 作完成之后建议关闭IAP功能,不需要每次都关
RET
------------------------------------------------
IAP_Disable:
关闭 IAP 功能, 清相关的特殊功能寄存器,使CPU处于安全状态,
一次连续的IAP *** 作完成之后建议关闭IAP功能,不需要每次都关
MOV IAP_CONTR,#0 关闭 IAP 功能
MOV IAP_CMD,#0 清命令寄存器,使命令寄存器无命令,此句可不用
MOV IAP_TRIG,#0 清命令触发寄存器,使命令触发寄存器无触发,此句可不用
MOV IAP_ADDRH,#0FFH 送地址高字节单元为00,指向非EEPROM区
MOV IAP_ADDRL,#0FFH 送地址低字节单元为00,防止误 *** 作
RET
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)