单片机和PC操作双口RAM方法的问题
作了一个单片机和Pc机访问双口RAM的程序。
单片机把采集到的数据传送到PC
PC发出相应指令控制单片机操作。
如下图。
遇到的问题是,如PC机 写RAm经常都是在操作B1区,所以B2区放的是比较旧的指令,这样是很危险的,一不小心读错指令会使设备损坏。
采取的临时办法是,每次都给B1B2 区写数据,判等后再执行,但是这样的话,就改变了设计的初衷:提高效率。
1,应该怎么解决?
2,有没有其它更好的访问方法?
//------------------------------------------------------------------------------
//双口RAM访问程序
//为了避免与PC机的读写冲突,设计一种结构,每次读状态单元。如下图所示:
// | _____________________|000H
// | |
// | A1 | 000H~0FEH: AVR_W/PC_R
// | |0FEH
// |___状态信息,REG-A1___|0FFH
// | |100H
// | A2 |
// | |1FEH
// |====状态信息REG-A2 ===|1FFH
// | |200H PC_W/AVR_R
// | B1 |
// | | PC_W/AVR_R
// |____状态信息REG-B1 _ |2FFH
// | |300H
// | B2 |
// | |3FEH
// |____状态信息REG-B2____|3FFH
//-----------------------------------------------------------------------------
//A1、A2为单片机写、 PC机读数据区域?
//状态信息A1定义:1AH表示单片机写A1区域允许,单片机初始化时写入1AH
//状态信息A2定义:2AH表示单片机写A2区域允许,单片机初始化时写入2AH
//B1、B2为PC机写、 单片机读数据区域?
//状态信息B1定义:B1H表示PC写B1区域允许,PC机初始化时写入B1H
//状态信息B2定义:B2H表示PC写B2区域允许,PC机初始化时写入B2H
//A1区访问控制
// 1AH、2AH表示单片机可写操作;A1H、A2表示PC机可读操作;
// REG-A1=1AH时,单片机可写A1区,PC机禁止读A1区;单片机A1区写完成后,置REG-A1为A1H;
// REG-A1=A1H时,PC机可读A1区,单片机禁止写A1区; PC机A1区读完成后,置REG-A1为1AH;
// 为保证状态信息的可靠,对状态信息寄存器的信息读应进行多次,且均正确和相等时引用。
//B1区访问控制
// B1H、B2H表示PC机可写操作;1BH、2B表示单片机可读操作;
// REG-B1=B1H时,PC机可写B1区,单片机禁止读B1区; PC机B1区写完成后,置REG-B1为1BH;
// REG-B1=1BH时,单片机可读B1区,PC机禁止写B1区; 单片机B1区读完成后,置REG-A1为B1H;
// 为保证状态信息的可靠,对状态信息寄存器的信息读应进行多次,且均正确和相等时引用。