如题所述
单片机在操作外部设备时,常用的有中断和查询两种方式。
1、工作方式不同;
查询方式:发送数据——先发后查;
接收数据——先查后收。
中断方式:发送数据——发送、等待中断、中断中发送;
接收数据——等待中断、在中断中接收
中断方式,是事件触发的,换言之只要有事件产生都会进入中断,并且取得最优运行,因此响应更快,及时。查询方式,就是在主函数里面不停循环,查询端口状态,响应速度慢。
2、编程时的区别;中断程序在程序开始定义中断入口地址,初始化中必须打开中断允许位,程序运行时不用判断溢出状态位,溢出后硬件清零;查询方式在程序运行时必须判断溢出状态位,溢出后须软件清零。
扩展资料:
单片机工作原理
1、单片机是一块用于对系统或设备进行控制的集成电路芯片,相当于一个微型计算机系统。包含具有数据处理能力的中央处理器CPU、静态随机处理器SRAM、闪存FLASH、多种IO口和中断系统、定时器/计数器等功能。
2、可以把单片机看成是一台微型机器,程序员给它输入命令,它就执行相应的操作。其过程大概如下:在一般的用户模式下,单片机先从FLASH中读取指令,译码电路识别该指令是哪个指令,并输出对应的控制信号给单片机内的各部件,各部件收到控制信号后执行相应的操作。
当单片机操作外部设备时,通常有两种方式:中断和查询。
1、工作方式的不同:
查询方式:先发送数据,再查询;先接收数据,再查询。中断模式:发送数据-发送,等待中断,发送中断;接收数据-等待中断,接收中断
中断模式由事件触发。也就是说,只要一个事件被生成,它就会进入中断状态,得到最优的操作,因此响应速度更快、更及时。查询方法是在主函数中不断循环,查询端口状态,减缓响应速度。
2、编程中的不同:
中断程序在程序开始时定义中断输入地址。在初始化期间,必须打开中断允许位。程序运行时,不需要判断溢出状态位。溢出后清除硬件,程序运行时查询模式必须判断溢出状态位,溢出后清除软件。
扩展资料:
单片机工作原理
1、单片机是用来控制系统或设备的集成电路芯片,相当于微机系统。它包括具有数据处理能力的CPU、具有静态随机处理器的SRAM、闪存、多个IO端口和中断系统、定时器/计数器等功能。
2、单片机可视为微型机。当程序员给它一个命令时,它执行相应的操作。其过程如下:在一般用户模式下,单片机首先从flash读取指令,解码电路识别出指令是哪个指令,并将相应的控制信号输出到单片机中的各个部件,各部件在接收到控制信号后执行相应的操作。
参考资料:
本回答被网友采纳当操作外部设备时,通常有两种方式:中断和查询。
1、工作方式不同
查询方式:发送数据——先发后查;接收数据——先查后收;中断方式:发送数据——发送、等待中断、中断中发送;接收数据——等待中断、在中断中接收。
中断方式由事件触发。也就是说,只要一个事件被生成,会进入中断状态,得到最优的操作,因此响应速度更快、更及时。查询方式是一种在中保持循环、查询端口状态并缓慢响应的查询方法。
2、编程不同
中断方式在程序开始时定义中断输入地址。在初始化期间,必须打开中断入口地址。程序运行时,不需要判断溢出状态位,溢出后清除硬件。
程序运行时查询方式必须判断溢出状态位,溢出后清除软件。
扩展资料:
中断工作方式好处
1、提高了CPU的效率
外围设备需要通讯服务时主动告诉CPU,CPU停下当前工作去处理中断程序,从而提高了CPU的。
2、实现实时处理
外设任何时候都可能发出请求中断的信号,CPU接到请求后及时处理,以满足实时系统的需要。
3、及时处理故障
运行过程中难免会出现故障,eg:电源中断,出错,外围设备工作不正常等,这时可以通过中断系统向中断源的CPU发出请求,以便解决故障。
参考资料来源:
本回答被网友采纳编程时查询方式要不断查询标志位,而中断要编写中断服务子程序来处理中断事件追问
你看看上面的题目啊,能不能编个中断方式的程序给我咯
追答比方说定时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;//点亮灯
}
要产生一个方波,分别用查询和中断方式编程,程序有什么区别,能不能举例说明