interrupt函数使用

更新时间:2023-05-12 13:13:09 阅读: 评论:0

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里的RS1RS0位决定的。

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

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

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

using 3时设置 RS1=1RS0 =1,用第3组寄存器,R0--R7的在数据存储区里的实际地址是00H-07HR018H....R71FH
比方说定时100ms,分别用查询法和中断法实现
查询法
#include<reg52.h>
void  main()
{
  TMOD=0X01;//定时器0方式1
  TH0=(65536-10000)%256;//定时器器初值
  TL0=(65536-10000)/256
  ET0=0;//关定时器0中断
  TR0=1;
  while(TF0==0);//若定时完成则中断标志位TF01,在此不断查询TF0
  TR0=1;//完成定时关闭定时器
    while(1); //等待

}
中断法
#include<reg52.h>
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<reg52.h>
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<reg52.h>
sbit led=P1^1;//led是共阴极接法
void main()
{
  led=0;//熄灭所有灯
  while(1);
}
void  isr_led interrupt 0
{
  led0=1;//点亮灯
}

本文发布于:2023-05-12 13:13:09,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/599814.html

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

标签:中断   实际   按键   指明   下键   地址   下为
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图