马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
函数是C语言程序设计的核心。一个较大的C语言程序一般由一个主函数和若干个子函数组成,每个函数实现一个特定的功能。主函数可调用其他函数,其它函数之间也可相互调用。函数库为了减轻编程工作量,将一些常用功能的函数放在函数库中供公共使用。好的程序尽量使用函数和函数库。函数和函数库是基于C语言编程的基本单元。 函数的格式 下面给出了函数的定义性说明个原型说明。 1)
定义性说明格式 [存储类说明符] 类型说明符 [修饰符] 标识符 (参数表){函数体} 其中: 存储类说明符有static和extern2种。 类型说明符有char、unsigned、char、int、unsigned long、float、double、long double、struct、union、void等几种。 标识符有函数名、.函数名、(.函数名)、.(.函数名)等几种。 修饰符有Interrupt、near、far、huge等几种。 2)原型说明格式 Extern 类型说明符[修饰符] 标识符(参数表){函数体} 其中: 类型说明符、标识符、参数表、函数体这几项是函数定义性说明中必不可少的部分。可在程序源文件的任意处进行函数的定义说明,并被分配内存。 类型说明符部分泳衣说明函数返回值的类型。有简单类型,符合类型。为说明函数返回的是指针,在函数名前加“*”。 标识符部分用以说明函数名。但函数名前加分割符“.”时,说明返回值是指针。被圆括号起如(*函数名),则标识符是函数指针。如果括号外再加分割符“.”,如“.(.函数名)”,则标识符是函数指针,且函数的返回指针类型。 参数表是传入函数的形式参数表。形式参数表格式为: (类型说明符
变量名 [,类型说明符 变量名]…)或(void)或() 其中(void)说明无参数传入。允许用空格代替void作为参数表,即()。 函数体部分由符合语句构成。 存储类说明符部分。 extern——C语言的函数否是全程需存在的,在不加任何存储类说明的情况下,都是全程序可见的。但是,如果程序为多源文件时,非定义函数的文件要调用该函数时,须加原型说明。另外,即使在定义函数的源文件中,如果在函数定义之前超前调用,也需要加原型说明,而且原型说明中必须加存储类说明符extern。 static——为了提高函数的安全性,在进行函数的定义性说明时,加上static存储类说明符,表示在本文件定义前和非函数定义文件中,该函数将不能被调用。它可定义需要具有内部链接的全局变量或者函数,即它们应在一个单一的编译单元里是可见的,但在外部则不可见。使用static关键词限制变量的范围。 修饰符对函数起修饰作用。 interrupt——为最重要的修饰符。它将函数修饰为中断函数。中断函数的最大特点是返回类型和参数均必须为void。函数经过interrupt修饰后,程序员只编写中断服务程序的主题部分,中断服务程序中的保护现场前缀段和恢复现场的后缀段,均由编译程序完成。另外,编译程序还将ret指令改为reti指令。 near、far和huge——规定函数的地址类型。它将覆盖存储模式规定的函数缺省地址类型。它指明函数和被调用函数之间的距离的远近。near为近调用(16位段内地址);far为原调用(32位段间地址);huge为规范化远调用(32为段间地址规范地址)。 示例
本函数为LED灯亮、灭显示的控制程序段,是带参数的函数。 void Led_Display(int LedStatus) /.函数定义,参数为int LedStatus,用于表示LED状态,根据参数点亮熄灭LED1或LED2./ ( led_state=LedStatus; /.将传递来的参数值赋给LED状态全局变量./ if((LedStatus&0x01)==0x01) rPDATB=rPDATB&0x5FF; /.LED1亮./ else rPDATB=rPDATB|0x200; /.LED1灭./ if((LedStatus&0x01)==0x02) rPDATB=rPDATB&0x3FF; /.LED2亮./ else rPDATB=rPDATB|0x400; /.LED2灭./ } 示例
本函数为键盘初始化程序,该函数不需要参数。 void KeyboardInt(void) { Intvalue; rI_ISPC=BIT_EINT1 //清除中断挂起位 rEXTINTPND=0xF; //设置EXTINTPND寄存器
value=key_read(); if(value>-1) Digit_Led_Symbol(value);
rI_ISPC=BIT_EINT1; //清除中断挂起位 rINTCON=0x1; } .代表星号 凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网 |