单片机C语言程序的结构和设计精选

实验五 单片机C语言程序的结构和设计一、实验目的1. 掌握单片机C语言的程序结构;2. 掌握单片机C语言程序的编写和调试方法;3. 掌握MSP430FG2553基本I/O控制方法;4. 掌握单片机对外部接口电路的控制方法。二、实验任务1. 练习调试程序(1)硬件连接图(2)原程序存在的问题① 实验要求将L1~L8连接到P2OUT端口上,所以程序中的端口应该采用P2OUT;② 由于程序中用到了P2OUT所有端口作为输出,所以应该首先将P2设置为GPIO;③ 实验要求八个LED等应该在亮和灭之间进行循环,所以应该在原程序中加入主循环;④ 在延时函数delay()中,延时时间不够,所以不能够看出灯的闪烁,应该将循环的时间延长;(3)修改后的程序:#include "io430.h"void delay( );int main ( void ){ WDTCTL = WDTPW + WDTHOLD;//关闭看门狗 P2SEL=0; P2SEL2=0; P2DIR=0xff;//设置端口1为输出 P2OUT=0xff; for(;;) { P2OUT=~P2OUT;//将端口1的值取反后输出 delay( ); //调用函数延时 }}void delay( ) //延时函数{ unsigned int j;for (j=0;j<0xffff;j++); }(3)程序调试方法总结程序调试时主要使用逐步调试的方法,通过F10和F11使程序逐步运行,有必要时通过view观测register寄存器的相关值的变化,通过观察每一步运行之后相关寄存器的变化,可以初步判断对应程序运行的正确与否,还可以通过设置断点的方式进行局部调试。对于几个不同调试按钮的使用方法总结如下:GO属于连续执行,在调试过程中通常与断点同时使用,用于程序的长距离跳转;step over用于逐步运行程序,但是不会运行到子程序的内部,如本例子中的delay函数,用此按钮时不会运行到delay内部;而step into则可以进入子函数内部,通常用来调试子函数,在调试子函数过程中若想跳出子函数可以使用step out;合理地使用这些指令可以高效的调试程序。2. 控制发光二极管的显示变化(1)硬件连接图(2)C语言程序#include "io430.h"void delay();void action_1();void action_2();const unsigned char LED_blink1[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};const unsigned char LED_blink2[4]={0xdb,0xe7,0x7e,0xbd};int main( void ){ // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P2SEL=0; //将P2端口设置为GPIO P2SEL2=0; P2DIR=0xff; //方向设定 for(;;) //主循环 { action_1();//子函数调用 action_2(); }}void delay() //延时函数{ int i; for(i=0;i<0xffff;i++);}void action_1() //规律一动作函数{ int j; for(j=0;j<=7;j++) { delay(); P2OUT=~LED_blink1[j]; //使输出端口按照表中显示 }}void action_2() //规律二动作函数{ int k; for(k=0;k<4;k++) { delay(); P2OUT=LED_blink2[k]; //使输出端口按照表中显示 }}由于本程序比较简单,并且在上面程序后面附有注释,故不再说明程序的运行原理。(3)思考若要使用P1端口控制8个发光二极管,则实验板上的连线方面需要将L1~L8分别用跳线连接至P1.0~P1.7,在程序方面只需要将原程序中用到的P2端口均换成P1端口即可。3. 用按键控制发光二极管的显示变化(1)硬件连接图(2)程序设计思路首先由于在上一个任务中已经实现了两种显示方式的循环显示,所以为实现该任务,只需要在上一个任务的程序中加入按键控制即可。通过两个将两个P1引脚设置成输入引脚并与按键相连用来检测按键,在上个任务中的程序中,由于两个动作方式是循环进行的,所以只

