该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
* 名称:外部中断
* 日期:2013-9-10
* 晶振:11.0592MHZ
******************************************************************/
#include //包含头文件,对IO进行定义,可以选中后右击,查看里面具体定义。
/******************************************************************/
/* 宏定义 */
/******************************************************************/
#define uchar unsigned char
#define uint unsigned int
/******************************************************************/
/* 位定义 */
/******************************************************************/
sbit LED=P1^0; //定义LED端口
sbit LED1=P1^2;
/******************************************************************/
/* 函数声明 */
/******************************************************************/
void Init_EXT0();
void delay();
/*******************************************************************
* 函 数 名: 主函数
* 函数功能: 函数入口及整体
* 入口参数: 无
* 返 回: 无
********************************************************************/
void main()
{
Init_EXT0();
while(1)
{
;
}
}
/*******************************************************************************
* 函 数 名: Init_EXT0(void)
* 函数功能: 对单片机进行外部中断初始化
* 入口参数: 无
* 返 回: 无
*******************************************************************************/
void Init_EXT0(void)
{
EA=1; //允许总中断
EX0=1; //允许外部中断0
IT0=1; //边缘触发
}
/*******************************************************************************
* 函 数 名: EXT0_INT0(void)
* 函数功能: 外部中断,中断函数,进行重新赋初值及LED取反操作
* 入口参数: 无
* 返 回: 无
*******************************************************************************/
void EXT0_INT0(void) interrupt 0 using 1
{
LED=0; //?????????为什么LED无法亮
delay();
LED=1;
}
/*******************************************************************************
* 函 数 名: delay
* 函数功能: 毫秒延时for 11.0592MHz or 12MHz
* 返 回: 无
*******************************************************************************/
void delay ()
{
uint i=0;
LED=1;
TMOD = 0x00;
for(i=0; i<300; i++)
{
TF0=0;
TH0 = (8192-100)%32;
TL0= (8192-100)/32;
TR0 = 1;
while(TF0 == 0)//定时器溢出TF0被置为1,退出循环
{
LED1 =~LED1;
}
TR0=0;
}
}