
#include "reg51h"
void int0(void) interrupt 0
{
}
void main(void)
{
IT0=1;
EX0=1;
//EA=1;
}
#include <reg51h>
void InitTimer1(void)
{
TMOD = 0x10;
TH1 = 0x3C;
TL1 = 0x0B0;
EA = 1;
ET1 = 1;
TR1 = 1;
}
void main(void)
{
InitTimer1();
}
void Timer1Interrupt(void) interrupt 3
{
TH1 = 0x3C;
TL1 = 0x0B0;
//add your code here!
}
由于“interrupt 1”的标识,编译器会将“a()”编译为对应中断1的中断入口地址,也就是在中断1的中断向量入口处放置类似“jump a”的汇编指令,并在flash其他合适的地方链接“a()”的执行代码。
中断初始化中的中断势能打开后,外设开始工作,当中断条件满足后,“硬件”使PC自动跳转到中断1的入口,并跳转到a执行。在进出中断的时候,会有现场的保护和恢复,这部分代码会有编译器生成。
有错, 指令MOV IE;#84与这两条指令SETB EX1; SETB EA ;效果是一样的!!!
ORL IP,#04H;与 SETB PX1;效果一样!!!
ANL TCON ,#0FBH与CLR IT1效果一样!!!
你是初始化外部中断1,低态动作。
TMOD工作方式
TCON一般不用设置
EA总中断
ET0定时器中断
TH0设置中断时间
TL0
TR0工作方式选择为定时器
就这些内容
当某中断产生而且被CPU响应,主程序被中断,接下来将执行如下 *** 作:
1 当前正被执行的指令全部执行完毕;
2 PC值被压入栈;
3 现场保护;
4 阻止同级别其他中断;
5 将中断向量地址装载到程序计数器PC;
6 执行相应的中断服务程序。
中断服务程序ISR完成和该中断相应的一些 *** 作。ISR以RETI(中断返回)指令结束,将PC值
从栈中取回,并恢复原来的中断设置,之后从主程序的断点处继续执行。
以上就是关于51单片机int0中断初始化,要完成哪三个 *** 作全部的内容,包括:51单片机int0中断初始化,要完成哪三个 *** 作、AT89C51单片机,定时器1,50ms中断,用c语言写出初始化程序和中断函数程序、在c51单片机 void main () { 中断初始化} while; void a() in等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)