首页 > 编程语言 >错题笔记:中断是中断源来了 主程序先暂停然后去执行中断程序动作,执行完后,保留此状态;又回到主函数。

错题笔记:中断是中断源来了 主程序先暂停然后去执行中断程序动作,执行完后,保留此状态;又回到主函数。

时间:2022-10-03 22:46:11浏览次数:54  
标签:LED1 主程序 LED2 LED4 中断 void LED3 delay 错题

#include<reg51.h>
sbit LED1=P1^3;
sbit LED2=P3^5;
sbit LED3=P3^6;
sbit LED4=P3^7;
void blink();
void JT();
void PMD();
//执行动作
void main(){
	EX0=1;
	EA=1;
	IT0=1;//边沿触发
	while(1);
}			 
//外部中断0
void alter()interrupt 0{
	static unsigned char N=0;
	N++;
	if(N==1)
	PMD();
	else if(N==2)
	JT();
	else if(N==3)
	blink();
	else if(N==4)
	{
	LED1=LED2=LED3=LED4=1;N=0;
	}
}
//定义函数
void delay(unsigned int xms){
	while(xms>0)xms--;
}
void PMD() 
{	
	LED1=LED2=LED3=LED4=1; //先全灭 避免互相影响
	LED1=0;;
	delay(20000);
	LED2=0;LED1=1;
	delay(20000);
	LED3=0;LED2=1;
	delay(20000);
	LED4=0;LED3=1;
	delay(20000);
}

void JT()
{
	LED1=LED2=LED3=LED4=1; //先全灭 避免互相影响
	LED1=LED2=0;
	delay(20000);
	LED1=LED2=1;
	delay(20000);
	LED3=LED4=0;
	delay(20000);
}

void blink()
{
	LED1=LED2=LED3=LED4=1; //先全灭 避免互相影响
	delay(10000);
	LED1=LED2=LED3=LED4=0;
	delay(10000);
}

外部中断0实现3种模式,会发现跑一次后就暂停了 不动了。因为中断动作执行完后 系统是保存当时那刻状态,然后继续执行回到主函数。

解决方法:
把各动作放在主函数,中断程序就作个计数的功能就好了

标签:LED1,主程序,LED2,LED4,中断,void,LED3,delay,错题
From: https://www.cnblogs.com/YYZYCS/p/16751489.html

相关文章

  • CPU--结构与功能简介2--中断系统
    中断请求标记:INTR中断判优逻辑:(硬件)排队器实现,(软件)程序查询。中断服务程序入口地址查找:硬件向量法,软件查询法;中断响应:响应中断的条件,EINT置1,响应中断的时间,执行周期结束......
  • 操作系统错题笔记
    “访管”指令仅在用户态下使用,执行“访管”指令将用户态转变为核心态。因操作系统不允许用户直接执行某些“危险性高”的指令,因此用户态运行这些指令的结果会转成操作系......
  • DNC传输加工程序中断怎么办?
    在机床内存不足时,我们一般用DNC传输加工,但一旦出现中断,加工就会停止,这时我们该怎么办呢?如何在中断处重新加工呢?第一步,单段模式下选择循环启动第二步,将程序导入机床后,输入中......
  • 用户空间与内核空间,进程上下文与中断上下文
    用户空间与内核空间,进程上下文与中断上下文[总结]......
  • 时钟中断
    是什么是指计算机CMOS中一个芯片晶片中由电池供电,用于计时,而另一个芯片则根据实时时钟提供的时间定期向CPU引脚发送中断信号的中断。有什么用分时操作系统的CPU时间会分......
  • 理解错题了 36. 有效的数独
     理解错题了,就是让你在矩阵中循环判断而已,我还想到了康托付展开请你判断一个 9x9的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9......
  • Linux错题集1
    错题1在Linux系统中,小王希望将他执行ls命令的输出结果保存在当前目录下的文件output.ls中,以供日后进行分析和使用,但要求不覆盖原文件的内容,他应该使用的命令是A.ls>outpu......
  • 14.3 以主程序方式运行
     #加上  if__name__=='__main__':  判断是否在当前模块中运行,如果是则输出。如果是其他模块调用该模块运行,则      if__name__=='__main__':下......
  • linux驱动开发5 按键中断实验(定时器和中断)
    原文引用:https://blog.csdn.net/internetv/article/details/126487187led:IO的输出;key:IO的输入法一:直接读写IO使用while(1)无限读取,但CPU占用达到了99.6%,所以不行  ......
  • JAVA--错题本系统 个人总结
    1.static的运用,全局使用某一变量并且为了该变量不在方法中重复被调用。可以用static来放在该变量前。如:staticintnumber=0;//出题数由此可以实现改变在各个方法中是统......