ybb111

导航

单片机学习-2

为了方便记忆和使用,给每一个特殊功能寄存器都起了一个名字。

如果在程序设计中想直接使用这些名字,那么就需要引入对应当芯片头文件,例如51单片机,需要引入“reg52.h”文件。

 

 

 

 

特殊功能寄存器P0的地址为80H,引入这个头文件之后,就可以使用P0这个名字了
   P0 = 0x02;

 

 

 

 

中断服务函数的格式:
    在51单片机中有5个中断源,每个中断源都有固定的入口地址(也就是中断向量)和中断号。我们在程序设计的过程中,不需要记住中断向量地址,但需要知道每个中断源对应的中断号(参考【单片机学习-01】)
    一般情况下,中断的处理函数有两个,其一为中断初始化函数,其二为中断服务函数。初始化函数就是一个普通的函数,而中断服务函数却有特殊的格式要求:
    A. 中断函数没有返回值,也不能带参数。
    B. 函数名后面要跟一个关键字interrupt,说明这是一个中断服务函数。
    C. 在关键字interrupt后面要跟上中断号,说明这个中断服务函数是为那个中断服务的。

 中断服务函数的格式为:
    void 函数名() interrupt  中断号
    {  ----函数体----  }
    例如,定时器0的中断服务函数,我们C语言可以这样写:
    

 

对于每一个外设,我们都需要编写一个初始化函数中断服务函数。这些函数在不同的应用工程中实际上都差不多,也就是说代码的重用性很高

1、外部中断模块
    在51单片机中有INT0和INT1两个中断模块,外部的触发信号可以是电平,也可以是边沿,由寄存器TCON的IT0和IT1位来决定。
     

2、定时/计数模块
    在51单片机中有T0和T1两个定时器,对内部可以定时,对外部可以计数。在初始化的时候,需要确定该模块是定时功能还是技术功能,工作模式是什么,最大计数值是多少。
    

3、串行接口模块
    在51单片机的串行接口中,产生波特率需要占用定时器T1,发送数据时,将内容放到SBUF中,数据发送完毕,TI会置1。当完整接收到一个数据后,RI会置1,这时从SBUF中将内容读出即可。不管是TI还是RI标志位,都需要人工清0。
    一般情况下,发送数据采用查询方式,接收数据采用中断方式
    

 

posted on 2022-01-12 11:03  ybb111  阅读(146)  评论(0编辑  收藏  举报