欢迎来到天天文库
浏览记录
ID:46403481
大小:18.56 KB
页数:4页
时间:2019-11-23
《如何读懂单片机程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、如何读懂单片机程序这是一篇关于单片机入门的基础文章!刚刚接触单片机的朋友,简直是无从下手,打开一个程序,更会被复杂的结构和密密麻麻的代码吓倒!多么想找个人耐心的指导一下,是你们内心的强烈意识!好吧,我来满足你!我对单片机的总结:“单片机其实就是一个芯片,内部有若干寄存器,外部有若干引脚,我们可以通过程序控制内部的寄存器使得引脚与外部世界保持联系!”就这几句话,道出了单片机的真谛!有没有感觉到单片机是多么的简单!1.单片机程序执行流程这是我们首先必须要知道的。单片机程序一般就有两种,一种是汇编程序,一种是c语言程序。这里我们讲c语
2、言程序。单片机程序都有一个包含主函数的文件,包含主函数的文件都有一个统一的结构,如下所示:#include"xxx.h"intmain()//这是主函数的函数名{......;//若干条语句......;while(1)//while括号中是1,说明程序进入后将在while里面无线循环,不会出来了,不懂的去看c语言基础之while篇{......;//若干条语句......;}}重点:单片机一上电,从主函数main的第一条语句开始执行,是一条语句接着一条语句从上而下执行,直到进入while后,再从while的第一条语句执行到最后
3、一条语句,由于是死循环,会再从while的第一条语句执行到最后一条语句,如此反复执行,永不停止!直到断电!这些语句当中,有些是函数的调用,遇到函数的调用,进入到函数,再从函数的第一条语句执行到最后一条语句,然后跳出函数,再从刚才主函数中那条函数的下一条语句开始执行。如果实在搞不明白函数是怎么一回事,你可以用函数里面的所有语句代替函数在主函数中的位置。例如:#include"LPC11XX.H"#defineLED1_ONLPC_GPIO1->DATA&=~(1<<0)#defineLED1_OFFLPC_GPIO1->DATA
4、
5、=(1<<0)#defineLED2_ONLPC_GPIO1->DATA&=~(1<<1)#defineLED2_OFFLPC_GPIO1->DATA
6、=(1<<1)/***********************************//*延时函数*//***********************************/voiddelay(){uint16_ti,j;for(i=0;i<5000;i++)for(j=0;j<200;j++);}/***********************************//*
7、LED初始化函数*//***********************************/voidled_init(){LPC_SYSCON->SYSAHBCLKCTRL
8、=(1<<16);LPC_IOCON->R_PIO1_0&=~0x07;LPC_IOCON->R_PIO1_0
9、=0x01;LPC_IOCON->R_PIO1_1&=~0x07;LPC_IOCON->R_PIO1_1
10、=0x01;LPC_SYSCON->SYSAHBCLKCTRL&=~(1<<16);LPC_GPIO1->DIR
11、=(1<<0);LPC_G
12、PIO1->DATA
13、=(1<<0);LPC_GPIO1->DIR
14、=(1<<1);LPC_GPIO1->DATA
15、=(1<<1);}/***********************************//*主函数*//***********************************/intmain(){led_init();while(1){delay();LED1_ON;LED2_OFF;delay();LED1_OFF;LED2_ON;}}上面这个例子中,单片机一上电,会执行主函数的第一条语句,也就是led_in
16、it(),这个是一个函数的调用语句,程序会从led_init函数中的第一条语句开始执行,直到执行完最后一条语句后,回到主函数,进入while,从while的第一条语句delay()开始执行,delay()又是一个函数,程序会从delay()的第一条语句开始执行,delay()函数中有两个for循环,执行完for循环后,就跳出delay()函数,执行LED1_ON,由于LED1_ON是个用#define定义的宏定义,由c语言基础知识之#define宏定义篇,我们知道,LED1_ON就是LPC_GPIO1->DATA&=~(1<<0
17、),如此继续执行下去……。如果不用define宏定义,也不用函数,上面的例子就可以写为如下形式:#include"LPC11XX.H"/***********************************//*主函数*//*******************
此文档下载收益归作者所有