C51串口通信协议新设计:中断方式与AT89c51实现

需积分: 9 3 下载量 154 浏览量 更新于2024-09-15 收藏 37KB DOC 举报
51串口通信协议(新型篇)是一份由网友牛毅编写的C51编程代码,专注于AT89c51单片机与PC之间的串口通信。该程序采用中断方式进行设计,适用于ASCII码表示的数据传输。通信过程遵循特定的帧结构,确保了数据传输的可靠性。 帧结构在该协议中扮演关键角色,它包含以下几个部分: 1. **帧头标志**:分为F_ST10x6e和F_ST20x79,分别表示不同的帧开始,如读取或写入操作。 2. **帧类型**:F_R0x72用于读取,F_W0x77用于写入,F_D0x64用于数据帧,F_B0x62用于写回应帧,F_C0x63用于重发命令帧,F_Q0x71用于放弃帧,展示了多样化的操作类型。 3. **器件地址**:通过F_ADDR0x31标识发送或接收设备的地址范围。 4. **启始地址**、**长度n** 和**效验和**:这些字段用来确定要传输的数据长度,并进行数据完整性校验。 5. **帧尾标志**:F_END0x7a表示帧的结束,确保通信的有序性。 6. **辅助标志**:如F_SPACE0x30代表空格,F_ERR10x31和F_ERR20x32用于错误检测,反映通信状态。 程序还定义了一些常量,如S_MAXBUF16作为接收和发送数据的最大缓存容量,以及FIELD_MAXBUF48作为最小场缓存,考虑到协议数据传输是以20字节为单位进行的。communicationingP1_7是一个标志位,用于指示通信正在进行中;ERRFRAME_MAX5则设置了连续错误帧的最大允许次数,超过这个限制可能会触发错误处理。 此外,该协议仅针对AT89c51的具体硬件设计,提供了可靠的硬件访问接口。版本信息为1.0,作者牛毅,QQ联系方式为75011221。这份代码是为C51编写的,适用于中断模式下的串口通信,并且只针对特定的通信协议细节进行了封装,使得开发者能够方便地利用此协议进行数据交换。