课设
毕设
论文
工具
软件
开发学习套件
礼品中心
助学活动
校园大使
讲师招募
黑板报
联系我们
畅学电子
首页
学习
单片机
硬件设计
软件开发
技术应用
基础课
课设毕设
电子竞赛
职场创业
课程
计划
项目
小组
登录
注册
小组
»
单片机
»
51讨论交流
»
讨论区
小组首页
讨论区
附件区
成员
STC89C51两个按键外部中断,按这两个按键都会执行int0
P3.2 P3.3接两个按键 中断INT0控制变量ledmod INT1控制变量tk,为什么按这两个按键都会改变ledmod的值呢?
include <STC12C5A60S2.H>
#include <intrins.h>
sbit FN1=P3^2;
sbit FN2=P3^3;
unsigned
int
ledmod=1;
//LED模式标识
unsigned
int
tk=5;
//LED时间变量
unsigned
char
pwroff=0;
//掉电模式标识
void
Fn1int(
void
);
void
Fn2int(
void
);
void
Ledmod1(
void
);
void
Ledmod2(
void
);
void
Ledmod3(
void
);
void
Pwrdown(
void
);
void
Delay(unsigned
int
n);
void
Intsystemset(
void
)
//中断配置
{
IT0=0;
EX0=1;
IT1=0;
EX1=1;
EA=1;
}
void
Delay(unsigned
int
n)
//延时程序
{
unsigned
int
i,j;
for
(i=0;i<n;i++)
for
(j=0;j<50;j++);
}
void
Fn1int() interrupt 0
//INT0中断
{
unsigned
int
m0=ledmod;
EA=0;
pwroff=0;
Delay(200);
if
(FN1==0)
{
while
(FN1==0)
{
}
if
(m0>=3)
{ledmod=1;}
if
((m0>=1)&&(m0<3))
{ledmod=ledmod+1;}
}
EA=1;
}
void
Fn2int() interrupt 2
//INT1中断
{
unsigned
int
e1=tk;
EA=0;
pwroff=0;
Delay(200);
if
(FN2==0)
{
while
(FN2==0)
{
}
if
(e1<=1)
{tk=10;}
if
((e1>1)&&(e1<11))
{tk=tk-1;}
}
EA=1;
}
void
Pwrdown(
void
)
//掉电模式函数
{
P4SW=0X70;
P0=0X00;
P1=0X00;
P2=0X00;
P4=0X00;
//进入掉电模式
PCON=0X02;
_nop_();
_nop_();
}
void
main(
void
)
//主函数
{
unsigned
int
mi,mj;
P4SW=0X70;
P0M1=0X00;
P0M0=0X7F;
P1M1=0X00;
P1M0=0X7F;
P2M1=0X00;
P2M0=0X7F;
P4M1=0X00;
P4M0=0X3F;
//端口配置
Intsystemset();
//配置中断
while
(1)
{
if
((ledmod=1)&&(pwroff==0))
{Ledmod1();}
if
((ledmod=2)&&(pwroff==0))
{Ledmod2();}
if
((ledmod=3)&&(pwroff==0))
{Ledmod3();}
if
(pwroff==1)
{
P0=0X00;
P1=0X00;
P2=0X00;
P4=0X00;
for
(mi=0;(mi<600)&&(pwroff==1);mi++)
//掉电模式等待
{
for
(mj=0;mj<100;mj++)
{
Delay(100);
}
}
if
(pwroff==1)
{Pwrdown();}
//进入掉电模式
}
}
}
永不止步步
发表于
09-29 09:32
浏览65535次
分享到:
已有1条评论
畅学电子
09-29 09:45
主程序== 写成了=
回复
畅学电子
×
0
/200
添加一条新评论
只有登录用户才能评论,请先
登录
或
注册
哦!
话题作者
永不止步步
()
金币:
67417个
|
学分:
363791个
同小组最新话题
单片机嵌入式编程的注意事项
晶振电路中如何选择电容?
如何判断电路中晶振是否被过分驱动?
PIC单片机振荡电路中如何选择晶体?
如何看待单片机在汽车电子 市场中的前景?
单片机应用简单技巧 - 环形缓冲
单片机应用简单技巧——按键
时钟电路
触发器区别于锁存器
C8051FXX单片机的加密方式
课程推荐
» 更多
ARM单片机开发环境-KEIL MDK的实战操作
CAN模块实战教程
Mini51V2.0 开发板实战教程
畅学蓝牙小车模块精讲教程
PIC单片机轻松入门与实践 — 畅学单片机
畅学Arduino入门教程
CEPARK电机模块实战教程
人体红外感应模块实战教程
畅学模拟电路精讲教程
MSP430单片机轻松入门与实践 — 畅学单片机
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!
已有畅学电子网帐号?
登录
可从合作网站帐号登录:
QQ
新浪微博
x