下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、。如何读懂单片机程序这是一篇关于单片机入门的基础文章! 刚刚接触单片机的朋友, 简直是无从下手,打开一个程序, 更会被复杂的结构和密密麻麻的代码吓倒! 多么想找个人耐心的指导一下,是你们内心的强烈意识!好吧,我来满足你!我对单片机的总结: “单片机其实就是一个芯片,内部有若干寄存器,外部有若干引脚,我们可以通过程序控制内部的寄存器使得引脚与外部世界保持联系!”就这几句话,道出了单片机的真谛!有没有感觉到单片机是多么的简单!1. 单片机程序执行流程这是我们首先必须要知道的。 单片机程序一般就有两种, 一种是汇编程序, 一种是 c 语言程序。这里我们讲 c 语言程序。单片机程序都有一个包含主函数的
2、文件, 包含主函数的文件都有一个统一的结构,如下所示:#include "xxx.h"int main() /这是主函数的函数名.;/若干条语句.;while(1) / while括号中是 1,说明程序进入后将在while 里面无线循环,不会出来了,不懂的去看c 语言基础之 while 篇.; /若干条语句.;重点:单片机一上电,从主函数 main 的第一条语句开始执行,是一条语句接着一条语句从上而下执行, 直到进入 while 后,再从 while 的第一条语句执行到最后一条语句,由于是死循环,会再从 while 的第一条语句执行到最后一条语句,如此反复执行,永不停止!直
3、到断电!这些语句当中,有些是函数的调用,遇到函数的调用,进入到函数,再从函数的第一条语句执行到最后一条语句, 然后跳出函数, 再从刚才主函数中那条函数的下一条语句开始执行。 如果实在搞不明白函数是怎么一回事, 你可以用函数里面的所有语句代替函数在主函数中的位置。例如:#include "LPC11XX.H"。1。#define LED1_ON LPC_GPIO1->DATA &= (1<<0) #define LED1_OFF LPC_GPIO1->DATA |= (1<<0) #define LED2_ON LPC_GPIO1-
4、>DATA &= (1<<1) #define LED2_OFF LPC_GPIO1->DATA |= (1<<1) /*/*延时函数*/*/void delay()uint16_t i,j;for(i=0;i<5000;i+)for(j=0;j<200;j+);/*/* LED 初始化函数*/*/void led_init()LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);LPC_IOCON->R_PIO1_0 &= 0x07;LPC_IOCON->R_PIO1_0 |=
5、0x01;LPC_IOCON->R_PIO1_1 &= 0x07;LPC_IOCON->R_PIO1_1 |= 0x01;LPC_SYSCON->SYSAHBCLKCTRL &= (1<<16);LPC_GPIO1->DIR |= (1<<0);LPC_GPIO1->DATA |= (1<<0);LPC_GPIO1->DIR |= (1<<1);LPC_GPIO1->DATA |= (1<<1);/*/*主函数*/*/int main()led_init();while(1)d
6、elay();LED1_ON;LED2_OFF;delay();。2。LED1_OFF;LED2_ON;上面这个例子中,单片机一上电,会执行主函数的第一条语句,也就是led_init(),这个是一个函数的调用语句, 程序会从 led_init函数中的第一条语句开始执行,直到执行完最后一条语句后,回到主函数,进入while ,从 while的第一条语句 delay() 开始执行, delay() 又是一个函数, 程序会从 delay() 的第一条语句开始执行, delay() 函数中有两个 for 循环,执行完 for 循环后,就跳出 delay() 函数,执行 LED1_ON,由于 LED1_
7、ON是个用 #define 定义的宏定义,由 c 语言基础知识之 #define 宏定义篇,我们知道, LED1_ON就是LPC_GPIO1->DATA &= (1<<0),如此继续执行下去。如果不用 define宏定义,也不用函数,上面的例子就可以写为如下形式:#include "LPC11XX.H"/*/*主函数*/*/int main()/LED 初始化LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);LPC_IOCON->R_PIO1_0 &= 0x07;LPC_IOCON->R
8、_PIO1_0 |= 0x01;LPC_IOCON->R_PIO1_1 &= 0x07;LPC_IOCON->R_PIO1_1 |= 0x01;LPC_SYSCON->SYSAHBCLKCTRL &= (1<<16);LPC_GPIO1->DIR |= (1<<0);LPC_GPIO1->DATA |= (1<<0);LPC_GPIO1->DIR |= (1<<1);LPC_GPIO1->DATA |= (1<<1);while(1)for(i=0;i<5000;i+)f
9、or(j=0;j<200;j+);LPC_GPIO1->DATA &= (1<<0);LPC_GPIO1->DATA |= (1<<1);for(i=0;i<5000;i+)for(j=0;j<200;j+);LPC_GPIO1->DATA |= (1<<0);。3。LPC_GPIO1->DATA &= (1<<1);有没有发现, 第二种表示方法, 虽然不涉及函数和宏定义了, 对于 c 语言掌握不是很好的人来说, 看的比较爽。如果你掌握了 c 语言的这些宏定义和函数的小技巧,第一种表示方法
10、是不是更有利于阅读程序的功能呢?2. 读懂程序需要 c 语言基础知识,当然,也可以边看程序,边学习 c 语言基础知识。3. 读懂程序需要会看单片机的寄存器定义,在程序中,大都是在给单片机的寄存器进行配置或是获取单片机寄存器的数据。看哪种单片机程序,就要学会看哪种单片机的寄存器定义。知道了寄存器的定义,就知道如何配置寄存器或是获取的寄存器数据代表的意义了。例如我们要看 LPC1114的程序,那么 LPC1114的用户手册是必须要打开的。 例如 LPC_SYSCON->SYSAHBCLKCTRL|=(1<<16); 这条语句,就是在给 SYSCON模块中的SYSAHBCLKCTR
11、L寄存器进行配置,所以我们要找到这个寄存器的定义。首先,打开用户手册,找到 SYSCON这一章,然后找到寄存器描述这一节,就可以找到这个寄存器的定义了。至于 (|=(1<<16) 这些,都是写基本的逻辑运算,也是些 c 语言的基础知识而已。例如 (|=(1<<16) 这个就是把 1 左移 16 个位,然后把左移后的数据与 SYSAHBCLKCTRL寄存器进行或运算,运算后的结果再放入SYSAHBCLKCTRL寄存器当中。 1 左移 16 个位,就是 bit16 为 1,其它位为 0。与寄存器 SYSAHBCLKCTRL进行或运算,我们不管这个寄存器原来的值是多少, 我们现在只知道, 1 或任何数,都等于 1;0 或任何数,都等于任何数。所以, 1 左移 16 位后,再与寄存器进行或运算, 实际上是把寄存器的 bit16 置 1,剩下的位原来是多少,还是多少。 (常有人问我,怎么判断自己适不适合学单片机,现在我告诉你,你能把这些“或”“与”“非”“进制转换”搞清楚,就可以,如果这些搞不清楚,就不要学了,同学,单片机不适合你)。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国家电网校招试题及答案
- 2026年流动性风险主要指标计算公式及解读情况说明
- 安全食品生产责任声明书(6篇)
- 2026年备考安全员之C证(专职安全员)模拟考试试题高频卷含答案
- 2026年溺水现场应急处置方案
- 2026年船员资格认证考试试卷及答案(共四套)
- 2026年安全工程师(天然气安全)专项训练卷
- 合约履行服务支持承诺书7篇
- 旅游公司策划部经理的面试全解
- 家长孩子沟通促进承诺书6篇范文
- 2026年安徽商贸职业技术学院单招职业适应性测试题库附答案详解(突破训练)
- 2025安徽池州市石台县乡村振兴投资控股集团有限公司招聘4人笔试历年典型考点题库附带答案详解
- 西部机场集团招聘笔试题目
- 血小板减少急救措施
- 2026年安徽工商职业学院单招职业技能测试题库带答案详解(典型题)
- 2025年CATTI三级笔译实务真题
- 2026年南京铁道职业技术学院单招职业技能测试题库附答案详解(综合题)
- 2026年六安职业技术学院单招职业倾向性考试题库及完整答案详解
- 2025年医疗机构临床诊疗操作规范手册
- 天然药物活性成分的研究12
- 2025年侍茄师初级笔试及答案
评论
0/150
提交评论