编译器不支持interrupt
⑴ C51单片机中断入口号在使用interrupt关键字时编译器有可能会有哪些操作
在使用interrupt关键字时
⑵ 编译器关键字interrupt在keil哪个文件夹里定义的
这个关键字不是在外部定义的,而是编译器自己识别的。
硬要说的话,是C51.exe在编译时识别的。
⑶ keiC51编译器所支持的中断函数一般形式是什么
你这个问题有点含糊…
一般来说,就是个无形参、无返回值的函数,然后通过interrupt x参数声明它对应于哪个中断向量就行……
⑷ 请问高手C51单片机中,中断服务程序(interrupt n using m)n,m怎么确定啊
你好!
n是中断号,每种类型的中断对应不同的n,用与告知编译器下面的中断服务程序是响应哪个中断的。
m一般没用,可以不写。
如果对你有帮助,望采纳。
⑸ CCS6中同样一段代码,选择TI的编译器能够正常编译,选择GCC编译器就报错(中断部分),这是怎么回事
看一下是不是gcc的安装目录中有空格,有的话重新装一下,目录中不要有空格
⑹ 在单片机中断中void time0() 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就是中断的优先级序号。
要是还有什么地方不明白的地方,请指出来,共同学习嘛。
⑺ picc编译器问题
第一:占用的Flash和RAM都大很多,是新版本的PICC编译器造成的,你用老版本的PICC,网上搜一搜有个8.05还是8.50版本,代码空间会小很多。
第二:你的那个break点不能放变量申明,寄存器赋值比较的地方,自然是无效,不要放在if那里。
第三:确定中断寄存器都设置好,仿真时,是自己制造中断,修改标志位触发中断。
⑻ void interrupt adint(void) 这个为什么在mplab IDE会出现69:Error: syntax error错误
没接触过这个IDE,既然提示已经说了是语法错误,可能原因就多了,可能是声明函数后没加分号“;”结束,函数名定义与声明不一致,还有可能是该编译器根本就不支持中断函数
⑼ win7下vs2008 里用c# 编译程序无法中断
2005的程序,用2008编译前会自动升级,升级完成后能否正常编译通过?
若不能程序肯定不能中断调试
⑽ 用keil51编译器编写的单片机C语言中断程序void Time0(void) interrupt 1 using 0中各个数字代表什么含义
void int0[标号而已,没有实质意义](void) interrupt 0[0号中断,也就是外部中断0] using 0[使用寄存器组0]