用外部中断,按一次键,两个LED灯点亮,再按一次,两个LED灯熄灭,循环。用Keil(C语言)编译

如题所述

第1个回答  2014-05-14
#include "msp430x54x.h"
//************************************************************
void main()
{
WDTCTL = WDTPW + WDTHOLD; //关看门狗
P2DIR &= ~( BIT6 + BIT7); //P2.6 P2.7 设置为输入
P1DIR |= BIT0; //P1.0 设置为输出
P7DIR |= BIT7; //P7.7 设置为输出
P2REN |= BIT6 + BIT7; //上拉下拉电阻使能
P2OUT |= BIT6 + BIT7; //P2.6 P2.7 为上拉
P2IES |= BIT6 + BIT7; //P2.6 P2.7下降触发
P2IE |= BIT6 + BIT7; //P2.6 P2.7中断使能
P2IFG =0; //中断标志清除,防止配置过程中出现中断标志为1
_EINT(); //开总中断
LPM4; //进低功耗4
}

/*******************端口中断程序********************/

#pragma vector = PORT2_VECTOR
__interrupt void port2(void)
{
switch(P2IV)
{
case 0x0e: P1OUT ^= BIT0;break; //LED1 亮灭
case 0x10: P7OUT ^= BIT7;break; //LED2 亮灭
default :break;
}
}

求一个单片机外部中断程序,要求用按键模拟单片机外部中断输入源,当按键...
1、打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并添加STARTUP.A51文件,然后在当前目录下新建一个C文件,并将其添加入工作路径。2、首先要导入51单片机的头文件,否则后续使用的端口都会出现未定义的情况,然后在主函数中,使得EA=1,即总中断...

用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!
void delay(void) \/\/两个void意思分别为无需返回值,没有参数传递。{ unsigned int i; \/\/定义无符号整数,最大取值范围65535。for(i=0;i<20000;i++) \/\/做20000次空循环。; \/\/什么也不做,等待一个机器周期。} \/ 函数功能:主函数 (C语言规定必须有也只能有1个主函数)。\/voi...

Keil C 中的关于中断程序退出状态问题
一般较通用的按键处理流程是:当INT0#检测到跳变沿中断时,置一个标志,关闭EX0中断使能;主循环中凭借此标志延时20~100ms去抖(说白了就是避过按键电平不稳定的这段时间),然后重新采集P2.6状态,仍旧是低电平才判定为有效按键变化。对于连接线较长或者易受干扰的场合,按键处理应增加至少一阶的数...

单片机c语言中interrupt4表示什么意思
interrupt4表示:中断串行端口,C语言取反的方法。如下参考:1.首先打开桌面keil软件,在51单片机编程中是最常用的keil软件。2.然后编写相应的代码,如下图所示。3.写完后,编译以确保没有错误。生成十六进制文件并保存。4.打开刻录写软件(也可以使用STC)。点击“打开文件”找到你刚写的程序。5.找到合适...

【求单片机C语言程序】STC89C52通过两个外部中断P3.2和P3.3,来控制P1....
void INT0_ROUTING() interrupt 0\/\/外部中断0子程序 { P0=0xfe;\/\/LED0点亮 while((P3|0xfb)==0xff);\/\/等待外部中断0口(P3^2松开)delay(10);\/\/延时去抖动 P0=0xff;\/\/LED0熄灭 } void INT0_ROUTING() interrupt 2 { P0=0xfd;\/\/LED1点亮 while((P3|0xf7)==0xff);\/\/等待外部...

51单片机流水灯如何通过两个按键启动和停止 ,怎么停止
define led P2\/\/ char i;sbit k1=P3^6; \/\/启动按键 sbit k2=P3^7;\/\/停止按键 bit s=0; \/\/ 启停标志 char a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; \/\/LED灯的数组 void delay1s(void); \/\/延时函数 void liushuideng(); \/\/流水灯的循环 void main(){ led...

51单片机keil4系统+STC-ISP题目?
K1键决定K2和K3是加1功能还是减1功能,(按下K1,LED灯熄灭,K2和K3为加1,再次按下K1,LED灯点亮,K2和K3为减1)(3) 利用STC-ISP软件中的串口助手实现与单片机开发板的串行通信。当利用串口助手向单片机发送1,单片机返回“这是***的程序”(***部分要求为每位同学自己的名字),当利用串口助手向单片机发送2,...

keil51,按下开关k1,让8只LED灯加一显示;按下开关K2让8只LED减一...
P1 = temp; \/\/LED熄灭 while(1){ if(key_s2 == 0) \/\/判断S2是否被按下 { delay(20);if(key_s2 == 0){ num++;while(!key_s2); \/\/松手检测 if(num < 9 || num!=0 ){ temp = temp << 1; \/\/ 初值 1111 1110 向左移1位 P1 = temp;} else { num = 9;temp...

C语言,用keil4写一个机械转速表?
要使用C语言在Keil4环境下编写一个机械转速表,你需要完成以下几个步骤:1. **硬件接口设计**:- 确定单片机的型号和引脚,以及如何连接到步进马达。- 设计电路,使得单片机能够接收12V方波脉冲信号。2. **单片机输入处理**:- 编写代码,使得单片机能够检测到方波脉冲信号,并计算脉冲的频率和占空比。-...

c语言实验报告心得
这个比较特殊,而且C51好象有对此BUG,建议少用。但也有他的优点,具体用法属于中级问题,这里不提。三、有关单片机ALE引脚的问题 "单片机不访问外部锁存器时ALE端有正脉冲信号输出,此频率约为时钟振荡频率的1\/6.每当访问外部数据存储器是,在两个机器周期中ALE只出现一次,即丢失一个ALE脉冲."这句话是不是有毛病....

相似回答