释疑:void Timer0() interrupt 1 using 1
Timer0 是函数名,随意取的
interrupt xx using y
跟在interrupt 后边的xx 值得是中止号,便是说这个函数对应第几个中止端口,一般在51中
0 外部中止0
1 定时器0
2 外部中止1
3 定时器1
4 串行中止
实践上编译的时分便是把你这个函数的进口地址方到这个对应中止的跳转地址
using y 这个y是说这个中止函数运用的那个寄存器组,51里边一般有4组 r0 — r7寄存器,一共有32个,假如你的终端函数和其他程序用的不是同一个寄存器组则进入中止的时分就不会将寄存器组压入仓库回来时也不会谈出来节约代码和时刻
MCS-51中止函数留意如下:
(1)中止函数不能进行参数传递,假如中止函数中包括任何参数声明都将导致编译犯错。
(2)中止函数没有回来值,假如妄图界说一个回来值将得不到正确的成果,主张在界说中止函数时将其界说为void类型,以清晰阐明没有回来值。
(3)在任何情况下都不能直接调用中止函数,否则会发生编译过错。由于中止函数的回来是由8051单片机的RETI指令完结的,RETI指令影响8051单片机的硬件中止体系。假如在没有实践中止情况下直接调用中止函数,RETI指令的操作成果会发生一个丧命的过错。
(4)假如在中止函数中调用了其它函数,则被调用函数所运用的寄存器有必要与中止函数相同。否则会发生不正确的成果。
(5)C51编译器对中止函数编译时会主动在程序开端和完毕处加上相应的内容,详细如下:在程序开端处对ACC、B、DPH、DPL和PSW入栈,完毕时出栈。中止函数未加using n修饰符的,开端时还要将R0~R1入栈,完毕时出栈。如中止函数加using n修饰符,则在开端将PSW入栈后还要修正PSW中的作业寄存器组挑选位。
(6)C51编译器从肯定地址8m+3处发生一个中止向量,其间m为中止号,也即interrupt后边的数字。该向量包括一个到中止函数进口地址的肯定跳转。
(7)中止函数最好写在文件的尾部,而且制止运用extern存储类型阐明。避免其它程序调用。