PIC16F C语言测频率程序,PIC单片机C语言程序—实例5
PIC单片机C语言程序—实例5
来源:华强电子网
作者:华仔
浏览:3630
时间:2016-08-10 14:18
标签:
摘要:
前面已介绍了学习pic单片机c语言程序的一些最基本内容,并以具有一定功能的c语言程序,说明其基本单位是函数,即一个c程序是由一个或多个函数组成的,中只有一个主函数main()。主数main()在程序中的位置可任意放置,但程序运行时一定是从主函数开始,再由主函数调用其他函数,其他函数也是互相调用的,如图5所不。 读者可以从程序实例的注释中,体会c语言程序的算法(即语法规则)与汇编语言指令的相似点和不
前面已介绍了学习pic单片机c语言程序的一些最基本内容,并以具有一定功能的c语言程序,说明其基本单位是函数,即一个c程序是由一个或多个函数组成的,中只有一个主函数main()。主数main()在程序中的位置可任意放置,但程序运行时一定是从主函数开始,再由主函数调用其他函数,其他函数也是互相调用的,如图5所不。 读者可以从程序实例的注释中,体会c语言程序的算法(即语法规则)与汇编语言指令的相似点和不同点。笔者介绍的pic单片c语言程序,使用的时钟频率(指实验板上的晶振)都为4bihz o 8、有参数函数 在《pic单片机c语言程序—实例1》中(见《电子报》今年第27期第巧版)已介绍:从函数的形式观察,c语言函数可分为两种:无参数函数和有参数函数。这里再补充一点,无参数函数是指函数定义中没有形式参数,当然也没有形式参数的说明。在调用无参数函数时,主调函数没有数据传送给被调函数,其功能仅用来执行指定的一组操作,正如c程序实例中,主调的延时dalay( )"a数一样。无参数函数通常不返回函数值〔少数可以返回)。 有参数函数的定义如下: 函数类型说明符函数名(形式参数)[形式参数说明变最说明]语句 其中,函数类型说明符、形式参数、形式参数说明和变量说明等都是可选项,所以在使用时应按设计功能自主选择。如果不需选用形式参数和形式参数说明,则该函数自然简化成无参数函数。 从以上的定义看出:在调用有参数函数时,在主调函数与被调函数间,存在着参数的传递,即主调函数要将给定的实际参数传给被调函数的形式参数,供给被调函数使用(这一点将在程序实例5中得以说明),被调函数执行后的结果,也可以带回供主函数使用。 请注意:用户为实现特定功能而编写子函数时,需按两个原则。 1.子函数与主调函数之间的界面应清晰,编写子函数的功能应鲜明,函数之间的数据传递越少越好。 2.编写的子函数大小适中。若规模太大,即功能太复杂,常导致结构庞杂,影响阅读、分析和调试。一般情况下,即使要求的功能很多,函数的规模也应控制在几十行内,若不能达到要求,宁可增加新的子函数。九、pic单片机c语言程序实例5 这里用pic16f84a(其他型号的pic单片机同样等效)单片机,编写一c语言源程序,其硬件电路见图60电路功能如下:用rao位作程序启动信号,程序一旦启动,5111 b口的rbo位外接led点亮一秒钟,接着rb2位、rb4位、rb6位外接的led分别点亮10秒、1分钟、2分钟,循环工作。11137外接蜂鸣器,其用途是rb口的rbo,rb2,rb4,rb6位外接的led完成给定时间的一个循环,蜂鸣器发出声响(一分钟),以便验证。 这里编写多个延时的c语言程序,仅用了一个带形式参数的延时子函数(delaycunsignad long int m),就完成了上述电路的功能,可见c语言的优点。该c源程序命名为pic05.c,程序清单如下: #include//包含头文件pic.h #define portbit (add,bit) ((unsigned)(&add)*5+(bit)) static bit port-0 @portbit(portb,o);//b口位定义 static bit port_2 @portbit(portb,2); static bit port -4 @portbit(poiitb,4); static bit port-6 @portbit(portb,6); static bit port -7 @portbit(portb,7); #define portait (add,bit) ((unsigned)(&add)* 1+(bit)) static bit port-0 @portait (porta,0);//a口位定义 void delay(unsigned long int m)//定义有参数的延时子函数{// dalay(延时)函数开始。unsigned long int i; //无符号长整形变量i。for(i=o;i<=m;i++) //带m参数的for循环。 continue://转移下次循环。//延时dalay子函数结束。main //定义函数名为main()//主函数。 //主函数开始trisb=0x00; //初始化pic16f84a、b口//a口 intcon=0x00;portb=0x00;trisa=ox 1 f; while(rao)//判rao=1.空操作循环。 // rao =0执行以下语句。 while(1)//循环语句,这是无限循环。//循环语句开始。 rb0=1;//给rbo赋值1(高电平)。 delay (42000);// rbo外接led点亮1 t钟。 rbo=0;// rbo外接led灭。 rb2=1;//给rb2赋值1(高电平)。 delay(490000);// rb2外接led点亮10秒钟。 rb2=0;// rb2外接led灭。 rb4=1;//给rb4赋值1(高电平)。 delay(2940000);// rb4外接led点亮1分牛中。 rb4=0:// rb4外接led灭。 rb6=1;才给rb6赋值1(高电平)。 delay(5890000);// rb6外接led点亮2分钟。 rb6=0;// rb6外接led灭 rb7=1://给rb7
分享到:
上一篇:已经是第一篇
PIC16F C语言测频率程序,PIC单片机C语言程序—实例5相关推荐
- 发出警报声的c语言程序,PIC单片机警报声C程序
//************************************************** //实验目的: //熟悉使用单片机驱动蜂鸣器产生警报声 //***************** ...
- pic单片机c语言延时程序,PIC单片机C语言精确控制时间
很多朋友说C不能精确控制延时时间,不能像汇编那样直观.其实不然,对延时函数深入了解一下就能设计出一个理想的筐架出来.一般我们都用for(VX=100:--X){:}此句等同于X=100:while(- ...
- PIC单片机与PIC单片机C语言编程简介
对于计算机学院与电子学院相关的同学来说,单片机一定不是一个陌生的概念.在大学的学习生涯中,经常用于教学的是MCS-51系列单片机.其实,除了MCS-51单片机外,还有一类单片机--PIC单片机. PI ...
- pic单片机延时程序C语言,PIC单片机C语言延时程序和循环子程序实现方法
PIC单片机C语言延时程序和循环子程序实现方法 很多朋友说C中不能精确控制延时时间,不能象汇编那样直观. 其实不然,对延时函数深入了解一下就能设计出一个理想的框价出来. 一般的我们都用 for(x=1 ...
- pic单片机c语言存储器定义,PIC单片机C语言程序设计1 7.PDF
PIC单片机C语言程序设计1 7 学电子跟我来FOLLOW ME PIC 单片机C 语言程序设计(1) ◆ 丁锦滔 编者按:为了帮助具有PI C 单片机汇编语言知识的技术人员或工程师,快速掌握利用C ...
- 单片机C语言 8,PIC单片机C语言程序设计_8_
PICC编译器的安装<PIC单片机C语言程序(7)>一文介绍MPLABIDE7.40的安装时,我们已将光盘中的PICC编译器的压缩软件PICC8.05.rar(见该文图12)粘贴到我的电脑 ...
- pic单片机c语言乘除法,PIC单片机C语言程序设计(2)
五.C语言的标识符和关键字本文引用地址:http://www.eepw.com.cn/article/171168.htm 一个完整的PICC语言程序,通常由包含文件(即头文件1,变量定义.变量说明. ...
- pic单片机c语言读eeprom,PIC单片机的EEPROM读写实例及说明
PIC单片机的EEPROM读写实例及说明 来源:luchaohai 作者:华仔 浏览:1397 时间:2016-08-10 14:18 标签: 摘要: ; PIC单片机的EEPROM读写实例及说明;* ...
- c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)
51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...
最新文章
- mysql密码有格式要求吗_高考日语作文10个格式要求!你能看出图中5处错误吗?...
- 解决python在eclipse运行正常在命令行里运行提示包导入错误
- Android SystemServiceManager分析
- zigbee 频谱波段
- python exe文件运行依赖环境_python将py代码文件转换为EXE脱离环境运行
- python升级版本命令_如何在python中安装和配置kivy库
- java 打印_剑指Offer面试题20(Java版):顺时针打印矩阵
- 2015中缀表达式转化为后缀表达式(C++,附思路,注释多)
- 上市4年,现在苹果要停产它了
- 社区团购的终局是不是团长被抛弃?
- grayscale实现全站及局部变黑的效果 – 兼容IE/FF等浏览器
- Newsmy纽曼星云1000G移动硬盘拆解教程
- Vue:vue中axios通过代理解决跨域
- 就这么简单!构建强大的WebShell防护体系
- 魏俊妮《全面培训系统建设与培训管理实务》课程大纲
- 云原生不可变基础设施
- 动手学深度学习笔记4——微积分自动微分
- 【Axure教程】拖动排序——扣款顺序
- 使用jquery实现快递单号查询
- java字节流与字符流的区别编码缓冲