标题: 51单片机中断新手快速入门(C语言程序的写法注释详解) [打印本页]

作者: 网站者    时间: 2019-5-5 20:04
标题: 51单片机中断新手快速入门(C语言程序的写法注释详解)
外部中断的写法比较简单记住就行了
例如想写一个利用外部中断1的程序可以写成如下:
void Intinit()
{
IT1=0;//设置外部中断触发方式,0表示电平触发,1表示下降沿触发方式
EX1=1;//此处为打开外部中断1的允许位
EA=1;//此处位打开总中断允许位
}
定时/计数器中断的配置也十分简单写成如下即可:
void Timer0Init()
{
TMOD=0X01;//表示选择了定时器0的工作模式1;同样还有例如     0x00/0x02/0x03/0x10/0x20/0x30这几种情况
TH0=();//这两行是用来给选择的相应的定时/计数器赋初值,因为定是计数器   每次来一个时钟脉冲就会记一次数,一共可以计数2^16个,然   后如果计满之后会溢出,然后请求CPU中断,故而再利用它完成   中断时必须为其附上初值,这样在机够一定时间后就会溢出,   从而请求中断。
TL0=();
ET0=1;//打开定时器中断允许
EA=1;//打开总中断
TR0=1;//启动定时器
}
void 中断函数名() interrupt 中断号//可以根据中断源的优先级来判断中断号
{
函数体//中断响应后通过中断函数来执行中断函数体里面的程序,每达到一次中断响应主函数就会停止跳到中断函数里面来执行函数体,执行完成后就又会返回主函数,继续执行主函数的内容。
}
串口配置也是非常简单的基于定时/计数器中断配置只不过多了PCON,SCON两个寄存器的配置其中PCON就是通过控制SMOD来控制波特率是否加倍的,SCON则是串口的工作方式选择寄存器。

通过对SCON寄存器的位操作可以进行相应的串口设置
例如:
void TRtxin()
{
TMOD=0x10;//在进行串口设置之前可以先把定时器设置好,这就是选择了定时   器1的工作方式1
TH1=();
TL1=();//给定时器赋初值
ET1=1;//打开定时器1的中断允许位
EA=1;//打开总中断
TR1=1;//启动定时器
PCON=0x00;//SMOD清零,波特率不加倍
SCON=0x50;//选择工作方式1作为串口工作方式,并且打开REN串行接收允许位
} 会
在主函数中一定要初始化一下串口,也就是调用一下配置串口的程序
由于地址位为0或8 的可以进行位寻址故而TMOD (89H)不能位寻址只能整体定义,而TCON(88H)可以进行位寻址,故而可以对其具体为酒精性操作
例如定是计数器控制位TR /溢出标志位TF,外部中断触发方式选择位IT/中断请求标志位IE。
EX/ET/ES/EA都属于中断允许寄存器(IE此处IE不同于TCON中的IE)。而中断优先级寄存器IP只有在涉及到中断嵌套,看门狗等高级操作时才会用到,现阶段不做考虑。
所谓的标志位:像在TCON寄存器里面有TF(定是计数器溢出标志位)/IE(外部中断请求标志位),在SCON里面有TI(发送数据标志位)/RI(接收数据标志位)等标志位,就是完成某个动作之后有一个状态的变化例如置1以此来标志已经进行了该动作。
以上便是总结的所有关于外部中断,定时/计数器中断,以及串口配置的所有内容。






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1