【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-迅为电子开发板入门视频.对开发板和开发环境有一定的了解后,不要盲目接线开机.以下是个人的一点 ...
随机推荐
- linux10.日志服务器建立和克隆机的网卡问题
日志服务器建立 克隆虚拟机网卡混乱问题处理 vim /etc/udev/rules.d/70-perisistent-net.rules 调整mac地址与设备的对应关系 ...
- 深度学习面试题28:标签平滑(Label smoothing)
目录 产生背景 工作原理 参考资料 产生背景 假设选用softmax交叉熵训练一个三分类模型,某样本经过网络最后一层的输出为向量x=(1.0, 5.0, 4.0),对x进行softmax转换输出为: ...
- file_put_contents 和php://input 实现存储数据进图片中
<?php /** *Recieve p_w_picpath data **/ error_reporting(E_ALL); function get_contents() { $xmlstr ...
- AXURE RP8 - 实战手册 网站和APP原型制作案例精粹
扫码时备注或说明中留下邮箱 付款后如未回复请至https://shop135452397.taobao.com/ 联系店主
- MVC框架的主要问题是什么?
以下是MVC框架的一些主要问题: 对 DOM 操作的代价非常高 程序运行缓慢且效率低下 内存浪费严重 由于循环依赖性,组件模型需要围绕 models 和 views 进行创建
- Django HttpResponse与JsonResponse
本文链接:https://blog.csdn.net/mr_hui_/article/details/86498509 我们编写一些接口函数的时候,经常需要给调用者返回json格式的数据,那么如何返回 ...
- windows环境下mosquitto环境搭建与mqtt测试
https://blog.csdn.net/pgpanda/article/details/51800865 工作需求,自己在windows下搭建了一个mosquitto环境测试mqtt 话不多说,直 ...
- GIS地理工具案例教程——批量去除多边形的之间的间隙
GIS地理工具案例教程--批量去除多边形的之间的间隙 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq.com 问题:几乎所有的手工生产的数据,都存在多边 ...
- Flutter响应式编程 - RxDart
import 'package:flutter/material.dart'; import 'package:rxdart/rxdart.dart'; import 'dart:async'; cl ...
- flutter Switch组件 On/off 用于切换一个单一状态
import 'package:flutter/material.dart'; class SwitchDemo extends StatefulWidget { @override _SwitchD ...