51单片机介绍及使用
扫描二维码
随时随地手机看文章
晶振电路的作用是给单片机提供工作时的信号脉冲即单片机的工作速度。当提供脉冲信号时须注意单片机的工作频率范围,为了保持单片机工作平稳其工作频率要小于24M。
复位电路,当复位按键按下时电路就会恢复到初始状态。复位的方法大致分为三种。一种是当电路通电瞬间进行复位;二是在需要复位时,通过按键保持2个机器周期的高电平即可复位;三是根据程序或者电路运行的需要自动地进行。
AT89C51单片机是带4K字节闪烁可编程可擦除只读存储器,是一种低电压,高性能COMS8位微处理器。
*
AT89C51单片机基本组成
AT89C51单片机内部有一个128KB的片内数据存储器,还有21个特殊功能寄存器,4KB片内程序存储器Flash ROM,6KB可寻址片内外统一编制的ROM,64KB可寻址片外的RAM,4个并行的8位I/O接口,一个全双工通用异步串行接口UART,两个16位的定时/计数器。具有位操作功能的布尔处理机及位寻址功能的五个中断源、两个有限及的中断操控系统以及片内振荡器和时钟产生电路的8位微处理器。
3.1.1 AT89C51特性
(1) 与MSC-51兼容
(2) 4K字节可编程闪烁存储器
(3) 全静态工作:0HZ-24HZ
(4) 128*8位内部RAM
(5) 寿命:1000写/擦循环
(6) 三级程序存储器锁定
(7) 数据保留时间:10年
(8) 5个中断源
(9) 片内振荡器和时钟电路
(10) 32可编程I/O线
(11) 低功耗的限制和掉电模式
(12) 2个16位定时器/计数器
3.1.2 引脚说明
AT89C51单片机引脚功能介绍具体为:VCC连接5V电压引脚,GND连接电源负极或者接地。
P0做为一个8位漏级开路双向I/O口,8个管脚每个可吸收8TTL门电流,当P0引脚写入1时,该引脚被视为高阻值输入。在闪存编程时,P0引脚是源码输入接口,当闪存进行校验P0口作为源码输出端口。
P1口是一个8位双向I/O口,P1口由内部提供上拉电阻,P1口缓冲器能接收输出4TTL门电流,P1口引脚输入1时,被内部上位拉高,此时P1引脚可用作输入端口,P1口被外部下拉为低电平时,将输出电流。P1口可作为闪存编程和校验时的低八位地址接收。
P2口作为一个内部上拉电阻的8位双向I/O口其缓冲器可接收、输出4个TTL门电流,当P2引脚定义为1时,其管脚作为输入。当P2口做为输入引脚使用时,P2口管脚被外部拉低输出电流。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址高8位。在给地址1时,利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接受高8位地址信号和控制信号。
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TLL门电流,当P3口写入1后,它们被内部上拉为高电平,并用作输入口,作为输入口由于外部下拉为低电平,P3口将输出电流。
RST作为复位引脚来说只需持续高电平两个机器周期的时间即可实现复位。/PSEN外部程序存储器的选通信号。/EA /VPP当/EA保持低电平时,在此期间外部程序存储。当/EA保持高电平时,此期间为内部存储。在闪存编程期间,引脚用于12V编程电源。
XTAL1反向震荡放大器的输入及内部时钟工作电流的输入。
XTAL2来自反向振荡器的输出。
AT89C51引脚图如图3.2所示。
中断系统介绍
为了提高系统效率,AT89C51单片机设置了中断系统。在CPU 与外设交换信息时,存在着一个快速的 CPU 与慢速的外设之间的矛盾。为解决这个问题,发展了中断的概念。
当 CPU 正在处理某项事务的时候,如果外界或者内部发生了紧急事件,要求 CPU 暂停正在处理工作而去处理这个紧急事件,待处理完后,再回到原来中断的地方,继续执行原来被中断的程序,这个过程称作中断。
3.1.4 中断系统和中断控制
AT89C51有三个片内定时器/计数器溢出中断TF0-TF2。/INT0和/INT1外部中断,一个TI或RI片内串行口中断,其优先级中断如下:
/INT0和/INT1:外部中断0和1,由P3.2端口线引入,低电平或者下降沿引起。
T0:定时器/计数器0中断。由T0记满回0引起。
T1:定时器/计数器1中断。由T1记满回0引起。
TI/RI:串行口I/O完成一帧字节发送/接收引起中断。
T2:定时器/计数器2中断,由T2记满回0引起。
TMOD
TCON:
定时器/计数器和外部中断两者合用的一个可位寻址的特殊功能寄存器。
其中TF1:定时器/计数器1溢出中断请求标志位。当定时器/计数器1产生溢出时,由内部硬件位置TF1向CPU响应中断,并转向该中断服务程序执行时由硬件内部自动TF1清零。
TR1:定时器/计数器1启动/停止位。有软件位置/复位控制定时器/计数器1的启动或停止计数器。
TF0:定时器/计数器0溢出中断请求标志位,当定时器/计数器0计数产生溢出时由内部硬件置位TF0向CPU相应中断,并专转向该中断服务程序执行时,有硬件内部自动TF1清零。
TR0:定时器/计数器0启动/停止位,由软件置位/复位控制定时器/计数器0的启动或停止。
IE1:外部中断请求标志位。当CPU检测到INT0低电平或者下降沿且IT1=1时,由内部硬件置位IE1标志位向CPU请求中断。当CPU相应中断并转向该中断服务程序执行时,由硬件向内部将IE1清零。
IE0:外部中断请求标志位。当CPU检测到INT0低电平或者下降沿且IT1=1时,由内部硬件置位IE0标志位向CPU请求中断。当CPU相应中断并转向该中断服务程序执行时,由硬件向内部将IE0清零。
IT1:用软件置位/复位IT1来选择外部中断INT1是下降沿触发还是电平触发中断请求。当IT1=1时,则外部中断INT1为下降沿触发中断请求,即INT1端口由前一个机器周期的高电平跳变为下一个机器周期的低电平,则触发中断请求。当IT1复位清零,则INT1的低电平触发中断请求。
IT0:用软件置位/复位IT0选择外部中断INT1是下降沿触发还是电平触发中断请求。当IT1=0,则外部中断INT1为下降沿触发中断请求,即INT1端口由前一个机器周期的高电平跳变为下一个机器周期的低电平,则触发中断请求。当IT0位清零,则INT1的低电平触发中断请求。
3.1.5 中断允许控制寄存器
EA——中断允许总控制位
EA=0 中断总禁止,禁止所有中断
EA=1 中断总允许,总允许后中断的禁止或允许由各中断源的中断允许控制位进行设置。
EX0和EX1——外部中断允许控制位
EX0(EX1)=0 禁止外部中断
EX0(EX1)=1 允许外部中断
ET0和ET1——定时器/计数器中断允许控制位
ET0(ET1)=0 禁止定时器/计数器中断
ET0(ET1)=0 允许定时器/计数器中断
ES——串行中断允许控制位
ES=0 禁止串行中断
ES=1 允许串行中断
3.1.6 中断相应过程
CPU中断相应过程为,当程序执行到中断位置时,停止执行主程序去执行中断程序知道执行完成再继续执行主程序。其具体步骤如下:
(1) 保护断点
(2) 寻找中断入口
(3) 执行中断处理程序
(4) 中断返回
中断初始化
void Interrupt_Init()
{
TMOD = 0x01;
TH0 = (65536 - CRYSTAL_FREQ / 12 / INTERRUPT_PERIOD_0) / 256;
TL0 = (65536 - CRYSTAL_FREQ / 12 / INTERRUPT_PERIOD_0) % 256;
ET0 = 1;
TR0=1;
EA = 1;
}