单片机c语言三种经典程序结构,单片机C语言程序的结构和设计精选.docx相关推荐

  1. 计算机网络二分法划分网络,三种经典复杂网络社区结构划分算法研究_GN算法

    论文导读::复杂网络是复杂系统的高度抽象.即社区结构特性[3].算法是一种试探优化法[4].算法. 关键词:复杂网络,社区结构,Laplace图谱,Kernighan-Lin算法,GN算法 1引言 现 ...

  2. AWS大数据三种经典玩法

    目录 前言 1.AWS一站式大数据分析平台 2.让人不得不喜欢的AWS 优点: 缺点: 3.个人建议 4.文章说明 一.AWS大数据平台全家桶简介 1.一首(数据源) 2.一尾(数据应用) 3.中间( ...

  3. Plotly中绘制三种经典的股票交易图表(含视频讲解)

    作者:Lemon 来源:Python数据之道 Plotly中绘制三种经典的 股票交易图表(含视频讲解) 大家好,我是 Lemon . 背景 前一段时间, Lemon 发了一期视频,分享了 Plotly ...

  4. c语言 最大公约数 最小公倍数的编程,C语言三种算法求解最大公约数与最小公倍数...

    C语言三种算法求解最大公约数与最小公倍数 最大公约数与最小公倍数的求解是很多初学C的人所面临的一道问题.当然这道问题并不难解答,也有很多人已经写过相关的博客,我在此书写此篇博客,一是为了让自己能够夯实 ...

  5. c语言三种循环结构特点,c语言循环结构(c语言循环结构特点)

    1.while循环 while语句的一般形式为:while(表达式)语句.其中表达式是循环条件,语句为循环体.while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的. for语句循环1 fo ...

  6. c语言循环结构常用语句,浅析C语言三种循环结构语句

    摘 要: C语言是一种广泛使用的高级程序设计语言,文章对C语言中三种循环结构语句进行了分析和比较,使学生更容易理解和掌握. 关键词: C语言 for循环 while循环 do-while循环 一.引言 ...

  7. HDL语言三种描述方式--结构化描述方式、数据流描述方式、行为级描述方式

    当我们使用HDL代码在描述硬件功能时,主要有三种描述方式,即结构化描述方式.数据流描述方式.行为级描述方式.在平时编程时,可根据实际情况及个人喜好选择其中一种或者几种混合在一起进行自己的HDL代码编写 ...

  8. 整洁架构之道--三种经典的编程范式

    本文是<Clean Architecture>--整洁架构之道中关于编程范式相关章节的笔记,首发于公众号「Go 招聘」 前言 之前整理了整洁架构之道这本书前两章节的读书笔记:<cle ...

  9. 三种经典图像滤波方法介绍——双边滤波(Bilateral filter)、导向滤波(Guided Fliter)、滚动导向滤波(RollingGuidedFilter)

    文章目录 一.前言 二.双边滤波(Bilateral filter) 2.1 双边滤波的理论介绍及公式推导 2.2 双边滤波的matlab程序实现 三.导向滤波(Guided Fliter) 3.1 ...

最新文章

  1. div+css中设置了float属性后如何让外层的高度随着内层的高度大小自动调整
  2. ASP.NET 3.5技术专题发布
  3. memcached的基本命令(安装、卸载、启动、配置相关)
  4. mysql crash_Mysql 无故crash
  5. Bada学习- C++以及Flash应用开发流程之创建应用工程
  6. LeetCode 466. 统计重复个数(循环节)
  7. Java StringBuilder reverse()方法与示例
  8. gsonformat插件_吐血推荐珍藏的IDEA插件
  9. MySql基本操作教程
  10. [20160224]-bashELF command not found.txt
  11. 20200113每日一句
  12. jieba 结巴结巴结巴
  13. 流迭代器实现文件操作(读取和写入)
  14. 待业在家的6个月,我靠淘宝月入百万:你看不起的行业,往往很赚钱
  15. 【机器学习】偏差-方差分解Bias-variance Decomposition
  16. word模板填充数据,导出PDF
  17. vb.net 教程 20-3 控制Ie浏览器 3 获得Ie窗口句柄
  18. 关于react、vue的相关问题
  19. 2020年遥感类期刊SCI期刊影响因子排名—遥感, 地理, 水文类
  20. JAVA文件下载,IE不提示下载,直接打开的解决方法

热门文章

  1. 剖析三大个人IM工具安全隐患
  2. Python游戏编程入门,让你秒变电脑大神!
  3. 性能优化篇(2):不能忽视的DOM元素
  4. ETE - 在线可视化进化树和多序列比对
  5. 机器学习系列补充:数据集准备和更正YSX包
  6. 花器官身份基因与靶基因间的调控进化情况
  7. 知乎阅读三百万的生信学习指南
  8. rsync配置和使用
  9. P5715 【深基3.例8】三位数排序(python3实现)
  10. php把时间戳转换成多少时间之前函数