4.0 IO口控制LED灯闪烁

本文介绍了如何使用MSP430单片机通过IO口控制LED灯闪烁,并探讨了软件延时与IAR编译器自带的延时函数。通过实例展示了1ms延时函数的实现,以及调用500次延时函数的效果,验证了延时的准确性。此外,还提到了IAR的__delay_cycles()函数,用于精确延时,实测延时精度高。

实例2---IO口控制LED灯闪烁-----程序目的:学会如何实现软件延时与应用IAR软件自带延时

在上程序前我们先来了解下MSP430的时钟周期及机器周期,在MSP430单片机中,一个时钟周期 = MCLK晶振的倒数。如果MCLK是8MHz,则一个时钟周期为1/8us。一个机器周期 = 一个时钟周期,即MSP430每个动作都能完成一个基本操作。一个指令周期 = 1~6个机器周期,具体根据具体指令而定。就因为一个机器周期等于一个时钟周期,所以软件延时还是比较准确。举个例子,写个1ms的延时函数,我们调用个500次,延时基本上就是500ms。但是如果是51单片机,那就未必,特别是调用的函数延时越小,所产生的误差就越大,原因很简单,因为51的指令周期需要的时钟周期比较多,在调用函数时的过程也产生延时。下面我们来做些测试:
首先写个1ms的延时函数
时钟晶振为16MHz
void delay_ms(u16 ms)
{
        u16 i,j;
        for(i=ms; i>0; i--)
                for(j=4000; j>0; j--);
}
用逻辑分析捕抓了1ms函数,看图,有图有真相

一、实验目的 1、 进一步掌握 IAR 的使用,熟悉单片机 C 语言编程。 2、 学习 I/O 的使用方法。 二、设计题目 1LED (D0、D2、D4、D6) 点亮 2、LED 闪烁(要求用看门狗定器完成,1 秒变换一次,D0 ) 3、LED 流水(循环/看门狗定器) 4、按键控制 LED 亮灭(选做) 、实验原理 发光二级管是半导体二极管的一种,可以把电能转化为光能,常简写为 LED。发光二 极管与普通二极管一样是由一个 PN 结组成,也具有单向导电性。只要加在发光二极管两端的电压超过它的导通电压(一般为 1.7V-1.9V)它就会导通,而当流过它的电流超过一定电流(一般 2-3mA)它就会发光。LED 常用在 430 单片机中指示单片机的某个开关量的状态。 对单片机控制,其实就是对 I/O 单片机引脚)的控制单片机共六个端,P0、 P1、P2、P3、P4、P5、P6;每个端分别有 8 个引脚 P0.0-P0.7、P1.0-P1.7、P2.0-P2.7、 P3.0-P3.7、P4.0-P4.7、P5.0-P5.7、P6.0-P6.7;这 48 个引脚既可以作输出脚,又可以作输入脚。作输出脚单片机可以控制指示、数码管、电机等外部器件;作输入脚,可以“感受”按键、开关、传感器等外部器件(例如接收数据-此就是作为输入脚的),单片机的每个引脚都是可以分开控制的,即独立的给高或者低电平。 想要点亮一个小,首先要将小单片机的一个 I/O 连接好,然后将此引脚给高或者低电平,接着这个小就可以按照你给的电平实现点亮或熄灭了。 四、硬件电路设计参考 LED 模块与单片机 P2 连接,因此直接用 P2 来驱动 8 个 LED ,由于发光二极管的阳极接高电平,故 P2 为低电平,就可以驱动其点亮。 五、软件程序设计参考 1LED (D0、D2、D4、D6) 点亮 #include <msp430x14x.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; P2DIR = // P2.0 为输出方向 P2OUT = // P2.0 输出高电平 while(1) { P2OUT = } }
最新发布
04-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值