跳转到主要内容

单片机

如何编写高效率稳定的单片机代码

cathy /

由于单片机的性能同电脑的性能是天渊之别的,无论从空间资源上、内存资源、工作频率,都是无法与之比较的。PC 机编程基本上不用考虑空间的占用、内存的占用的问题,最终目的就是实现功能。而对于单片机来说就截然不同了,一般的单片机的Flash 和Ram 的资源是有限的,可想而知,单片机的资源是少得可怜,为此我们必须想法设法榨尽其所有资源,将它的性能发挥到最佳,程序设计时必须遵循以下几点进行优化:

<strong>1、使用尽量小的数据类型</strong>

能用unsiged就不用signed;
能用char就不用int;
能不用floating就不用;
能用位操作不用算数。

<strong>2、使用自加、自减指令</strong>

通常使用自加、自减指令和复合赋值表达式(如a-=1 及a+=1 等)都能够生成高质量的程序代码,编译器通常都能够生成inc 和dec 之类的指令,而使用a=a+1 或a=a-1 之类的指令,有很多C 编译器都会生成二到三个字节的指令。

<strong>3、减少运算的强度</strong>

可以使用运算量小但功能相同的表达式替换原来复杂的的表达式。

单片机EMC设计需注意的要点

cathy /

<strong>单片机实现EMC设计需注意的以下的情况:</strong>

<strong>1、单片机的工作频率</strong>

1.1单片机的设计应根据客户的需求来选择较低的工作频率

首先介绍一下这样做的优点:采用低的晶振和总线频率使得我们可以选择较小的单片机满足时序的要求,这样单片机的工作电流可以变得更低,最重要的是VDD到VSS的电流峰值会更小。

当然我们这里需要做一个妥协,因为客户的要求可能是兼容的和平台化的(目前汽车电子的发展趋势就是平台化),选择较高的工作频率可以兼容更多的平台,也方便以后升级和扩展,因此要选择一个较低的可以接受的工作频率。

<center><img src="http://mouser.eetrend.com/files/2017-11/wen_zhang_/100009129-30729-em.j…; alt=“” width="600"></center>

控制单片机里面的寄存器,要怎么玩?

cathy /

这篇文章适合刚刚入门的单片机小白看。

单片机在电学里面,属于很简单的一种器件,外表看,就是一个芯片,长着很多的脚。内部,就是一堆寄存器。不同的单片机,外部表现就是形状和引脚数量和引脚名称可能不一样,内部,就是寄存器名称不一样。

我们要做的,就是写程序控制单片机里面的寄存器,然后通过引脚表现出来完成各种电子产品。

所以,你在看别人写的程序的时候,会经常看到给单片机寄存器赋值的语句。下面就以最简单的控制51单片机引脚高低电平来说明一下。(不要总是存在51单片机已经淘汰的想法,51单片机至今任然是出货量最大的单片机,并且各大公司每年都有新款的51单片机推出,功能越来越强劲,做产品,要选最合适的单片机,而不要总想用牛逼的单片机。)

只需八步,教你练成单片机能手

cathy /

学习使用就是理解单片机硬件结构,以及内部资源的应用,在汇编或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。以下是小编的一些经验:

<center><img src="http://mouser.eetrend.com/files/2017-11/wen_zhang_/100008927-29968-danp…; alt=“” width="600"></center>

<strong>第一步:数字I/O的使用</strong>

单片机和数字电路怎么抗干扰

cathy /

<strong>形成干扰的基本要素有三个:</strong>

(1)干扰源,指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt,di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都可能成为干扰源。

(2)传播路径,指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传播路径是通过导线的传导和空间的辐射。

(3)敏感器件,指容易被干扰的对象。如:A/D、D/A变换器,单片机,数字IC,弱信号等。

抗干扰设计的基本原则是:抑制干扰源,切断干扰传播路径,提高敏感器件的抗干扰性能。(类似于传染病的预防)

<strong>1、抑制干扰源</strong>

抑制干扰源就是尽可能的减小干扰源的du/dt,di/dt。这是抗干扰设计中最优先考虑和最重要的原则,常常会起到事半功倍的效果。减小干扰源的du/dt主要是通过在干扰源两端并联电容来实现。减小干扰源的di/dt则是在干扰源回路串联电感或电阻以及增加续流二极管来实现。

<strong>抑制干扰源的常用措施如下:</strong>

基于单片机的智能型金属探测器的设计

cathy /

