一、中断 (2)
1、中断优先级控制IP (2) 2、中断请求控制标志TCON (2) 3、中断允许控制IE (3)
4、写中断函数(不用在main函数前声明): (3) 二、定时器 (4)
1、工作方式寄存器TMOD:写程序时选择定时器和工作方式(设置M0、M1)。
(4)
2、对定时器装初值: (4) 3、设置中断: (4)
4、启动定时器控制寄存器: (4)
5、写中断函数(不用再main函数前声明): (5)
6、注意:中断函数中的功能程序代码的执行时间不要超过定时时间。 (5)
三、串行接口 (6)
1、将TMOD设置成定时器1,工作方式为2 (6) 2、计算T1的初值:TH1和TL1的值相同: (6) 3、启动定时器T1(对TCON设置):TR1=1; (6) 4、确定串行口控制SCON: (6)
5、串行口工作在中断方式时,进行中断设置: (6) 6、写中断函数。 (6)
串口补充:波特率的计算: (6) 一、中断
中断涉及到的寄存器和写程序时的操作顺序: 1、中断优先级控制IP
IP的每一位需用程序置一,某个控制位置一,相应得中断源就设定为高级中断。
同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:
2、中断请求控制标志TCON
IT0(TCON.0),外部中断0触发方式控制位。 当IT0=0时,为电平触发方式,P3.2引脚低电平有效。 当IT0=1时,为边沿触发方式,P3.2引脚下降沿有效。 IE0(TCON.1),外部中断0中断请求标志位。单片机硬件自动置位和自动清零,不用编写在程序中。
IT1(TCON.2),外部中断1触发方式控制位。 当IT0=0时,为电平触发方式,P3.3引脚低电平有效。 当IT0=1时,为边沿触发方式,P3.3引脚下降沿有效。 IE1(TCON.3),外部中断1中断请求标志位。单片机硬件自动置位和自动清零,不用编写在程序中。
3、中断允许控制IE
每一位都需要用程序置一和清零: 置一时,相应的中断打开; 清零时,相应的中断关闭。
使用定时器、外部中断、串行口中断中的某一个或某几个时,EA都要置一。
4、写中断函数(不用在main函数前声明): V oid 函数名()interrupt 标号(0、1、2、3、4) {
要实现功能的程序代码; }
二、定时器
定时器一般与中断联合使用。定时器涉及到的寄存器和写程序时的顺序:
1、工作方式寄存器TMOD:写程序时选择定时器和工作方式(设置M0、M1)。
GA TE:门控位。 以启动定时/计数器工作;
GA TE=0时,只要用软件使TCON中的TR0或TR1为1,就可
GA TA=1时,要同时满足以下要求,才能启动定时/计数器工作。(一般不用)
①用软件使TR0或TR1为1,
②同时外部中断(INT0/1)引脚(P3.2;P3.3)也为高电平时 M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。
2、对定时器装初值:
对定时器0赋初值:TH0=(65536-X)/256;TL0=(65536-X)%256
对定时器1赋初值:TH1=(65536-X)/256;TL1=(65536-X)%256
X为所要设定的时间,最长为65.536ms。 3、设置中断:
对IE赋值,开中断:①开定时器中断(ET0=1或ET1=1);②开总中断(EA=1)。
4、启动定时器控制寄存器:
TF1和TF0由单片机硬件置一和清零,不用程序控制。 作。
5、写中断函数(不用再main函数前声明): Void函数名()interrupt1(或3)
TR0(和TR1)用程序置一,启动定时器;清零后,定时器停止工
{
TH0=(65536-X)/256;TL0=(65536-X)%256 //重装定时器初值[或TH1=(65536-X)/256;TL1=(65536-X)%256]
要实现功能的程序代码 }
6、注意:中断函数中的功能程序代码的执行时间不要超过定时时间。
三、串行接口
串行口工作方式1工作前要对其进行初始化,主要设置产生波特率的定时器1、串行口控制和中断控制。
涉及到的寄存器和程序书写顺序:
1、将TMOD设置成定时器1,工作方式为2 2、计算T1的初值:TH1和TL1的值相同:
所装值为要求的波特率计算后的值,可查表得此值。(见补充) 3、启动定时器T1(对TCON设置):TR1=1; 4、确定串行口控制SCON:
SM0和SM1为工作方式选择位,可选择四种工作方式:
允许串行口接收:REN=1
TI:发送中断标志。单片机给外部设备发送数据前需用程序清零(TI=0),发送完一侦数据后由单片机硬件置位,发送下一数据时再
程序清零(TI=0)。
RI:接收中断标志。单片机接收外部设备发送的数据前须将该位清零(RI=0),接收完数据后由单片机硬件置一,接收下一数据时再用程序清零(RI=0)。
注意:计算机和一个单片机通信时SM2=0。 5、串行口工作在中断方式时,进行中断设置: IE:ES=1;EA=1; IP:PS=1。
单片机接收到的数据和要发送的数据都存储在SBUF中。 单片机接收到数据:a=SBUF//a可以是寄存器或I/O口,如P1=SBUF表示P1口显示接收到的数据
单片机发送数据:SBUF=a //将要发送的数据发送到a 6、写中断函数。
串口补充:波特率的计算:
在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是
可变的,由定时器T1的溢出率来决定。
串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方
式的波特率计算公式也不相同。 方式0的波特率= fosc/12
方式2的波特率=(2SMOD/64)· fosc
方式1的波特率=(2SMOD/32)·(T1溢出率)方式3的波特率=(2SMOD/32)·(T1溢出率)也可通过查表得到定时器T1的值:
因篇幅问题不能全部显示,请点此查看更多更全内容