51内核单片机实现CRC-8校验,同样适用于51内核的其他芯片(只要稍微修改一下PIC芯片同样适用)

这篇博客介绍了如何在51内核单片机上实现CRC-8校验,提供了三种方法:半字节查表、单字节查表和逐位计算,并给出了详细代码。适合不同运算速度和ROM大小的单片机选择。

#include "reg52.h"

#define uint8 unsigned char

unsigned char str[]={0x28,0x6D,0x00,0x85,0x00,0x00,0x00,0xCF};

uint8 CRC_8_UP_NiByte(uint8 * dat, uint8 len, uint8 oldcrc);
uint8 CRC_8_UP_Byte(uint8 * dat, uint8 len, uint8 oldcrc);
uint8 CRC_8_UP_Bit(uint8 * dat, uint8 len, uint8 oldcrc);

/*CRC的初始值为0x00,多项式为0xff,高位在先 */
/*方法一 */
//---------------------------------------
// 半字节CRC8(UP_左移正序) 0xFF 余式表
//---------------------------------------
uint8 code CRC_8_UP_NiByte_Tab[ 16 ] = {
0x00 , 0xFF , 0x01 , 0xFE ,
0x02 , 0xFD , 0x03 , 0xFC ,
0x04 , 0xFB , 0x05 , 0xFA ,
0x06 , 0xF9 , 0x07 , 0xF8
};
 
 
//---------------------------------------
// 功能:半字节查表计算CRC8(UP_左移正序)
// 输入:
//      uint8 * dat:要计算CRC的数据指针
//      uint8 len  :数据长度
//      uint8 oldcrc:CRC初始值
// 输出:生成的新CRC值
//------------------

Microchip的PIC15F325是一款基于RISC架构的8单片机,专为需要高精度模拟和数字控制的应用而设计。该芯片具有低功耗、高性能的特点,并且集成了多种外设功能,适用于广泛的工业、汽车和消费类电子应用。 ### 主要规格 - **内核特性**: - 高性能RISC CPU,支持35条指令,大部分指令在一个周期内完成。 - 工作频率最高可达32 MHz,提供高效的处理能力。 - 支持中断嵌套,具备多个优先级级别,增强系统的实时响应能力。 - **存储器配置**: - 程序闪存(Flash):4K x 14位,支持在线编程(ISP)和自编程(ICSP),允许用户在运行时更新代码[^1]。 - 数据存储器(RAM):256字节通用寄存器,加上额外的特殊功能寄存器(SFR),用于存储临时数据和状态信息。 - **电源管理**: - 宽电压范围:2.0V至5.5V,适应不同的供电环境。 - 多种低功耗模式,包括休眠(Sleep)模式和空闲(Idle)模式,延长电池寿命。 - **振荡器选项**: - 内部高频振荡器:最高可配置为32 MHz,无需外部晶振即可实现高速运行。 - 外部晶振/陶瓷谐振器支持,提供更高的时钟精度和稳定性。 - **输入/输出端口**: - 提供多达17个I/O引脚,支持双向配置,并带有上拉电阻和中断唤醒功能。 - 某些I/O引脚支持模拟输入,可用于ADC采集或其他模拟功能。 - **定时器与计数器**: - 包含两个8位定时器(Timer0和Timer1)以及一个16位定时器(Timer2),支持多种工作模式如定时、计数和PWM生成。 - Timer2特别适合用作PWM发生器,配合CCP模块实现精确的脉宽调制控制。 - **通信接口**: - 集成一个增强型USART模块,支持异步串行通信、同步主模式SPI以及LIN总线协议。 - 还包含一个I&sup2;C™兼容的主从模式接口,便于与其他器件进行多主机通信。 - **模数转换器(ADC)**: - 10位分辨率ADC,最多支持13个外部通道,能够快速准确地将模拟信号转换为数字值。 - 自动采样和保持电路确保了高精度测量。 - **比较器与运算放大器**: - 内置两个模拟比较器,支持内部参考电压设置,适用于简单的阈值检测。 - 可选配的运算放大器模块,扩展了芯片在模拟信号处理方面的灵活性。 - **看门狗定时器(WDT)**: - 硬件看门狗定时器防止程序跑飞,提高系统可靠性。 - **其他功能**: - 在线调试接口(ICD),支持断点和单步执行,方便开发和调试。 - CRC校验模块用于数据完整性验证,提升系统安全性。 ### 应用领域 PIC15F325因其丰富的集成外设和灵活的电源管理特性,非常适合应用于以下场景: - 工业自动化控制系统 - 智能传感器节点 - 电机控制和驱动 - 消费电子产品中的便携式设备 - 汽车电子子系统,如车身控制模块 ### 开发工具和支持 Microchip提供了完整的开发生态系统来支持PIC15F325的设计,包括: - **MPLAB X IDE**:集成开发环境,支持项目创建、编译、下载和调试。 - **MPLAB XC8 编译器**:优化的C语言编译器,简化高级语言编程。 - **PICkit 3/4 编程器**:低成本的在线烧写工具,支持快速原型开发。 - **数据手册和技术文档**:详细的技术说明和应用笔记,帮助开发者深入了解芯片特性和使用方法。 ```c // 示例:初始化PIC15F325的LED输出 #include <xc.h> // 设置配置字 #pragma config FOSC = INTOSCIO // 使用内部振荡器 #pragma config WDTE = OFF // 关闭看门狗定时器 #pragma config PWRTE = ON // 开启上电延时定时器 #pragma config MCLRE = OFF // MCLR引脚作为普通I/O #pragma config CP = OFF // 禁用代码保护 #pragma config IOSCFS = 8MHZ // 内部振荡器频率设为8MHz void main(void) { TRISB = 0x00; // 将PORTB设为输出 PORTB = 0xFF; // 点亮所有连接到PORTB的LED while(1) { // 主循环中可以添加更多逻辑 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值