[ZA]c语言单片机编程

上传人:s9****2 文档编号:510067048 上传时间:2022-10-13 格式:DOC 页数:16 大小:57KB
返回 下载 相关 举报
[ZA]c语言单片机编程_第1页
第1页 / 共16页
[ZA]c语言单片机编程_第2页
第2页 / 共16页
[ZA]c语言单片机编程_第3页
第3页 / 共16页
[ZA]c语言单片机编程_第4页
第4页 / 共16页
[ZA]c语言单片机编程_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《[ZA]c语言单片机编程》由会员分享,可在线阅读,更多相关《[ZA]c语言单片机编程(16页珍藏版)》请在金锄头文库上搜索。

1、如何高效编程之头文件在网上查了很长进度关于头文件的资料,但是发现很难找到适合我的。学单片机的朋友知道,很多程序经常要调用相同的函数,如果每写一个程序都把这些函数重新写一遍或者复制过来,那是很浪费进度的,现在我通过学习汇总报告以及别人的经验,跟大家分享,欢迎大家转载学习。写程序最好是结构化编程,因为这样的程序看起来就不那么长了,一目了然,可以很快就知道这个程序实现什么功能,而且排错也非常简单。把常用的函数声明、自定义类型、外部变量的声明等写进头文件,与之配对的扩展名为.C的文件就写常用的函数,main.c最好就写一个主函数。之前学的51单片机,现在玩430单片机,就以430单片机为例,其他编程软

2、件道理与这个相同。在IAR下新建工程,包含了main.c、mydefine.c禾口mydefine.h(mydefine.c禾口mydefine.h是一对)三个文件(注:可包含多个配对的头文件和C文件)。先把程序贴出来,再详解其中缘由。main.c内容:#includemydefine.hvoidmain(void)/StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;SegInitial();/数码管控制引脚初始化longm=0;while(1)disp(m);delay(10);m+;if(m=1000000)m=0;/显示

3、m的值/显示m的值mydefine.h的内容#ifndef_MYDEFINE_H#define_MYDEFINE_H#includemsp430x14x.htypedefunsignedintuint;typedefunsignedcharuchar;voidwrite_595(uchardat);voidSeglnitial(void);voiddisp(longnum);voiddelays(uintx);voiddelay(uintx);#endifmydefine.c的内容#includemydefine.h#includemsp430x14x.h/*流水灯74hc595各引脚定义*/

4、#defineCLKOP2OUT&二BIT4#defineCLK1P2OUT|=BIT4#defineSTB0P2OUT&二BIT2#defineSTB1P2OUT|=BIT2#defineDS0P2OUT&二BIT5#defineDS1P2OUT|=BIT5#defineLEDOFFP5OUT=0x00/数码管0F/数码管位选/数码管0F/数码管位选uchardis_num=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;共阳编码ucharbitnum=0x01,0x02,0x04

5、,0x08,0x10,0x20;uchardispbuf6;缓冲区/数码管显示/以下是延时函数voiddelay(uintx)uinta,b;for(a=x;a0;a-)for(b=10000;b0;b-);/控制流水灯,使用P2.2(STB),P2.4(CLK),P2.5(DS)voidwrite_595(uchardat)uintn;for(n二0;n8;n+)if(dat&0x80)=0x80)DS1;elseDS0;dat0;x-);/*数码管显示函数位选P5.0P5.5段选P4*/voiddisp(longnum)uinti;dispbuf0=num%10;dispbuf1=num/

6、10%10;dispbuf2=num/100%10;dispbuf3=num/1000%10;dispbuf4=num/10000%10;dispbuf5=num/100000%10;for(i=0;i0;a-)for(b=10000;b0;b-);/控制流水灯,使用P2.2(STB),P2.4(CLK),P2.5(DS)voidwrite_595(uchardat)uintn;for(n二0;n8;n+)if(dat&0x80)=0x80)DS1;elseDS0;dat0;x-);/*数码管显示函数位选P5.0P5.5段选P4*/voiddisp(longnum)uinti;dispbufO

7、=num%10;dispbuf1=num/10%10;dispbuf2=num/100%10;dispbuf3=num/1000%10;dispbuf4=num/10000%10;dispbuf5=num/100000%10;for(i=0;i6;i+)P40UT=dis_numdispbufi;P50UT=bitnumi;delays(400);P5OUT=0X00;下面讲一下mydefine.c的功能,一些常用函数都写在里面,一般情况下我们写好头文件后不必对函数的原型进行深究,只需知道函数的功能即可,即头文件里的函数声明,多个C文件编译链接的时候,相当于主函数放在前面,其他函数放在后面,调

8、用函数的时候就必须先对这些函数进行声明,否则编译器不知道你的函数原型是什么,而这些头文件就起到了函数声明的作用,所谓头文件就可以理解为在main函数前面事先要处理的程序(即声明和定义)。下面把这个结构化编程的等效程序贴出来,以方便大家理解:#includemsp430x14x.htypedefunsignedintuint;typedefunsignedcharuchar;voidwrite_595(uchardat);voidSeglnitial(void);voiddisp(longnum);voiddelays(uintx);voiddelay(uintx);voidmain(void)/StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;Seglnitial();longm=0;while(1)disp(m);delay(10);m+;if(m=1000000)m=0;/*流水灯74hc595各引脚定义*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号