包含有数据eeprom存 储器。这个存储器并不直接映象到数据存储器,而是间接映象的。即由一个间接寻址的指针指明要读/写的数据eeprom的地址。64个字节的数据eeprom具有的地址是0~3fh。3-1程序存储器的结构pic16c84单片机具有13位程序计数器,寻址能力为8k×14位的程序存储器空间。实际上对于pic16c84能供使用的只有1k×14位的程序存储器(地址为0000~ 03ffh)。寻址上述单元,如超过了上述地址范围, 地址将卷绕。例对20h单元与地址420h,820h,c20h,1020h,1420h, 1820h,1c20h都将访问到它。系统复位时pc的值为0000h,中断向量是 0004h。pc<12:0>call,return 13retfie,retlw 1级堆栈.8级堆栈复位地址 0000h外部中断向量 0004h用户存贮空间 3ffh1fffh图4-2程序存储的映象和堆栈 3-2数据存储器的结构数据存储器被分成两个区域。第一个是专用功能寄存器(sfr)区域,第二是通用寄存器区域(gpr)。sfr控制着器件的操作。数据存储器被分成0块和1块。通过程序时状态寄存器stat
少发生错误的机会。另外串口通讯中,要增加通讯超时处理机制,中断处理中要注意数据和程序状态的保护,完善出错处理程序,使用电源监测掉电保护硬件和看门狗技术等。 串口通讯数据帧中采用了高可靠性的循环冗余校验(crc)技术,极大地降低了数据误码率,在连续运行几个月的大量数据中没有发现误码。 下面以读命令的通讯格式为例介绍集中器中与上位机的通讯流程图(图2),集中器中与下位机的通讯与此相似。上位机发送命令字节串为:从机地址、功能号03h、存储器起始地址、要读的字节数n、crc校验码(如01h,03h,1020h,40h,crc)。集中器有各自唯一的地址,只有地址匹配的(01号)集中器才接收完整命令,并回送数据:从机地址、功能号、数据字节数n、从存储器起始地址处所读的n个数据和crc校验码。crc校验采用快速查表算法。 首先,在程序的主循环之前,要初始化串口1、串口2和1ms定时器;并调用init_receive state,清正在接收和回送状态标志位,清已接收或已回送的通讯字节数计数器,清通讯缓冲区等,再设置通讯超时值(几至几十毫秒),最后开中断进入主循环。 其次,上位机发送命令时,集中器进入接收
器也包含有数据eeprom存 储器。这个存储器并不直接映象到数据存储器,而是间接映象的。即由一个间接寻址的指针指明要读/写的数据eeprom的地址。64个字节 的数据eeprom具有的地址是0~3fh。3-1程序存储器的结构pic16c84具有13位程序计数器,寻址能力为8k×14位的程序存储器空间。实际上对于pic16c84能供使用的只有1k×14位的程序存储器(地址为0000~ 03ffh)。寻址上述单元,如超过了上述地址范围, 地址将卷绕。例对20h单元与地址420h,820h,c20h,1020h,1420h, 1820h,1c20h都将访问到它。系统复位时pc的值为0000h,中断向量是 0004h。pc<12:0>call,return 13retfie,retlw 1级堆栈.8级堆栈复位地址 0000h外部中断向量 0004h用户存贮空间 3ffh1fffh图4-2程序存储的映象和堆栈 3-2数据存储器的结构数据存储器被分成两个区域。第一个是专用功能寄存器(sfr)区域,第二是通用寄存器区域(gpr)。sfr控制着器件的操作。数据存储器被分成0块和1块。通过程序时状态寄存器stat