本文介绍了一种基于AT89S52单片机控制的智能型金属探测器重点研究了它的硬件组成、软件设计、工作原理及主要功能。该金属探测器以AT89S52单片机为核心,采用线性霍尔元件UGN3503作为传感器,来感应金属涡流效应引起的通电线圈磁场的变化,并将磁场变化转化为电压的变化,单片机测得电压值,并与设定的电压基准值相比较后,决定是否探测到金属。系统软件采用汇编语言编写。在软件设计中,采用了数字滤波技术消除干扰,提高了探测器的抗干扰能力,确保了系统的准确性。

【下载】串行EEPROM 与 8位PIC® 单片机的接口设计

cathy /

目前对廉价和便携式非易失性存储器的需求仍保持稳定,因为对许多工业和商业技术的开发而言,长期存储器存储依然不可或缺。对于许多这样的市场,串行EEPROM 器件仍然被认为是非易失性存储器嵌入式控制应用的经济高效的理想解决方案。尽管其他形式的非易失性存储器重新兴起,但对于要求便携性、低电流和电压操作、逐字节操作及具竞争力价格的应用和解决方案,串行 EEPROM 仍被证明是一种可行的选择。SPI 和I2C同步串行协议仍然是与串行EEPROM器件接口的两种最流行的方式。为了与之适应,大多数 PIC® 单片机器件都内置了主同步串行端口(Master SynchronousSerial Port,MSSP)模块,为这两种协议中的同步串行操作提供了一个方便的平台。

【下载】采用单片机作为控制单元的反激式 SMPS

cathy /

本应用笔记描述了采用 PIC16F1769 控制电路的 20W开关电源(Switched Mode Power Supply,SMPS)的设计、构建与测试步骤。SMPS 输出电压为 12 VDC,输出电流最大值为 1.7A。重要的设计步骤以教学方式展现,以便读者能通过这些信息来构建规格可能不同的相似设计。

给单片机寄存器赋的值是怎么计算来的?

cathy /

这篇文章适合刚刚入门的单片机小白看。

单片机在电学里面,属于很简单的一种器件,外表看,就是一个芯片,长着很多的脚。内部,就是一堆寄存器。不同的单片机,外部表现就是形状和引脚数量和引脚名称可能不一样,内部,就是寄存器名称不一样。

我们要做的,就是写程序控制单片机里面的寄存器,然后通过引脚表现出来完成各种电子产品。

所以,你在看别人写的程序的时候,会经常看到给单片机寄存器赋值的语句。下面就以最简单的控制51单片机引脚高低电平来说明一下。(不要总是存在51单片机已经淘汰的想法,51单片机至今任然是出货量最大的单片机,并且各大公司每年都有新款的51单片机推出,功能越来越强劲,做产品,要选最合适的单片机,而不要总想用牛逼的单片机。)

例如,单片机P1口有8个引脚,分别为P1.0~P1.7,如果想让P1口的8个引脚都输出高电平,是这么写:P1=0XFF;如果想让P1口的8个引脚都输出低电平,是这么写:P1=0X00;如果只让P1.0输出高电平,其他引脚输出低电平,是这么写:P1=0X01......

<strong>这些值是怎么来的呢?</strong>

<strong>计算方法:</strong>

你的单片机时钟不准了,这样来调整!

cathy /

导读:本文针对用单片机制作电子钟或要求根据时钟启控的控制系统时,出现的校准了的电子时钟的时间竟然变快或是变慢了的情况而提出的一种解决方案。
  
单片机应用中,常常会遇到这种情况,在用单片机制作电子钟或要求根据时钟启控的控制系统时,会突然发现当初校准了的电子时钟的时间竟然变快或是变慢了。
  
于是,尝试用各种方法来调整它的走时精度,但是最终的效果还是不尽人意,只好每过一段时间手动调整一次。那么,是否可使时钟走时更精确些呢?现探讨如下:
  
<strong>一、误差原因分析</strong>

1.单片机电子时钟的计时脉冲基准,是由外部晶振的频率经过12分频后提供的,采用内部的定时,计数器来实现计时功能。所以,外接晶振频率的精确度直接影响电子钟计时的准确性。
  
2.单片机电子时钟利用内部定时,计数器溢出产生中断(12MHz晶振一般为50ms)再乘以相应的倍率,来实现秒、分、时的转换。大家都知道,从定时,计数器产生中断请求到响应中断,需要3_8个机器周期。定时中断子程序中的数据人栈和重装定时,计数器的初值还需要占用数个机器周期。此外。从中断人口转到中断子程序也要占用一定的机器周期。例如: