新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机一些基础问题

单片机一些基础问题

作者:时间:2013-05-16来源:网络收藏

一般说1T 4T 6T 12T的是指的什么?

标准51是12T的,就是说12个时钟周期(晶振周期,例如12M的,周期是1/12M,单位秒),机器做一个指令周期,刚好就是1/12M*12=1uS,常见指令例如nop就是一个周期,刚好1uS,其他的大多多于一个周期,乘除法更多。所以如果计算指令时间可以这样算。

而现在很多51核的工艺质量上去后,频率大大提高,增强型51有6T的,如果接12M的话,一个nop就只需要0.51uS,如果是STC的部分12T的话,那只需要1/12uS。

单片机的晶振不是随便选,要看技术手册,看最高频率,看支持类型等等。一般12M,接串口的话11.0592M。如果是PIC,很多4M,8M。

不是越高越好,对很多不需要大量处理,只是控制的情况,为了增加可靠性,降低编程难度,降低功耗,往往可选用低频的,例如实时时钟的32768晶振。

外接晶体引脚

XTAL1 是片内振荡器的反相放大器输入端,XTAL2 则是输出端,使用外部振荡器

时,外部振荡信号应直接加到XTAL1,而XTAL2 悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF 左右。

每个8051处理周期包括12 个振荡周期每12 个振荡周期用来完成一项操作如取指令和计算指令执行时间可把时钟频率除以12 取倒数然后指令执行所须的周期数。因此如果你的系统时钟是11.059MHz 除以12 后就得到了每秒执行的指令个数为921583条指令取倒数将得到每条指令所须的时间1.085ms。

复位 RST

在振荡器运行时,有两个机器周期(24 个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51 芯片便循环复位。复位后P0-P3 口均置1 引脚表现为高电平,程序计数器和特殊功能寄存器SFR 全部清零。当复位脚由

高电平变为低电平时,芯片为ROM 的00H 处开始运行程序,复位操作不会对内部 RAM 有所影响。

输入输出引脚

(1) P0 端口[P0.0-P0.7] P0 是一个8 位漏极开路型双向I/O 端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8 个TTL。对内部Flash 程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。在访问外部程序和外部数据存储器时,P0 口是分时转换的地址(低8 位)/数据

总线,访问期间内部的上拉电阻起作用。

(2) P1 端口[P1.0-P1.7] P1 是一个带有内部上拉电阻的8 位双向I/0 端口。输出时可驱动4 个TTL。端口置1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash 程序存储器编程时,接收低8 位地址信息。

(3) P2 端口[P2.0-P2.7] P2 是一个带有内部上拉电阻的8 位双向I/0 端口。输出时可驱动4 个TTL。端口置1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash 程序存储器编程时,接收高8 位地址和控制信息。在访问外部程序和16 位外部数据存储器时,P2 口送出高8 位地址。而在访问8

位地址的外部数据存储器时其引脚上的内容在此期间不会改变。

(4) P3 端口[P3.0-P3.7] P2 是一个带有内部上拉电阻的8 位双向I/0 端口。输出时可驱动4 个TTL。端口置1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash 程序存储器编程时,接控制信息。除此之外P3 端口还用于一些专门功能,具体请看

P3 引脚兼用功能

P3.0 串行通讯输入(RXD)

P3.1 串行通讯输出(TXD)

P3.2 外部中断0( INT0)

P3.3 外部中断1(INT1)

P3.4 定时器0 输入(T0)

P3.5 定时器1 输入(T1)

P3.6 外部数据存储器写选通WR

P3.7 外部数据存储器写选通RD

波特率与比特率:

波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次数来表示,其单位是波特(Baud)。比特率:每秒钟传送的二进制位数,用 b / s 表示(b表示bit)波特率与比特率的关系是比特率=波特率X单个调制状态对应的二进制位数。

两相调制(单个调制状态对应1个二进制位)的比特率等于波特率;四相调制(单个调制状态对应2个二进制位)的比特率为波特率的两倍;八相调制(单个调制状态对应3个二进制位)的比特率为波特率的三倍;依次类推。

晶振可以根据自己的情况使用,一般实验板上是用11.0592MHz 或12MHz,使用前者的好外是可以产生标准的串口波特率,后者则一个机器周期为1 微秒,便于做精确定时。在自己做实验里,注意的是VCC 是+5V 的,不能高于此值,否则将损坏单片机,太低则不能正常工作。在31 脚要接高电平,这样我们才能执行片内的程序,如接低电平则使用片外的程序存储器。

KEIL uVision2 C51 编译器所支持的数据类型

数据类型长度值域

Unsigned char单字节0~255

Signed char单字节-128~+127

Unsigned int双字节0~65535

Signed int双字节-32768~+32767

Unsigned long四字节0~4294967295

Signed long四字节-2147483648~+2147483647

float四字节±1.175494E-38~±3.402823E+38

bit1位0或1

sfr单字节0~255

sfr16双字节0~65535

Sbit1位0或1

变量的定义可以使用所有C51 编译器支持的数据类型,而常量的数据类型只有整型、浮点型、字符型、字符串型和位标量

长整型就在数字后面加字母L,如104L,034L,0xF340 等。浮点型常量可分为十进制和指数表示形式(12e5表示12*10^5)

8051 结构提供给用户3 个不同的存储空间

第一个存储空间是代码段(CODE)用来存放可执行代码被16 位寻址空间可达64K;除了可执行代码还可在代码段中存储查寻表为达此目的8051 提供了通过数据指针DPTR 或程序计数器加上由累加器提供的偏移量进行寻址的指令这样就可以把表头地址装入DPTR 中把表中要寻址的元素的偏移量装入累加器中8051 在执行指令时的过程中把这两者相加由此可节省不少指令周期。

第二个存储区是8051 内128 字节的内部RAM 或8052 的前128 字节内部RAM 这部分主要是作为数据段称为DATA 区指令用一个或两个周期来访问数据段访问DATA 区比访问XDATA 区要快因为它采用直接寻址方式而访问XDATA 须采用间接寻址必须先初始化DPTR 通常我们把使用比较频繁的变量或局部变量存储在DATA 段中但是必须节省使用DATA 段因为它的空间毕竟有限。在数据段中也可通过R0 和R1 采用间接寻址R0 和R1 被作为数据区的指针将要恢复或改变字节的地址放入R0 或R1 中根据源操作数和目的操作数的不同执行指令需要一个或两个周期。数据段中有两个小段第一个子段包含四组寄存器组每组寄存器组包含八个寄存器共32 个寄存器可在任何时候通过修改PSW 寄存器的RS1 和RS0 这两位来选择四组寄存器的任意一组作为工作寄存器组8051 也可默认任意一组作为工作寄存器组工作寄存器组的快速切换不仅使参数传递更为方便而且可在8051 中进行快速任务转换另外一个子段叫做位寻址段BDATA 包括16 个字节共128 位每一位都可单独寻址8051 有好几条位操作指令这使得程序控制非常方便并且可帮助软件代替外部组合逻辑这样就减少了系统中的模块数位寻址段的这16 个字节也可像数据段中其它字节一样进行字节寻址。


上一页 1 2 3 4 5 下一页

评论


相关推荐

技术专区

关闭