这个单片机程序的中断发生条件是什么?

这个单片机程序的中断发生条件是什么?这个单片机程序的中断发生条件是什么? void sys_init() { EA=1; P1ASF=0x40;//将P1^7设置为模拟输入 ADC_CONTR=0xe7;//开启ADC电源,设置为最快转换速度,停止转换,选取P1^7作为ADC输入 ADC_RES=0;//清除结果寄存器 /*ADRJ=0;//ADC_RES[7:0]存放高8位ADC结果,ADC_RES[1:0]存放低2位ADC结果 EADC=1;//A/D转换中断允许 PADC=1;//设置A/D转换中断优先级为最高*/ //CLK_DIV=0X20; EADC=1; PADC=1; } ******************************************************************************************** 函数名称: main** 函数功能: 主函数** 入口参数: 无** 出口参数: 无*******************************************************************************************/ void main(){ buzz=0; fengshan=0; flag=0; CCON=0; CL = 0; CH = 0; CMOD = 0x02; CR = 1; stop(); sys_init();while(1){ ADC_CONTR=0xef;delay(1000);//这段暂停的时间用于等待AD转换完成} }void ADC_Routine() interrupt 5//中断发生证明AD转换的结束{ ADC_CONTR&=!0x10;//清除ADC中断标志,例程 ADC_DATA=ADC_RES*4+ADC_RESL;/*读取转换后的电压值,放入vin变量中*/ //vin=(float)ADC_DATA*5/1024; /*查表,获取按下的键值信息,存入ADC_value中,这个ADC_value不是转换后的键值,而是包括了没有按键按下的时候对应的设定值,根据设定值可以知道按键没有被按下,现假设这个设定值是16*/ if(ADC_DATA<90&&ADC_DATA>50){ qianjin_1(); } else (ADC_DATA<150&&ADC_DATA>112) { stop(); }}

第1个回答  2019-08-01
中断发生的条件是:主函数中ADC_CONTR=0xef;执行结束,并且过了相应的
AD转换
时钟周期,单片机完成将AD转换值保存在结果寄存器中等动作。这时候就会去执行AD转换的中断。
第2个回答  2020-03-07
t0计数溢出置位tf0产生中断请求,如果单片机允许t0中断,并且没有更高优先级的中断服务程序在运行或者挂起,就将响应t0中断,执行其中断服务程序
相似回答