微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 单片机关键技术基础详解(五)

单片机关键技术基础详解(五)

时间:02-19 来源:本站整理 点击:

编码:

  。..。..。..。..。..。...c[n]=p[n],

  。..。..。..。..。..。...c[i]=p[i] XOR p[i+1] (i∈N,n-1≥i≥0);

  解码:

  。..。..。..。..。..。...p[n]=c[n],

  。..。..。..。..。..。...P[i]=c[i] XOR p[i+1] (i∈N, n-1≥i≥0)。

  Gray Code是由贝尔实验室的Frank Gray在20世纪40年代提出的(是1880年由法国工程师Jean-Maurice-Emlle

  Baudot发明的),用来在使用PCM(Pusle Code Modulation)方法传送讯号时避免出错,并于1953年3月17日取得美国专利。由定义可知,Gray Code的编码方式不是唯一的,这里讨论的是最常用的一种。

  用异或乘除法实现二进制码与格雷码互相转换

  如果在二进制运算中忽略进位、退位,那么加减运算都变成了异或(XOR)。

  用异或代替加减进行二进制竖式乘除,称为异或乘除,它的特点是无进退位。

  由于没有退位,异或除法将变得更像多项式除法。

  如:10101除以11将变成1100余1,而不是111。

  二进制转格雷码:

  只要异或乘以二分之三,即二进制的1.1,然后忽略小数部分;也可以理解成异或乘以三(即11),再右移一位。

  格雷码转二进制:

  异或乘以三分之二,即除以1.1,忽略余数;或者左移一位,再异或除以三,忽略余数。

  格雷码转二进制方法

  二进位码第n位 = 二进位码第(n+1)位+格雷码第n位。因为二进位码和格雷码皆有相同位数,所以二进位码可从最高位的左边位元取0,以进行计算。(注:遇到1+1时结果视为0)

  例如: 格雷码0111,为4位数,所以其所转为之二进位码也必为4位数,因此可取转成之二进位码第五位为0,即0 b3 b2 b1 b0。

  0+0=0,所以b3=0

  0+1=1,所以b2=1

  1+1取0,所以b1=0

  0+1取1,所以b0=1

  因此所转换为之二进位码为0101

  格雷码转换快速方法

  (假设以二进制为0的值做为格雷码的0)

  G:格雷码 B:二进位码

  G(N) = B(n+1) XOR B(n)

  

  

  

  三、AVR单片机开发经验

  AVR与传统类型的单片机相比,除了必须能实现原来的一些基本的功能,其在结构体系、功能部件、性能和可靠性等多方面有很大的提高和改善。

  但使用更好的器件只是为设计实现一个好的系统创造了一个好的基础和可能性,如果还采用和沿袭以前传统的硬件和软件设计思想和方法的话,是不能用好AVR的,甚至也不能真正的了解AVR的特点和长处。

  功能越好的器件,需要具备更高技术和能力的人来使用和驾驭它。就象一部好的F1赛车,只有具备高超技术的驾驶员才能充分体会到车的特点,并能最大限度的发挥出车的性能。

  AVR具有上手入门快,开发方便简单的特点,但要充分体会和发挥AVR的优点,还需要应用工程师本身的硬软件设计开发能力的不断学习、实践提高。

  "外行看热闹,内行看门道",对于有一定基础的嵌入式和单片机系统设计开发的工程师,不妨先简单尝试一下AVR。

  开发环境与工具:PC+下载线+实际的系统板

  PC上的开发软件:

  AVR Studio(Free)汇编+汇编调试+高级语言调试+软件仿真

  ICC、CVAVR、BASCOM-AVR 高级语言程序开发+程序下载。其中一个购买正版全功能,作为主要的开发环境,其它使用DEMO版,作为辅助及参考。

  AVR ISP下载线:

  STK200 And STK200+ And STK300 ISP Programmer。通过PC的打印机口,采用ISP技术将系统运行代码(HEX、BIN)和数据写入AVR芯片的Flash和EEProm中,编程AVR的配置熔丝位和加密位。支持决大多数的AVR芯片、以及ATMEL的51兼容芯片89S8252、89S52等。在ICC、CVAVR、BASCOM-AVR、BASCOM-8051中都内含对该下载线的支持程序。免费专用的下载程序:SLISP、PonyProg2000等。

  尽量不使用仿真器的建议:

  在开发和调试系统程序时,有许多人完全依赖于仿真器,一旦离开了仿真器时就感觉无从下手。其实,由于AVR的Flash存贮器可方便的使用ISP技术在线的多次擦写,因此建议尽量不使用(依赖)仿真器来开发和调试程序。

  在实际开发过程中,程序的调试可以从下几方面入手:

  现在的高级语言编译器(如C编译器)可以产生效率很高的机器代码,因此建议大家尽量使用高级语言编写系统程序。

  使用Atmel公司提供AVR Studio软件模拟仿真环境,以及其他的软件模拟仿真环境(BASCOM-AVR)。

  尽可能使用高级语言编写系统程序。

  利用目标板上的LED、LCD或异步串口。见附件"没有仿真器的情况下如何开发AVR"的介绍。

  提高硬件设计的合理性:

  尽量合理和充分使用AVR片内的资源,如EEPROM、A/D、内部的RC振荡源。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top