C51函数定义与中断处理详解

需积分: 29 0 下载量 179 浏览量 更新于2024-08-25 收藏 2.14MB PPT 举报
"C/函数定义及基本函数-51单片机(天上有眼睛)" 在C51编程中,函数的定义和基本语法是至关重要的。函数定义的格式包括返回类型、函数名、形参表以及可选的存储模式、重入属性、中断属性和使用的工作寄存器组。下面是对这些元素的详细解释: 1. 返回类型:这是函数返回的数据类型,如`int`、`char`或`void`。`void`表示函数不返回任何值。 2. 形参表:列出函数接收的参数,可以是多个数据类型的组合,也可以为空(`void`),表示函数不接受参数。 3. 存储模式:C51提供了不同的存储模式来确定变量的存储位置,包括`small`、`compact`和`large`。这影响了变量的访问速度和内存占用。默认情况下,未指定存储模式的变量使用文件存储模式。 - `small`:变量存储在内部RAM中,访问速度快。 - `compact`:变量位于外部RAM的一页内,速度介于`small`和`large`之间。 - `large`:变量存储在64KB的外部RAM,空间大但速度慢。 4. reentrant:如果一个函数可能被递归调用,可以使用`reentrant`属性,这样函数就可以安全地在中断服务程序中被调用。 5. interrupt n:用于定义中断服务函数,其中`n`代表中断号,对应不同的中断源,如外部中断0到串行口中断。 6. using m:此属性允许指定工作寄存器组,简化函数中的寄存器管理。当有返回值时,使用`using`可能会影响性能。 在C51编程中,常常会使用标准库函数。例如: - `reg51.h`:包含SFR(特殊功能寄存器)及其位定义,方便访问硬件寄存器。 - `absacc.h`:提供访问不同存储区域的宏,如`CBYTE`、`PWORD`等,用于访问ROM、内部RAM、外部RAM等。 - `stdio.h`:提供基于串行口的输入输出函数,如`getkey()`、`putchar()`,以及字符串处理函数。 - `intrins.h`:包含内部库函数,提供快速的在线代码生成,例如循环移位操作。 - `math.h`:包含数学运算函数,但在51单片机中,由于代码量较大,一般不使用。 - `string.h`:提供字符串处理函数。 - `ctype.h`:包含ASCII字符处理函数。 关于51单片机的中断系统,中断响应时序是关键。中断响应涉及到中断标志位、中断优先级和中断处理过程。例如,AUXR寄存器中的`WDIDLE`位控制空闲模式下看门狗定时器的行为,`DISRTO`位控制复位输出,而`DISALE`位决定ALE(地址锁存允许)信号是否始终有效。 在中断服务程序中,为了避免看门狗定时器导致意外复位,需要在适当的时候对其进行喂狗操作,即清除其计数器。在掉电模式下,晶振停止工作,看门狗也会停止计数。进入掉电模式前,确保已经喂过狗以防止意外复位。 52系列单片机相较于51系列,增加了128字节的内部RAM(地址范围80H到FFH),可以使用寄存器寻址,适合用作堆栈区。 最后,了解单片机的引脚功能也很重要,如VCC和VSS提供电源,RST用于复位,VPD则在主电源掉电时提供备用电源。复位电路设计通常需要满足一定的高电平持续时间。理解这些基础知识对编写有效的C51程序至关重要。