430单片机点亮LED实验报告

  • 格式:docx
  • 大小:15.69 KB
  • 文档页数:6

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

430单片机点亮LED实验报告

一.安装实验软件IAR

二.编写点亮LED灯程序

1.使P1.0口LED灯会不停的闪烁着,程序

#include

typedef unsigned int uint;

typedef unsigned char uchar;

/*延时函数*/

void Delay_Ms(uint x)

{

uint i;

while(x--)for(i=0;i<250;i++);

}

/*主函数*/

int main( void )

{

WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timer to prevent time out reset

P2DIR|=BIT0;//定义P1口为输出

while(1)//死循环

{

P2OUT^=BIT0;//P1.0口输出取反

Delay_Ms(600);//稍作延时

}

}

下载进去看到了P1.0口LED灯会不停的闪烁着。

2.实验目的让两盏灯交换闪烁程序

#include"msp430g2553.h"

void main(void) {

void Blink_LED();

WDTCTL=WDTPW+WDTHOLD; //关闭看门狗

P1DIR=BIT6;

P2DIR=BIT0;

while(1)

{

Blink_LED();

}

}

void Blink_LED()

{

_delay_cycles(1000000); //控制第二个LED P1OUT^=BIT6;

_delay_cycles(1000000); //控制第一个LED

P2OUT^=BIT0;

}

我编写这段程序的现象是一个灯先亮,另一个后亮,一个灯先灭,后一个再灭。就是两个灯的状态没有做到相反。后来我在我程序上做了一些改动。

#include"msp430g2553.h"

void main(void) {

void Blink_LED();

WDTCTL=WDTPW+WDTHOLD; //关闭看门狗

P1DIR=BIT6;

P2DIR=BIT0;

P1OUT |= BIT6;

P2OUT &= ~BIT6;

while(1)

{

Blink_LED();

}

}

void Blink_LED()

{

_delay_cycles(1000000); //控制第二个LED

P1OUT^=BIT6;

P2OUT^=BIT0;

}

3.LED灯逆循环点亮程序

#include

typedef unsigned char uint8; typedef unsigned int uint16; sbit ENLED1=P1^4;

sbit ENLED2=P1^3;

sbit ADDR0 =P1^0;

sbit ADDR1 =P1^1;

sbit ADDR2 =P1^2;

main()

{

uint16 i;

uint8 j;

ENLED1=0; ENLED2=1;

ADDR0=0; ADDR1=1; ADDR2=1; while(1)

{

P0=~(80>>j++);

for(i=1;i<20000;i++);

if(j==8)

j=0;

}

}

我写好程序了可是运行的时候结果不对),之后继续修改

程序while循环都没有对LED的串口做任何处理,把“P0=~(80>>j++); ”改成“P0=~(0x80>>j++); ”

#include

typedef unsigned char uint8;

typedef unsigned int uint16;

sbit ENLED1=P1^4;

sbit ENLED2=P1^3;

sbit ADDR0 =P1^0;

sbit ADDR1 =P1^1;

sbit ADDR2 =P1^2;

main()

{

uint16 i;

uint8 j;

ENLED1=0; ENLED2=1;

ADDR0=0; ADDR1=1; ADDR2=1;

while(1)

P0=~(0x80>>j++); //P0=~(80>>j++);

for(i=1;i<20000;i++);

if(j==8)

{

j=0;

}

}

四.实验总结

由于之前学过一段时间51单片机,所以有些东西比较清楚,但430和51一有很大不同,虽然内部结构很像,但430的寄存器的设置很麻烦,比如P1 P2口,那可真是麻烦得很,430这个IO口设置了如很多的功能,并且单独抽出了好几个设置的寄存器。用430单片机点亮算是入门吧。