找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18820|回复: 1
打印 上一主题 下一主题
收起左侧

单片机查询方式和中断方式的区别详解

[复制链接]
跳转到指定楼层
楼主
ID:425029 发表于 2019-3-29 11:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
查询方式就是不断的查询某个标志位,需要耗费大量的cpu 的时间,一般情况下除专门用于延时外不用这种方式(自己认为),中断方式比较适合处理具有随即特性的事件,事件发生后向cpu提出申请,然后cpu会保存当前的任务转去处理事件
编程时查询方式要不断查询标志位,而中断要编写中断服务子程序来处理中断事件


你看看上面的,能不能编个中断方式的程序给我咯

比方说定时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);//若定时完成则中断标志位TF0为1,在此不断查询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;//点亮灯
}



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:103162 发表于 2020-6-17 09:23 | 只看该作者
你的查询法都没有包含在大循环中怎么实现查询。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表