单片机写下一段闪烁程序,对其进行分析

这一段程序已经通过单片机验证过了,是可以运行的,下面我们来看看这段C程序所表达的意思。

#include<hidef.h>是系统要求程序提供有关的信息,hidef.h是C编译系统提供的一个文件名。

#include "derivative" C语言提供了#include命令用来实现“文件包含”的操作,所谓“文件包含”处理是指一个源文件可以将另外一个源文件的内容全部包含进来。

尖括号表示在包含文件目录中去查找

使用双引号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。

#define LEDCPU PORTK_PK4

它的作用是在本程序文件中用指定的标识符LEDCPU来代替PORTK_PK4

这个是宏定义。1、宏名一般习惯用大写字母表示,以便与变量名的区别,但是也不是一定的。

2、使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。

3、宏定义是用宏名代替一个字符串,并不做正确性检查。

4、宏定义不是C语句,不必在行未加分号。

5、#define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本文件结束。

在main函数中有个for循环,看起来比较奇怪,因为大部分FOR是这样的for(i=1;i<=30;i++)

这个里面什么也没有,其实这个for里面的三个表达式都可省略,即不设初值,不判断条件,循环变量不增值。无终止的执行循环体。

可以使用/*.....*/对C程序中的某行或某几行做注释,这样可以增加文章的可读性。

在delay函数中对i有个定义为unsigned int i,这个表明i为无符号基本整形,i的取值范围是0-65535,如果想增加i的值,改变i为long。long的范围是-2147483648-2147483647

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AD模块的飞思卡尔调试程序全部文件: #include <hidef.h> /* common defines and macros */ #include "derivative.h" /* derivative-specific definitions */ int i; unsigned char RX_ID[4],RX_DS[8]; unsigned int r[8]; unsigned int temp[2],s; void setbusclock(void) { CLKSEL=0X00; // disengage PLL to system PLLCTL_PLLON=1; // turn on PLL SYNR=0x01; // VCOFRQ[7:6];SYNDIV[5:0] // fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1) // fPLL= fVCO/(2 × POSTDIV) // fBUS= fPLL/2 // VCOCLK Frequency Ranges VCOFRQ[7:6] // 32MHz <= fVCO <= 48MHz 00 // 48MHz < fVCO <= 80MHz 01 // Reserved 10 // 80MHz < fVCO <= 120MHz 11 REFDV=0x01; // REFFRQ[7:6];REFDIV[5:0] // fREF=fOSC/(REFDIV + 1) // REFCLK Frequency Ranges REFFRQ[7:6] // 1MHz <= fREF <= 2MHz 00 // 2MHz < fREF <= 6MHz 01 // 6MHz < fREF <= 12MHz 10 // fREF > 12MHz 11 // pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz; POSTDIV=0x00; // 4:0, fPLL= fVCO/(2xPOSTDIV) // If POSTDIV = $00 then fPLL is identical to fVCO (divide by one). _asm(nop); // BUS CLOCK=16M _asm(nop); while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it; CLKSEL_PLLSEL =1; //engage PLL to system 分频; } //[设置总线时钟频率为16MHZ] ; // void ATDInit(void) { ATD0CTL2=0x42; // ATD启动,禁止外部触发,允许ATD中断; ATD0CTL3=0x88; // 背景调试模式下继续转换,每1次转换一个转换序列,继续转换; ATD0CTL4=0x01; // 采样时间为 2个时钟周期,转化按10位进行,总分频系数为8; ATD0CTL5=0x20; // 数据右对齐,无符号,单通道采集, } //[AD进行初始化];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值