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

本文介绍了基于MSP430FG2553单片机的C语言程序设计与调试。实验内容包括掌握C语言程序结构,I/O控制,LED显示变化及按键控制。通过程序修改与调试,学习了如何设置端口、延时函数、主循环及子函数。程序调试方法包括逐步执行、查看寄存器变化和断点设置。并讨论了如何根据硬件需求调整程序和端口配置。
摘要由CSDN通过智能技术生成

单片机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引脚设置成输入引脚并与按键相连用来检测按键,在上个任务中的程序中,由于两个动作方式是循环进行的,所以只

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值