摘要: 对芯片的操作方式分为两种,一种是寄存器的直接操作方式。第二类是使用函数的操作方式。一、寄存器操作方式,需要了解一个功能的设置流程。每个寄存器的功能,设置时序。很多位操作的方法,如果掌握的不好,很容易出现错误,无法分析原因。在51单片机中,主要就是位操作。二、函数操作方式,如果芯片厂商已经提供好了芯片的驱动函数,那么直接可以调用相关的驱动函数来做到对芯片功能的设置。但是不是所有厂商都提供完备的驱动文件。作为新学者,还是首先从寄存器方式开始。因为一来,直接调用,不了解其原理,对芯片工作流畅方式没有直接印象。二来,别人给的东西也不一定所有完全适合自己,还是有很多时候需要自己去根据自己的要求去重新添加 阅读全文
posted @ 2014-03-15 14:18 侠梦千年 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 一、volatile 修饰符volatile标识一个变量意味着这个变量可能被非本程序的其他过程改变,例如某个访问这一变量的某中断程序。为变量加上这一标识可以禁止编译器的优 化,使程序正确地按设计者的意图运行。例如下面的程序,我们将intr_func注册为中断函数,某个中断发生时触发这一函数:unsigned char flag = 1;int main(int argc, char **argv) { reg_intr(XXX, intr_func); while(flag) { printf("hello\n"); } return 0;}void in... 阅读全文
posted @ 2014-02-23 21:41 侠梦千年 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 1、快速的从一个数组中找到最接近 Y 的那个值(比如说Y=3.5,数组validData中最接近Y的是3.6,则最后希望Y等于3.6)var result = (from x in validData select new { Key = x, Value = Math.Abs(x - Y) }).OrderBy(x => x.Value);Y = result.ToList()[0].Key;或许不是最简单的方法,希望大侠指正!2、上下位机通讯之数据格式-一种可行的方案上下位机都定义一种Descriptor的数据格式上位机端的继承关系(C#): Descriptor->ListL 阅读全文
posted @ 2014-02-17 15:42 侠梦千年 阅读(372) 评论(0) 推荐(0) 编辑
摘要: CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 1 byte checksum CRC-16 CRC-16 (Modbus) CRC-16 (Sick) CRC-CCITT (XModem) CRC-CCITT (0xFFFF)CRC-CCITT (0x1D0F)CRC-CCITT (Kermit) CRC-DNP CRC-32这里我以CRC-CCITT (XModem)为例,分别用计算方法与查表法来实现1.计算法[java] public static int CRC_... 阅读全文
posted @ 2014-02-10 11:10 侠梦千年 阅读(870) 评论(0) 推荐(0) 编辑
摘要: conversion from %s to %s not supported by iconv”iconv 不支持从 %s 到 %s 的转换”iconv_open”iconv_open”no iconv implementation, cannot convert from %s to %s”没有 iconv 的实现,无法从 %s 转换到 %s”character 0x%lx is not in the basic source character set\n”字符 0x%lx 不在基本源字符集中\n”converting to execution character set”转换到可执行文件 阅读全文
posted @ 2014-02-04 14:21 侠梦千年 阅读(807) 评论(0) 推荐(0) 编辑
摘要: 问题描述: 当在其他线程里面访问DataGridView控件的时候,设置了Control.Check 但是在访问DataGridView中的数据的时候,提示Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException,并且该值是之前的旧值,并不是我更改后的值。解决方法: 将是用DataGridView.Rows[x].Cells[x].Value 换成EditedFormattedValue 阅读全文
posted @ 2013-12-05 11:24 侠梦千年 阅读(1233) 评论(0) 推荐(0) 编辑
摘要: 序列化和反序列化 阅读全文
posted @ 2013-11-22 22:24 侠梦千年 阅读(506) 评论(0) 推荐(0) 编辑
摘要: using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;//导入命名空间using System.IO;namespace WebApplication2{ public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs ... 阅读全文
posted @ 2013-10-19 16:05 侠梦千年 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 当需要在程序运行的时候动态的获得所需要执行的方法,就需要使用到MethodInfo这个类。比如说: 需要将一个byte[]数据转换成 Int32 , UInt32 ,Int64 ,UInt64 ··· 一般如果可以提前知道需要转换到什么数据类型的话直接可以使用BitConverter.To***();来实现。但是如果我们实现不知道需要转换到什么类型,这个类型只有在程序运行的时候才可以确定。我们就需要使用到MethodInfo这个类。 1 String method = "To" + BlockType.Name; //BlockType.Nam 阅读全文
posted @ 2013-07-23 14:40 侠梦千年 阅读(1123) 评论(0) 推荐(1) 编辑
摘要: 自己写下来,感觉一下思路过程。1)画出整个雷区,每个小雷区都有一个横纵坐标(X,Y)2)随机生成地雷点,同时根据是否是地雷,标记小雷区ISBomb属性3)点击任一个小雷区的时候,首先判断该点是否是地雷。如果是给出提示,遍历所有小雷区,将地雷标红如果不是则判断周围(八个方向)是否有地雷 如果有则显示周围地雷个数 如果没有,则递归遍历周围(八个方向)所有小雷区,直接连接的没有挨着地雷的小雷区标记为不可用,一直到挨着地雷的小雷区为止(这里递归遍历的时候需要将已经遍历过的标记为不可用,不然会堆栈溢出)检查整个雷区所有仍然可用并且没有显示挨着几个雷的小雷区的个数,如果同雷数相同,则提示闯关成... 阅读全文
posted @ 2013-06-17 17:40 侠梦千年 阅读(311) 评论(0) 推荐(0) 编辑