宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243
宏晶科技:专业单片机 / 存储器供应商 www.MCU-Memory.com STC12C5410AD 系列 1T 8051 单片机中文指南
40
LCALL Delay
;延时
MOV
SP, #7FH ;堆栈指针指向 7FH 单元
;************************************************
;将 EEPROM 测试起始地址单元的内容读出
MAIN1:
MOV DPTR, #DATA_FLASH_START_ADDRESS ;将 EEPROM 测试起始地址送 DPTR 数据指针
LCALL Byte_Read
MOV 40H, A ;将 EEPROM 的值送 40H 单元保存
CJNE A, #DEBUG_DATA, DATA_NOT_EQU_DEBUG_DATA ;如果数据比较不正确,就跳转
DATA_IS_DEBUG_DATA:
;数据是对的,亮 P1.7 控制的灯,然后在 P1 口上将 EEPROM 的数据显示出来
MOV
P1, #01111111B ;如 (DATA_FLASH_START_ADDRESS)的值等于 #DEBUG_DATA, 亮 P1.7
LCALL Delay
;延时
MOV
A, 40H ;将保存在 40H 单元中 EEPROM 的值从 40H 单元送累加器 A
CPL A ;取反的目的是相应的灯亮代表 1,不亮代表 0
MOV P1,A ;数据是对的,送 P1 显示
WAIT1:
SJMP WAIT1 ;数据是对的,送 P1 显示后,CPU 在此无限循环执行此句
DATA_NOT_EQU_DEBUG_DATA:
;EEPROM 里的数据是错的,亮 P1.3 控制的灯,然后在 P1 口上将错误的数据显示出来,
;再将该 EEPROM 所在的扇区整个擦除,将正确的数据写入后,亮 P1.5 控制的灯
MOV P1, #11110111B ;如 (DATA_FLASH_START_ADDRESS)的值不等于 #DEBUG_DATA, 亮 P1.3
LCALL Delay
;延时
MOV
A, 40H ;将保存在 40H 单元中 EEPROM 的值从 40H 单元送累加器 A
CPL A ;取反的目的是相应的灯亮代表 1,不亮代表 0
MOV P1, A ;数据不对,送 P1 显示
LCALL Delay
;延时
MOV DPTR, #DATA_FLASH_START_ADDRESS ;将 EEPROM 测试起始地址送 DPTR 数据指针
ACALL Sector_Erase ;擦除整个扇区
MOV DPTR, #DATA_FLASH_START_ADDRESS ;将 EEPROM 测试起始地址送 DPTR 数据指针
MOV A, #DEBUG_DATA ;写入 EEPROM 的数据为 #DEBUG_DATA
ACALL Byte_Program ;字节编程
MOV P1, #11011111B ;将先前亮的 P1.3 灯关闭 ,再亮 P1.5 灯,代表数据已被修改
WAIT2:
SJMP WAIT2 ;字节编程后,CPU 在此无限循环执行此句
;************************************************