跳转到主要内容

单片机

单片机中的高阻态到底什么意思?

demi /

高阻态这是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平。如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电平也有可能是低电平,随它后面接的东西定。

RAM在单片机里有什么的用途?

demi /

单片机就是个小计算机,跳蚤虽小不但五脏惧全,有时还跳得很高呢!自然,大计算机少不得的数据存储系统,小不点的单片机一样有,而且往往和CPU集成在一起,更加显得小巧灵活。直到90年代初,国内容易得到的单片机就是8031:不带存储器的芯片,要想工作,还必需外加RAM和ROM,单片机成了3片机...

单片机要这么学?八条谨记!

demi 提交于

怎么学单片机?也常看到有人说学了好几个月可就是没有什么进展。当然,受限于每个人受到的教育水平不同和个人理解能力的差异,学习起来会有快慢之分,但我感觉最重的就是学习方法。一个好的学习方法,能让你事半功倍,这里说说我学习单片机的方法。

<strong>1、万事开头难、要勇敢迈出第一步。</strong>

开始的时候,不要老是给自己找借口,说KEIL不会建项目啦、没有实验板啦之类的。遇到困难要一件件攻克,不会建项目,就先学它,这方面网上教程很多,随便找找看一下,做几次就懂了。

然后可以参考别的人程序,抄过来也无所谓,写一个最简单的,让它运行起来,先培养一下自己的感觉,知道写程序是怎么一回事,无论写大程序还是小程序,要做的工序不会差多少,总得建个项目,再配置一下项目,然后建个程序,加入项目中,再写代码、编译、生成HEX,刷进单片机中、运行。

必须熟悉这一套工序。个人认为,一块学习板还是必要的,写好程序在上面运行一下看结果,学习效果会好很多,仿真器就看个人需要了。单片机是注重理论和实践的,光看书不动手,是学不会的。

<strong>2、知识点用到才学,不用的暂时丢一边。</strong>

学习单片机,这些步骤得一步步来!

demi /

任何一款单片机,其实学习步骤都是一样的,不管是8位的入门芯片,还是32位的高速芯片。以下这些步骤是必须的,你得一步步来!

<strong>1、数字I/O的使用</strong>

使用按键输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,同时还学会了寄存器的操作方式。例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。

每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。要注意的是两个功能使用同一组I/O口,比如LCD和LED数据端口在好多例程里都是共用一组端口,如果两者结合,会有冲突,达不到预期的效果,或者在现在LCD的同时LED也在乱跳,这是目前大开发板采用的方式,建议不同的模块使用不同的IO口。

<strong>2、定时器的使用</strong>

如何在成千上万的单片机里挑选合适的单片机?

demi 提交于

在实际项目中,选择什么样的单片机作为系统的控制核心,是非常重要的工作。因为选择恰到好处的单片机,对降低项目开发难度、提高产品维护方便性、降低设备生产成本、提升系统运行性能、降低系统功耗、提升产品运行稳定性、提高产品生存周期、方便产品升级性等指标有着至关重要的作用。

那么如何在成千上万的单片机里挑选合适的单片机呢?

一、根据项目的需求,评估项目规模,并根据项目未来发展规划,确定项目需要的硬件资源要求。比如:通讯方式、是否需要A/D设备(具体的精度与转换速率等要求)、是否需要显示界面(具体的显示内容要求等等)、是否需要RTC、日后升级需要添加的功能需要什么样的硬件资源等等,如此基本可确定系统硬件资源。有了硬件资源要求,就可限定一个单片机类型范围,硬件资源一定要够用,一定要不能少,同时也不能选择资源过多的导致资源浪费;

二、根据项目需求,基本上可以确定软件需要的RAM与Flash资源容量,RAM资源一般要比实际应用要求多20%-30%的裕量,同样Flash的资源也要多出20%-30%的裕量,方便日后软件升级,随着芯片片设集成度的提高,RAM与Flash资源的单位成本在大幅降低,所以,在不大幅提升成本的前提下,RAM与Flash的容量越多越好;

你知道单片机、ARM、DSP都是CPU吗?

demi 提交于

学计算机和电子的人们都学过单片机和CPU,你知道单片机、ARM、DSP都是CPU吗,它们之间又有什么不同?本文进行了整理,一起来看看吧!

<strong>CPU:中央处理器</strong>

CPU 包括运算逻辑部件、寄存器部件和控制部件等,其本质就是一个集成电路,实现的功能就是从一个地方读出一个指令,从另一个地方读出数据,然后根据指令的不同对数据做不同的处理,然后把结果存回某个地方,而不同架构的CPU会有不同的指令、不同的存取方式、不同的速度、不同的效率等差异。从实现运算的角度,单片机、ARM、DSP都可以称之为CPU。

<strong>1、单片机:微控制器MCU</strong>

目前,单片机已广泛称作微控制器(MCU),单片机是一块类似PC的芯片,只是没PC强大,但它可以嵌入到其它设备中从而对其进行操控。单片机的多机应用系统可分为功能集散系统、并行多机处理及局部网络系统。

<strong>2、ARM:高效能RISC</strong>

ARM内核是一个嵌入式系统。RISC架构的指令,寄存器和流水线特征使它非常适合于并行计算。

单片机定时器的寄存器

demi /

标准的 51 单片机内部有 T0 和 T1 这两个定时器,T 就是 Timer 的缩写,现在很多 51 系列单片机还会增加额外的定时器,在这里我们先讲定时器 0 和 1。前边提到过,对于单片机的每一个功能模块,都是由它的 SFR,也就是特殊功能寄存器来控制。与定时器有关的特殊功能寄存器,有以下几个,大家不需要去记忆这些寄存器的名字和作用,你只要大概知道就行,用的时候,随时可以查手册,找到每个寄存器的名字和每个寄存器所起到的作用。

表 5-1 的寄存器是存储定时器的计数值的。TH0/TL0 用于 T0,TH1/TL1 用于 T1。
<center><img width="600" src="http://mcu.eetrend.com/files/2019-01/wen_zhang_/100016902-56539-11.png&…; alt=""></center>

对于单片机中重复定义的问题

demi /

前几天调试ZigBee程序时,因为要用到全局变量,所以在一个全局文件定义了两个全局变量,如下:

#ifndef _TC77_H_
#define _TC77_H_
BYTE GetTC77String( char *buffer );
unsigned char WATER_flag = 1;
unsigned char LIGHT_flag = 1;
#endif

不过编译后却出现这样的错误:

Copyright (c) 2009 Microchip Technology Inc.
Error - could not find definition of symbol 'LIGHT_flag' in file 'objects/TC77.o'.
Errors : 1

可能是因为在两个文件里同时调用了tc77.h这个文件的缘故,不过我想不通的是既然有宏条件定义,为什么还会出现重复定义的现象呢?后来在网上查了一下,把定义改成如下形式就好了: