先用DOS取中断功能保存已存在的中断到内存,中断向量程序格式与过程类似,过程类型为FAR,堆栈用主程序堆栈,然后压用到的寄存器,之后是功能代码。最后取中断向量的地址用DOS设置中断向量功能添加到中断向量表。
在主程序结束前要恢复原中断
手机很麻烦,搜一下很多的。
ORG00H
开始地址
JMP
MAIN
跳转到主程序
ORG
03H
外部中断0地址
JMP
EXT1
跳转
ORG
13H
外部中断1地址
JMP
EXT2
跳转
MAIN:
MOV
IE,
#85H
使能中断
0,1
SETB
TCON.2
边沿触发
SETB
TCON.0
边沿触发
SJMP
$
--没有这一句,程序,自己就去执行中断函数了
EXT1:
MOV
P2,
#0
清0,点亮发光二极管
RETI
EXT2:
MOV
P2,
#0FFH
置1,关闭
RETI
END
你的意思是不是怎么用C语言实现汇编中的中断?汇编中的中断是通过在中断向量表中对应位置的一条跳转指令跳到中断程序来实现中断的;而C语言也是差不多,只不过C语言的中断函数要用一个特殊的关键字去标明它,比如“#pragma
interrupt_handler
int_function()",当然,每一种编译器可能都不一样;这是中断函数与普通函数的区别。当然编译器碰到一个有这样关键字的函数时就知道它是中断函数,就会把这个函数的入口地址放到中断向量表中对应的位置去。当中断来的时候,这样就能跳到中断里面执行中断程序了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)