
把程序贴上来帮你看看,我现在刚好有空。
补充:
40K的程序报错,仅凭报错信息让别人查错,如果能查到那他不是人是“神”。如果你的错误很低级(系统程序员都没为你准备错误信息),编译系统报错信息就会非常离谱(何况你还要借助电脑翻译)。有时你用了一个全角标点符号,系统都会给你胡乱报上一通。注掉一部分程序缩小错误范围再慢慢找吧。
先在主函数里写上:
IT1=1;//下降沿触发
EA=1;//开总中断
EX=1;//开int中断
然后在主程序外面写中断服务函数
void Int1()interrupt 2
{
写入你想实现的功能
} 当你按下P33后 就会执行void Int1()interrupt 2 里的程序了
希望能帮到你。
果你在程序里面对函数进行了声明的话,子程序可以写在任意地方(当然还是要在这个文件里面)。如果不进行声明的话,也不是仅仅写在MAIN函数之前这条规则这么简单,而是不能还让编译器没有编译到这个函数当时遇到了这个函数被其他函数调用,这样的话就会出错。
第二,中断函数不用进行函数声明,可以写在MAIN函数前面也可以写在MAIN函数后面。
第三,由于不知道你说的是那种单片机在那种编译器下面的写法,我在这里给你一个51内核的单片机79F168在KEIL里面的中断函数的写法给你。
void UART_ISR() interrupt 4
{
if(RI && REN)
{
}
if(TI && TXEN)//TXEN为自己定义的一个串口发送使能标志
{
}
}
void timer0_1ms_ISR() interrupt 1
{
TL0=LOBYTE(TIMER0);
TH0=HIBYTE(TIMER0);
}
这两个函数第一个是串口中断函数,第二个是定时器0中断函数,函数名可以自己定义,后面的interrupt必须写,紧着这最关键的就是这个中断号,可以查询数据手册得到这个中断号,每一个中断都会有一个中断号,对应着写在后面就可以了。
另提醒楼主基础很重要,所有的东西都是由最基本基础的东西叠加起来的。
把你的程式目录中的一个m51档打开贴出来,看一下code memory一拦例如:
C O D E M E M O R Y
CODE 0000H 0003H ABSOLUTE
CODE 0003H 0004H UNIT PRVOLTAGE_REFERENCE_INITINIT
CODE 0007H 0004H UNIT PROSCILLATOR_INITINIT
CODE 000BH 0003H ABSOLUTE
CODE 000EH 0146H UNIT CLIB_CODE
CODE 0154H 00E7H UNIT PRDO_ADC0DCTMAK001
CODE 023BH 008CH UNIT C_C51STARTUP
CODE 02C7H 0087H UNIT PRMAINDCTMAK001
CODE 034EH 0064H UNIT PRTIMER0_ISRDCTMAK001
CODE 03B2H 0056H UNIT PRLED_INITDCTMAK001
CODE 0408H 0024H UNIT PR_T1_WAITMSDCTMAK001
CODE 042CH 0018H UNIT C_INITSEG
CODE 0444H 0015H UNIT PRINIT_DEVICEINIT
CODE 0459H 0010H UNIT PRTIMER_INITINIT
CODE 0469H 0010H UNIT PRPORT_IO_INITINIT
CODE 0479H 000DH UNIT PRADC_INITINIT
CODE 0486H 000AH UNIT PRPCA_INITINIT
CODE 0490H 0004H UNIT PRINTERRUPTS_INITINIT
这样我们才有办法帮你看,你的程式哪边overlap, 一般比较常见的错误是:
void Timer0_ISR (void) interrupt 1
Interrupt後面的数字弄错, 以致linker 摆错位置, 导致程式重叠在通一位置(overlapped)
此外如果是汇编的程式要注意
主程式从0开始执行是否有立刻long jpmp到其他位置,有没有占用到中断程式。
中断程式是否有立刻long jpmp到其他位置,有没有占用到下一个中断向量程式空间。
以上就是关于急 急 急 keil c51在中断写程序时出现了以下问题全部的内容,包括:急 急 急 keil c51在中断写程序时出现了以下问题、在KEIL软件中“外部中断1由单片机的引脚P3.3下降沿触发”用C语言怎么写、如何写中断程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)