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相关推荐

  1. 发出警报声的c语言程序,PIC单片机警报声C程序

    //************************************************** //实验目的: //熟悉使用单片机驱动蜂鸣器产生警报声 //***************** ...

  2. pic单片机c语言延时程序,PIC单片机C语言精确控制时间

    很多朋友说C不能精确控制延时时间,不能像汇编那样直观.其实不然,对延时函数深入了解一下就能设计出一个理想的筐架出来.一般我们都用for(VX=100:--X){:}此句等同于X=100:while(- ...

  3. PIC单片机与PIC单片机C语言编程简介

    对于计算机学院与电子学院相关的同学来说,单片机一定不是一个陌生的概念.在大学的学习生涯中,经常用于教学的是MCS-51系列单片机.其实,除了MCS-51单片机外,还有一类单片机--PIC单片机. PI ...

  4. pic单片机延时程序C语言,PIC单片机C语言延时程序和循环子程序实现方法

    PIC单片机C语言延时程序和循环子程序实现方法 很多朋友说C中不能精确控制延时时间,不能象汇编那样直观. 其实不然,对延时函数深入了解一下就能设计出一个理想的框价出来. 一般的我们都用 for(x=1 ...

  5. pic单片机c语言存储器定义,PIC单片机C语言程序设计1 7.PDF

    PIC单片机C语言程序设计1 7 学电子跟我来FOLLOW ME PIC 单片机C 语言程序设计(1) ◆ 丁锦滔 编者按:为了帮助具有PI C 单片机汇编语言知识的技术人员或工程师,快速掌握利用C ...

  6. 单片机C语言 8,PIC单片机C语言程序设计_8_

    PICC编译器的安装<PIC单片机C语言程序(7)>一文介绍MPLABIDE7.40的安装时,我们已将光盘中的PICC编译器的压缩软件PICC8.05.rar(见该文图12)粘贴到我的电脑 ...

  7. pic单片机c语言乘除法,PIC单片机C语言程序设计(2)

    五.C语言的标识符和关键字本文引用地址:http://www.eepw.com.cn/article/171168.htm 一个完整的PICC语言程序,通常由包含文件(即头文件1,变量定义.变量说明. ...

  8. pic单片机c语言读eeprom,PIC单片机的EEPROM读写实例及说明

    PIC单片机的EEPROM读写实例及说明 来源:luchaohai 作者:华仔 浏览:1397 时间:2016-08-10 14:18 标签: 摘要: ; PIC单片机的EEPROM读写实例及说明;* ...

  9. c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)

    51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...

最新文章

  1. mysql密码有格式要求吗_高考日语作文10个格式要求!你能看出图中5处错误吗?...
  2. 解决python在eclipse运行正常在命令行里运行提示包导入错误
  3. Android SystemServiceManager分析
  4. zigbee 频谱波段
  5. python exe文件运行依赖环境_python将py代码文件转换为EXE脱离环境运行
  6. python升级版本命令_如何在python中安装和配置kivy库
  7. java 打印_剑指Offer面试题20(Java版):顺时针打印矩阵
  8. 2015中缀表达式转化为后缀表达式(C++,附思路,注释多)
  9. 上市4年,现在苹果要停产它了
  10. 社区团购的终局是不是团长被抛弃?
  11. grayscale实现全站及局部变黑的效果 – 兼容IE/FF等浏览器
  12. Newsmy纽曼星云1000G移动硬盘拆解教程
  13. Vue:vue中axios通过代理解决跨域
  14. 就这么简单!构建强大的WebShell防护体系
  15. 魏俊妮《全面培训系统建设与培训管理实务》课程大纲
  16. 云原生不可变基础设施
  17. 动手学深度学习笔记4——微积分自动微分
  18. 【Axure教程】拖动排序——扣款顺序
  19. 使用jquery实现快递单号查询
  20. java字节流与字符流的区别编码缓冲

热门文章

  1. Java 泛型(Generics) 综述
  2. 足坛诗人--贺炜的5大经典解说
  3. 地摊叫卖录音软件在哪里做?来推荐一个简单的APP
  4. MFC 调用系统ping工具检测网络
  5. java 豆丁,Java实现类似豆丁百度文科的文档在线阅读
  6. 考工信部计算机中级证多少钱,软考中级证书有效期
  7. Nginx和Apache和Tomcat的区别及优缺点
  8. 下面html标签元素中不属于块元素的是,HTML中为何P标签内不可包含块元素?
  9. ChatGPT写论文能发表吗?权威期刊回应了!
  10. 上海华腾软件系统有限公司怎么样