51单片机外部中断示例
2014-01-18 15:40
246 查看
void Usart_INT0_init()
{
TMOD = 0X21;
TH1 = 0XFD;
TL1 = 0XFD;
SM0 = 0;
SM1 = 1;
REN = 1;
TR1 = 1;
//ES = 1;//串口中断影响外部中断0 这句话会让程序无法进入外部中断服务
TH0 = 0;
TL0 = 0;
ET0 = 0;//关闭定时器0
IT0 = 1;//外部中断下降沿触发*/
EX0 = 1;//打开外部中断
EA = 1;
//ES = 1;
}
void Send_data(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
int j;
void main()
{
unsigned int i;
LED = LED_ON;
//LED = LED_OFF;
flag_test_high = ON;
IN0 = 1;
Usart_INT0_init();
EX0 = 1;
while(1)
{
/*i=40000;
while(i--);*/
/*flag_test_high = ON;
EX0 = 1;
while(flag_test_high == ON);
EX0 = 0;
//Send_data('a');*/
Send_data(result|0x30);
}
}
void EX_int(void) interrupt 0
{
EX0 = 0;
ET0 = 1;//打开定时器
TR0 = 1;
while(IN0 == 0);
TR0 = 0;
tem_TH = TH0;
tem_TL = TL0;
sum = tem_TH*256 + tem_TL;
sum = (int)sum/1000;
result = 9 - sum;
//result = 9-(int)(10*(TH0*256 + TL0)/10000);//分步计算避免出错
TH0 = 0;
TL0 = 0;
LED = LED_OFF;
//Send_data(result|0x30);
flag_test_high = OFF;
ET0 = 0;//关闭定时器
EX0 = 1;
}
{
TMOD = 0X21;
TH1 = 0XFD;
TL1 = 0XFD;
SM0 = 0;
SM1 = 1;
REN = 1;
TR1 = 1;
//ES = 1;//串口中断影响外部中断0 这句话会让程序无法进入外部中断服务
TH0 = 0;
TL0 = 0;
ET0 = 0;//关闭定时器0
IT0 = 1;//外部中断下降沿触发*/
EX0 = 1;//打开外部中断
EA = 1;
//ES = 1;
}
void Send_data(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
int j;
void main()
{
unsigned int i;
LED = LED_ON;
//LED = LED_OFF;
flag_test_high = ON;
IN0 = 1;
Usart_INT0_init();
EX0 = 1;
while(1)
{
/*i=40000;
while(i--);*/
/*flag_test_high = ON;
EX0 = 1;
while(flag_test_high == ON);
EX0 = 0;
//Send_data('a');*/
Send_data(result|0x30);
}
}
void EX_int(void) interrupt 0
{
EX0 = 0;
ET0 = 1;//打开定时器
TR0 = 1;
while(IN0 == 0);
TR0 = 0;
tem_TH = TH0;
tem_TL = TL0;
sum = tem_TH*256 + tem_TL;
sum = (int)sum/1000;
result = 9 - sum;
//result = 9-(int)(10*(TH0*256 + TL0)/10000);//分步计算避免出错
TH0 = 0;
TL0 = 0;
LED = LED_OFF;
//Send_data(result|0x30);
flag_test_high = OFF;
ET0 = 0;//关闭定时器
EX0 = 1;
}
相关文章推荐
- Python-Project Euler 38
- Unity 之 移动设备的触控操作
- IOS 设备旋转
- Java数组及引用类型内存分配
- 如何使用DDMS Heap查看Android应用内存情况
- GetDlgItem(IDC_STATIC)->SetWindowText(str); 使用静态文本框怎么都不能正常显示
- 传入一个字符串,如何获得这个字符串中所有字符出现的个数
- cc debugger固件下载
- 如何用idapython脚本获取字符串窗口的数据并写入文件
- Linux命令详解之file
- 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
- 在linux下用wget整站下载网站
- ServiceEndpoint(终结点)
- hdu 1978 How many ways(DP)
- linux正则表达式处理文本
- Sublime Text 3 绝对神器
- 使用tcpdump 进行网络包分析
- 如何在ASP.NET中实现验证码?
- 推荐一本好书-----《Java解惑》
- win8下.net framework 3.5安装失败(二)