interrupt函数使用


2023年12月19日发(作者:lamp的意思)

void INT0()interrupt 0 using 1

{....

.....

}

interrupt 0 指明是外部中断0;

interrupt 1 指明是定时器中断0;

interrupt 2 指明是外部中断1;

interrupt 3 指明是定时器中断1;

interrupt 4 指明是串行口中断;

using 0 是第0组寄存器;

using 1 是第1组寄存器;

using 2 是第2组寄存器;

using 3 是第3组寄存器;

51单片机内的寄存器是R0--R7(不是R0-R3)

R0-R7在数据存储器里的实际地址是由特殊功能寄存器PSW里的RS1、RS0位决定的。

using 0时设置 RS1=0,RS0 =0,用第0组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(00H)....R7(07H)

using 1时设置 RS1=0,RS0 =1,用第1组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(08H)....R7(0FH)

using 2时设置 RS1=1,RS0 =0,用第2组寄存器,R0--R7的在数据存储区里的实际地址是08H-0FH。R0(10H)....R7(17H)

using 3时设置 RS1=1,RS0 =1,用第3组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(18H)....R7(1FH)

比方说定时100ms,分别用查询法和中断法实现

查询法

#include

void main()

{

TMOD=0X01;//定时器0方式1

TH0=(65536-10000)%256;//定时器器初值

TL0=(65536-10000)/256;

ET0=0;//关定时器0中断

TR0=1;

while(TF0==0);//若定时完成则中断标志位TF0为1,在此不断查询TF0

TR0=1;//完成定时关闭定时器

while(1); //等待

}

中断法

#include

void main()

{

TMOD=0X01;//定时器0方式1

TH0=(65536-10000)%256;//定时器器初值

TL0=(65536-10000)/256;

EA=1;//开总中断

ET0=1;//关定时器0中断

TR0=1;//打开定时器

while(1); //等待

}

void isr_timer0 interrupt 1

{

TR0=0;//关闭定时器

}

另一个实例:P3.2口接有一个按键,未按下为高电平,按下则为低电平,当按下键时点亮一个led灯

查询法

#include

sbit led=P1^1;//led是共阴极接法

sbit key=P3^2//按键接到p3.0口

void main()

{

led=0;//熄灭所有灯

while(key==1);//没有键按下则等待(不断查询p3.0的状态)

led=1;//点亮灯

while(1);

}

中断法

#include

sbit led=P1^1;//led是共阴极接法

void main()

{

led=0;//熄灭所有灯

while(1);

}

void isr_led interrupt 0

{

led0=1;//点亮灯

}


本文发布于:2024-09-22 13:41:32,感谢您对本站的认可!

本文链接:https://www.17tex.com/fanyi/15556.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:中断   实际   按键   指明   下键   地址   查询
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议