【HC89S003F4开发板】 6crc校验
HC89S003F4开发板crc校验
前言
第一次用有带crc的mcu
使用资料自带的demo
- @实现效果 通过PC向MCU发送5个8位数据,MCU返回CRC校验值
void main()
{
/************************************系统初始化****************************************/
WDTCCR = 0x00; //关闭看门狗
//本例程为方便测试关闭看门狗,实际使用中,建议客户打开看门狗,详见WDT复位例程
CLKSWR = 0x51; //选择内部高频RC为系统时钟,内部高频RC 2分频,Fosc=16MHz
CLKDIV = 0x01; //Fosc 1分频得到Fcpu,Fcpu=16MHz
/**********************************相关配置初始化**************************************/
P2M0 = P2M0&0x0F|0x80; //P21设置为推挽输出
P0M1 = P0M1&0x0F|0x20; //P03设置为上拉输入
TXD_MAP = 0x21; //TXD映射P21
RXD_MAP = 0x03; //RXD映射P03
T4CON = 0x06; //T4工作模式:UART1波特率发生器
TH4 = 0xFF;
TL4 = 0x98; //波特率9600
SCON2 = 0x02; //8位UART,波特率可变
SCON = 0x10; //允许串行接收
IE |= 0X10; //使能串口中断
/**********************************CRC配置初始化***************************************/
CRCC = 0x07; //CRC复位,LSB first,复位初值为0xFFFF
EA = 1;
while(1)
{
if(guc_UARTFlag)
{
IE &=~ 0x10; //失能UART1中断
gui_CrcResault = CRC_CalcCRC(guc_UARTbuf_a,sizeof(guc_UARTbuf_a));
//写入校验数据并获取CRC效验值
memcpy(guc_CrcValue_a,&gui_CrcResault,2);//内存拷贝函数
for(guc_i = 0;guc_i< 2;guc_i++)
{
SBUF = guc_CrcValue_a[guc_i]; //发送8位串口数据
while(!(SCON & 0x02));
SCON &=~ 0x02; //清除发送中断标志位
}
CRCC = 0x07; //CRC复位,LSB first,复位初值为0xFFFF
IE |= 0x10; //UART1中断使能
guc_UARTFlag = 0; //标志位清零
guc_UARTCnt = 0; //计数清零
SCON |= 0x10; //UART1接收使能
}
}
}
/***************************************************************************************
* @说明 UART1中断服务函数
* @参数 无
* @返回值 无
* @注 无
***************************************************************************************/
void UART1_Rpt(void) interrupt UART1_VECTOR
{
if(SCON&0x01) //判断接收中断标志位
{
guc_UARTbuf_a[guc_UARTCnt++] = SBUF; //转存8位串口接收数据
if(guc_UARTCnt >= 5)
{
SCON &=~ 0x10; //失能UART1接收
guc_UARTFlag = 1;
}
SCON &=~ 0x01; //清除接收中断标志位
}
}
/**
* @说明 写入需要校验的数据并返回校验结果
* @参数 *fucp_CheckArr : CRC校验数据首地址
* @参数 fui_CheckLen : CRC校验数据长度
* 取值范围 0 - 65535
* @返回值 CRC校验结果。
低位在前,高位在后
* @注 无
*/
unsigned int CRC_CalcCRC(unsigned char *fucp_CheckArr,unsigned int fui_CheckLen)
{
while(fui_CheckLen--)CRCL = *(fucp_CheckArr++);
return CRCR;
}
实现效果
- 打印信息
- 比较结果和工具相同
【HC89S003F4开发板】 6crc校验的更多相关文章
- 【HC89S003F4开发板】 10汇编指令
HC89S003F4开发板汇编指令 一.数据传递类指令 MOV.MOVC.MOVX 1.MOV,用于片内数据存储器中的数据传递指令中. 2.MOVC是与ROM之间的数据传送,而MOVX是与外部RAM数 ...
- 【HC89S003F4开发板】9ASM写定时器1
HC89S003F4开发板ASM写定时器1 一.实现过程 1.外部寄存器设置 扩展 XSFR 采用和 XRAM 同样的访问方式,使用 MOVX A, @DPTR 和 MOVX @DPTR ,A 来进行 ...
- 【HC89S003F4开发板】 8c转义成汇编工程
HC89S003F4开发板建立汇编工程 选择编译文件 @选用开发板闪灯例程,将例程删除多余的注释,后面生成的文件会更直观. #define ALLOCATE_EXTERN #include " ...
- 【HC89S003F4开发板】 7ASM&C混合编程
HC89S003F4开发板ASM&C混合编程 一.前言 在配套资料里有实现ASM&C混合编程的说明文档,这里来实现这个功能. 二.实现ASM&C混合编程 1.打开 Keil 工 ...
- 【HC89S003F4开发板】 2调度器
HC89S003F4开发板调度器调试 一.前言 逛论坛看到有人给HC89做了调度器,调度部分直接操作堆栈的. 下载链接 下载下来调试看看. 二.用户代码 @实现效果 编译后led灯闪烁 #includ ...
- 【HC89S003F4开发板】 4端口消抖
HC89S003F4开发板端口消抖 一.前言 看到资料里有中断消抖的例子,因为以前项目里有遇到高频干扰频繁退出休眠的情况,所以好奇用这个配置能不能解决. 二.对demo进行修改 @实现效果 P01设置 ...
- 【HC89S003F4开发板】 3串口调试
HC89S003F4开发板串口调试 使用资料自带的demo 主程序 /************************************系统初始化************************ ...
- 【HC89S003F4开发板】 1环境搭建
HC89S003F4开发板环境搭建 一.概述 芯圣电子做活动,一个开发板只用一块钱,买过来玩玩.︿( ̄︶ ̄)︿ 全套资料可以在论坛或qq群里下载.总之先安装个环境先. 二.安装Keil C51 作为增 ...
- 【转帖】4412ARM开发板学习笔记(一)
本文转自迅为论坛:http://www.topeetboard.com 新手在进行开发学习前,建议先看01-迅为电子开发板入门视频.对开发板和开发环境有一定的了解后,不要盲目接线开机.以下是个人的一点 ...
随机推荐
- webpack4-用之初体验
众所周知,webpack进入第4个大版本已经有2个月的时间了,而且webpack团队升级更新的速度也是非常的惊人 在写下如下内容的时候webpack已经出到了4.6的版本了,剑指5.0应该是指日可待了 ...
- Python安装第三方库常用方法
在学习Python过程中,经常要用到很多第三方库,面对各种不同情况,Python为我们提供了多种安装方法: 一.pip安装: pip安装相信大家都不陌生了,在安装第三方库中,pip是最常使用的一种方法 ...
- MySQL事务表和非事务表
查看 max_binlog_stmt_cache_size 参数解释时,有这么一句话 If nontransactional statements within a transaction requi ...
- vue+springboot上传和下载附件功能
https://blog.csdn.net/qq_35867245/article/details/84325385 上传附件(服务端代码) 第一步:在application.yml中配置附件要上传的 ...
- Visual Studio 2019 使用 Web Deploy 发布远程站点到IIS服务器
Visual Studio 2019 使用 Web Deploy 发布远程站点到IIS服务器的方式 在开发完项目之后,我们需要把开发的项目发布到指定的服务器上,有两种方式,如下 1.把项目发布成文件系 ...
- HttpWebRequest Timeout
随着REST风格的流行,直接通过 HttpWebRequest 进行服务调用的客户端应用越来越多.这里总结一些可能需要费时调查的经验,希望能帮助大家. 1. 用完的HttpWebRequest要Abo ...
- TextBox光标定位到文本末尾
private void RichTextBox1_TextChanged(object sender, EventArgs e) { this.richTextBox1.Select(richTex ...
- MySQL按日期分组并统计截止当前时间的总数(实例教程)
MySQL按日期分组并统计截止当前时间的总数 建表语句 SET NAMES utf8mb4; ; -- ---------------------------- -- Table structure ...
- 使用Dapper.Contrib
public T Query(string sql, object param) { using (IDbConnection dbConnection = Connection) { if (dbC ...
- SeetaFace2 cmake VS2015编译编译
cmake Selecting Windows SDK version 10.0.17134.0 to target Windows 10.0.18362. == BUILD_VERSION: v2. ...