|
求各位大神看看程序的缺点,还有怎么改进。。。。
[复制链接]
/*设计项目:p1.1 p2.1按键产生中断
* 设计人员:
* 设计时间:2016.1.6
* 硬件描述:
* 软件描述:
* 说明:主程序执行外接流水灯,P1.1按键产生中断执行P4.7间隔闪亮,P2.1按键产生中断执行P1.0间隔闪亮
*/
#include
#include"intrinsics.h"
unsigned char ledtable[]={BIT0,BIT2,BIT3,BIT4,BIT5,BIT6,BIT7};
unsigned int interrupt1,interrupt2,cycle; //定义全局变量
/*
* main.c
*/
/**函数使用前声明*/
void cycles_led();
void GPIO_init();
/*
* 函数名:main函数
* 返回值:无
* 功能:程序执行主体:led依次循环点亮
* 说明:循环
*/
int main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
GPIO_init();
cycles_led();
return 0;
}
/*
* 函数名:cycles_led
* 出口参数:无
* 入口参数:无
* 功能:main执行死循环程序
* 说明:
*/
void cycles_led()
{
while(1)
{
for(cycle=0;cycle<7;cycle++)
{
P3OUT = ledtable[cycle];
_delay_cycles(100000);
}
}
}
/*
* 函数名:GPIO_init
* 入口参数:无
* 出口参数:无
* 功能:端口初始化
* 说明:P2外接流水灯,P2.1按键下降沿触发中断,P1.1按键下降沿触发中断,P1.1,P4.7板载led
*/
void GPIO_init()
{
P3DIR |= (BIT0+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);//设置输出方向
P3OUT =0X00;
P1DIR |= BIT0;
P1OUT |=BIT0;
P4DIR |= BIT7;
P4OUT |=BIT7;
P1OUT = BIT0; //输出端置位
P3OUT =(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);
P4OUT = BIT7;
P2REN |=BIT1;//配置上拉电阻
P2OUT |= BIT1;
P1REN |= BIT1;
P1OUT |=BIT1;
P1IES |= BIT1; //下降沿触发中断
P1IFG &= ~BIT1;//中断标志位
P2IES |= BIT1;
P2IFG &= ~BIT1;
P1IE |= BIT1; //中断使能
P2IE |= BIT1;
//P1DS = 0XFF;
//P2DS = 0XFF;
//P2IFG &= ~BIT1;
//P1IFG &= ~BIT1;
__bis_SR_register(GIE); //中断总允许 休眠模式
}
/*
* 函数名:中断服务程序1
* 入口参数:
* 出口参数:
* 功能:
* 说明:
*/
#pragma vector = PORT1_VECTOR
interrupt void PORT1(void)
{ P1IFG &= ~BIT1;
for(interrupt1=0;interrupt1<3;interrupt1++)
{
P4OUT |= BIT7;
_delay_cycles(100000);
P4OUT &= ~BIT7;
_delay_cycles(100000);
}
//P1.1中断标志位清除
}
/*
* 函数名:中断服务程序2
* 入口参数:
* 出口参数:
* 功能:
* 说明:
*/
#pragma vector = PORT2_VECTOR //NAME
interrupt void PORT2(void)
{
P2IFG &= ~BIT1;
for(interrupt2=0;interrupt2<3;interrupt2++)
{
P1OUT |= BIT0;
_delay_cycles(100000);
P1OUT &= ~BIT0;
_delay_cycles(100000);
}
}
|
|