一、中断: 52单片机一共有6个中断源: INTO0--外部中断0,由P3.2端口线引入,低电平或下降沿引起。 INTO1--外部中断1,有P3.3端口线引入,低电平或下降沿引起。 T0--定时器/计数器0中断,由T0计数器计满回零引起。 T1--定时器/计数器1中断,由T1计数器计满回零引起。 T2--定时器/计数器2中断,由T2计数器计满回零引起。 TI/RI--串口中断,串行端口完成一帧字符发送/接收后引起。 52单片机的中断级别
单片机在使用中断功能时,通常需要设置两个与中断有关的寄存器: ①中断允许寄存器IE ②中断优先级寄存器IP 一,中断允许寄存器 IE
功能: EA-- 全局中断允许位 EA=1 打开全局中断控制,在此条件下,有各个中断控制位确定相应中断的打开或关闭 EA=0 关闭全部中断 ET2 定时器/计数器2中断允许位 ET2=1 打开T2中断 ET2=0 关闭T2中断 ES 串行中断允许位 ET1 定时器1中断允许位 EX1 外部中断1允许位
ET0 定时器/计数器0中断允许位 EX0 外部中断允许位 二、定时器单片机在使用定时器/计数器功能时,通常需要设置两个与定时器有关的寄存器: ①工作方式寄存器TMOD ②控制计数器TCON 一,工作方式寄存器TMOD GATE 门控位 GATE=0 定时器/计数器启动与停止仅受TCON寄存器中TRX(X=0,1)来控制 GATE=1 定时器/计数器启动与停止由TCON寄存器中TRX(X=0,1)和外部中断引脚(INT0或INT1)上的电平状态来共同控制 C/T 定时器模式和计数器模式选择位(1为计数器模式,0为定时器模式) M1M0 工作方式选择位 每个定时器有4个工作方式,他们由M1M0设定 二,定时器/计数器控制寄存器TCON IF1 定时器1溢出标志位 TR1 定时器1运行控制位 由软件清零关闭定时器1,当GATE=1,且INT1为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1启动定时器1 IE1 外部中断1请求标志 当IT0=1时为电平触发方式,每个机器周期的S5P2采样INT1引脚,若INT1脚为低电平。则置1,否则IE1清0. 当IT1=0时,INT1为跳变沿触发,当第一个机器周期采样到INT1为低电平时,则IE1置1,便是外部中断1正向CPU申请中断,当CPU响应中断,转向中断服务程序时,该位由硬件清0. IT1 外部中断1触发方式选择位 IT1=0 为电平触发模式,引脚INT1上低电平有效 IT1=1 为跳变沿触发模式,引脚INT1上下降沿有效 IE0 同上 IT0 同上 计算定时器的初值问题 52单片机内部有12倍的分频,假设采用的是12MHZ的晶振,那么12个时钟周期为一个机器周期,那么此时机器周期就是1us。以定时器1,工作方式1为例。16位的计数器 溢出一次需要计数2^16-1个数=65536。约为65.5ms 如果要定时50ms的话,(65536-50000)/256 转载到THX (65536-50000)/256 转载到TLX 公式: THX=(65536-50000)/256 LTX =(65536-50000)/256 定时器的初始化过程如下 ①对TMOD赋值,以确定T0和T1的工作方式 ②计算初值,并将初值写入TH0,TL0,或TH1,TL1 ③中断方式,则对IE赋值,开放中断 ④使TR0或TR1置位,启动定时器/计数器定时或计数 程序实例 #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit led1=P1^0; uchar num; void main() { TMOD=0X01; //设置定时器工作方式1(M1M0为01) TH0(65536-45872)/256; //装初值11.0592M晶振时为50ms数为45872 HL0=(65536-45872)%6; EA=1; //开总中断 ET0=1; //开定时器0中断 TR0=1; //启动定时器0 while(1); //程序停止在这等待中断发生 } void T0_time() interrupt 1 { TH0(65536-45872)/256; //装初值11.0592M晶振时为50ms数为45872 HL0=(65536-45872)%6; num++; if(num==20) { num=0; led1=~led1; } } 串行口控制寄存器SCON 串行口控制寄存器SCON如表12.2所示。 表12.2 串行口控制寄存器SCON (1)SM0/FE:当PCON寄存器中的SMOD0 = 1时,该位用于帧错误检测,当检测到无效停止位时,由硬件将该位置"1",该位必须由软件清零。当SMOD0 = 0时,该位和SM1一起用来设置串行口通信的方式。 (2)SM1:SM1和SM0一起用来设置串行口通信的方式,如表12.3所示。 表12.3 串行口工作方式 关于串行口的4种工作方式和波特率的计算方法我们在后面详细说明。 (3)SM2:允许方式2或方式3多机通信位。如果SM2 = 1,REN = 1,则从机只有接收到RB8位为1时才将中断请求位RI置1,并向系统申请中断。如果SM2 = 0,则无论RB8收到什么数据都会将RI位置1,请求中断。通过设置SM2的值,可以区分主机和从机,实现多机通信。在方式0时,SM2必须为0,在方式1时,只有收到有效停止位,就将RI置1。 (4)REN:允许串行口接收位。当REN = 1时,允许串行口接收数据;当REN = 0时,禁止串行口接收数据。 (5)TB8:在方式2和方式3,TB8作为发送数据的第9位,其值由软件修改。 (6)RB8:在方式2和方式3,RB8保存接收到的第9位数据。在方式0,不用RB8。在方式1,如果SM2 = 0,则RB8是接收到的停止位。 (7)TI:发送完成中断标志位。当1帧数据发送完成时,由硬件将该位置位,请求中断,响应中断后,用软件清零。 (8)RI:接收完成标志位。当接收完1帧数据时,由硬件将该位置位,请求中断,响应中断后,用软件清零。
详细信息下载word文档
|