c语言编写51单片机中断程序,执行过程是怎样的?
时间:10-02
整理:3721RD
点击:
例如程序:
#include<reg52.h>
void main(void)
{
EA=1; //开放总中断
EX0=1; //允许使用外中断
IT0=1; //选择负跳变来触发外中断
P0=0xff; //关闭所有P0口的LED灯
while(1); //无限循环,
}
void it0(void) interrupt 0 using 0 //外中断0的中断编号为0
{
P0=~P0; //每产生一次中断请求,P0取反一次。
}
当有中断时,这个程序的执行过程是怎样的?
#include<reg52.h>
void main(void)
{
EA=1; //开放总中断
EX0=1; //允许使用外中断
IT0=1; //选择负跳变来触发外中断
P0=0xff; //关闭所有P0口的LED灯
while(1); //无限循环,
}
void it0(void) interrupt 0 using 0 //外中断0的中断编号为0
{
P0=~P0; //每产生一次中断请求,P0取反一次。
}
当有中断时,这个程序的执行过程是怎样的?
从main开始,开放总中断,允许使用外中断,选择负跳变来触发外中断,到这时负跳变没来没就一直while(1),等待。来了后执行
void it0(void) interrupt 0 using 0 //外中断0的中断编号为0
{
P0=~P0; //每产生一次中断请求,P0取反一次。
}
有中断时直接跑到中断服务去
恩,对的!
hao de 非常完美的解释
会直接执行中断程序的,应该加个计时器,main后
TMOD=0x01;//设置定时器0为工作方式1(0000 0001)
TH0=(65536-9174)/256;//装初值50ms一次中断
TL0=(65536-9174)%256;
EA=1; //开总中断
在中断程序里也加初值:TH0=(65536-9174)/256;//装初值50ms一次中断
TL0=(65536-9174)%256;
CPU会一直在检测是否有中断请求的。当收到中断请求EX 时,进行软件设置,开启总中断EA ,再设置中断的触发方式IT。
应该是P0控制的LED灯亮灭的交替出现吧
如果我让数码管动态显示一遍以后,产生中断,让第一个数码管亮。怎么编写
进入main执行 遇到中断进入中断执行程序
弄过一个带外部中断的,体会是只用软件仿真时不容易调试