C&51单片机开发笔记

include ''reg52.h" 单片机特殊功能寄存器定义文件

typedef 数据类型申明
例如 typedef unsigned int u16
定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:
char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,
// 和一个字符变量;
以下则可行:
typedef char* PCHAR; // 一般用大写
PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针
虽然:
char *pa, *pb;
也可行,但相对来说没有用typedef的形式直观,尤其在需要大量指针的地方,typedef的方式更省事。

sbit 定义特殊功能寄存器的位变量。
例如sbit F=P1^4;//将F位定义为 P1.4

三极管放大管脚输出电流 驱动元器件
三极管应用
三极管的放大倍数与其物理结构有关,选择三极管时放大倍数β是必须考虑的重要技术指标之一,

三极管的电流方向以及三个极之间的电流关系如下图,IC=βIB,IE=IB+IC
C&51单片机开发笔记_第1张图片
三极管有饱和、放大和截止三个工作区间,下面介绍一些常见的用法;

(1)驱动放大,一般单片机、DSP、ARM、CPLD/FPGA等CPU的IO口驱动电流比较弱,无法直接驱动负载,最常用的是使用三极管进行电流驱动能力放大,如下图所示;
C&51单片机开发笔记_第2张图片
示意原理驱动LED灯,可以根据实际需要变换为其它负载,比如继电器、电机等;+5V电源也可以改变,比如12V/24V等,但所选三极管必须能够承受这个电压。

(2)逻辑取反,如下图所示,使用NPN三极管进行取反,十分方便,输入为高电平时,输出为低;输入为低电平时,输出为高(5V)。
C&51单片机开发笔记_第3张图片
(3)当电子开关使用,当电子开关时一般使用三极管的饱和区,通过控制基极使三极管处于饱和或截止区,从而实现三极管开通或断开,起到开关的作用。

code和data关键字
code的作用是告诉单片机,定义的数据要放在ROM(程序存储区)里面,写入后就不能再更改。因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM的意思。

程序可以简单的分为code(程序)区,和data (数据)区,code区在运行的时候是不可以更改的,data区放全局变量和临时变量,是要不断的改变的,cpu从code区读取指令,对data区的数据进行运算处理。

c51中的存储类型:

code :程序存储区(64KB)

data :可直接寻址的内部数据存储区(128B)

idata:不可直接寻址的内部数据存储区(256B)

bdata:可位寻址内部数据存储区(16B)

xdata:外部数据存储区(64KB)

pdata:分页的外部数据存储区

你可能感兴趣的:(单片机)