在单片机中断中void time0() interrupt 1 using 1

void time0() interrupt 1 using 1中的interrupt 1 和 using 1各代表什么意思!谢谢!

楼上qmt已经大致给你介绍清楚了中断函数的定义,值得提出的是,中断函数类型void,说明中断函数是不能有返回值的,这点要明确,所以不要企图让中断函数给你个返回值。还有,函数名后面括弧内是没有参数的。。。这点也需要注意,中断函数不能传递参数。

interrupt 后面的点是中断号。重点我给你解释下using。

这是C51编译器扩展的关键字。用来选择80c51单片机中不同的寄存器组,你也知道R0-R7总共有4组,那么using 后面的数字也就是0-3范围里的一个数了。如果不需要using的话,编译器会自动选择一组寄存器作为绝对寄存器访问的。
using对代码是有一定的影响的。
给你说个简单的例子,你可以想下,
如果定义
void time0() interrupt 1 using 1
假设,我们又在中断里调用了一个delay();这个delay是起延时作用。
那么,我们就需要确保我们使用的寄存器组是同一组,否则,就会出现混乱。
这样说你能明白么?

所以,我建议你,不必要时不要使用using。不过,你可以试下这个关键字。

祝你学习顺利。

LX efenwu:
简单来说,51有4组通用寄存器,R0~R7,我们在使用的时候,从来就没有指明用的是哪个R0,编译器就会自动选一组通用寄存器作为绝对地址访问。在c语言中,我们写一个函数,例如延时函数,里面用的变量,反汇编之后就是在使用R0-R7,那么你能确定你使用的是哪一组寄存器吗?
所以说,使用using能选择使用的寄存器组,但同时在“切换”时要特别小心。你在中断程序里调用别的程序就会出现寄存器组切换问题。。
其实using还有其他的注意地方,因为使用麻烦,我从来不用这个关键字。这也就是我为什么不推荐楼主用using。编译器会自己选择一组嘛。

所以只要这样定义一个中断函数就行了:
void FuncName() interrupt lvl
其中lvl就是中断的优先级序号。

要是还有什么地方不明白的地方,请指出来,共同学习嘛。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-04
定义中断服务函数

函数类型 函数名 (形式参数) interrupt n [using n]
中断号 中断源 中断向量
0 外部中断0 0003H
1 定时器/计数器0 000BH
2 外部中断1 0013H
3 定时器/计数器1 001BH
4 串行口 0023H
interrupt 关键字是不可缺少的,由它告诉编译器该函数是中断服务函数,并由后面的
n 指明所使用的中断号。n 的取值范围为0-31,但具体的中断号要取决于芯片的型号,像
AT89C51 实际上就使用0-4 号中断。每个中断号都对应一个中断向量,具体地址为8n+3,
中断源响应后处理器会跳转到中断向量所处的地址执行程序,编译器会在这地址上产生一个
无条件跳转语句,转到中断服务函数所在的地址执行程序。下表是51 芯片的中断向量和中
断号。
第2个回答  2019-10-09
这是按照51单片机的中断向量顺序编的号,也是缺省状态下的优先级。
外部中断0
interrupt
0
定时器0
interrupt
1
外部中断1
interrupt
2
定时器1
interrupt
3
串口中断
interrupt
4
定时器2
interrupt
5
后面的using1
就是在中断服务器里工作寄存器rn使用第1工作区
工作寄存器共有4个工作区,由psw中的rs1
rs0决定
rs1
rs0
0
0
工作区0
对应00h~07h
0
1
工作区1
对应08h~0fh
1
0
工作区2
对应10h~17h
1
1
工作区3
对应18h~1fh
第3个回答  2010-05-04
LS的什么意思?

在单片机中断中void time0() interrupt 1 using 1
void time0() interrupt 1 using 1 假设,我们又在中断里调用了一个delay();这个delay是起延时作用。那么,我们就需要确保我们使用的寄存器组是同一组,否则,就会出现混乱。这样说你能明白么?所以,我建议你,不必要时不要使用using。不过,你可以试下这个关键字。祝你学习顺利。LX efenwu:简单来说...

单片机中void Timer0_isr(void) interrupt 1 using 1 怎么理解
这是按照51单片机的中断向量顺序编的号,也是缺省状态下的优先级。外部中断0 interrupt 0定时器0 interrupt 1外部中断1 interrupt 2定时器1 interrupt 3串口中断 interrupt 4定时器2 interrupt 5后面的using1 就是在中断服务器里工作寄存器Rn使用第1工作区工作寄存器共有4个工作区,由PSW中的RS1 RS0决定RS1 RS0 ...

...中断程序void Time0(void) interrupt 1 using 0中各个数字代表什么含 ...
1代表定时计数器0中断 2代表外中断1 3代表定时计数器1中断 4代表串行口中断 所以interrupt 1代表定时计数器产生中断后就转到这个函数里面执行 using 后面的数字是个工作寄存器的代号,也就是R0—R7。如果不写的话由系统自动分配,一般不用去理会 ...

单片机中的Timer0Interrupt(void) interrupt 1下的程序是用来做什么的...
开定时器后,定时器就开始计时,定时器有四种工作模式,比如工作方式0,16位定时器,可以定时65536us,当从初值加到65536后,产生溢出,定时器向cpu申请中断,cpu转去执行中断服务程序,执行完后回到main函数,51单片机共有5个中断源,

单片机C语言程序void Time0() interrupt 1的问题
这个是定时中断,在执行主程序时候,当定时到后,就会触发定时中断,执行完返回断点。很多大型程序都是这样编的。如有问题请留言

请教一个单片机的问题 很基础的
第二个问题嘛,计数是没有终止的,除非你TR0=0,所以你在给TH0和TL0赋值的过程中都在计数,所以安全的赋值过程是如下:void Time0() interrupt 1 using 0 { TR0=0;\/\/赋值前暂时关闭计数 TL0=(65536-50000)\/256;TH0=(65536-50000)%256 TR0=1;\/\/赋值后打开计数 D1=~D1;} ...

单片机中断函数void T0_time()interrupt 1编译通过不了
void main(){ TMOD=0x01;TH0=(65536-50000)\/256;TL0=(65536-50000)%256;EA=1;\/\/开总中断 ET0=1;\/\/开外部中断0 TR0=1;while(1){ if(num==20){ num=0;led=~led;} } \/ void T0_time()interrupt 1 { TH0=(65536-50000)\/256;TL0=(65536-50000)%256;num++;}*\/ } void T0_...

单片机中的 interrupt 是什么意思?
是中断的意思,C51里中断函数。比如 void time0_int() interrupt 1 { ^^^ }

在C语言中 void inttime0() interrupt 1 { ABC = 0; } 是什么语法,
51单片机 定时器0的中断函数 因为定时器0的中断号是1,所以后面是interrupt 1 至于里面abc=0 只是如果定时的时间到了,就执行这条语句,具体还要看主程序代码了

单片机中void time(void) interrupt 1是什么意思
这是个中断子程序,是应该是定时器0的中断申请。你看看main,里有没有打开定时器。就是TR0=1。有就是了哈。

相似回答