3个外部中断是一个一个来的,第1个为低电平有效,后面两个为负跳变有效,当进入第一个中断,P0.0口输出低电平,P0.1口输出高电平,延时1.5S后P0.0口输出高电平。当进入第二个中断,延时1.11S后P0.2口输出低电平,然后高0.15S,低0.3S,高0.3S,低0.58S,高0.12S,低1.08S,高2.55S,低0.47S,高0.075S,高低电平很多次这样。当进入第三个中断,P0.1口输出低电平。如此循环。还有一点需要说明的是。第一个中断低电平有效,会有好几次低电平。而中断只能第一次低电平时进入。后面再有低电平不能再进入中断。如果说进入第一次中断时就关闭第一个中断,那什么时候再打开?是循环的。如不打开,下次又怎么进入第一个中断?QQ:229809984
还是麻烦哪位高手帮我编好这个程序发给我吧!我是初学者,根本就不会编这样的程序,先谢过了。程序可用,再加分!
您的程序我下到开发板里试了第一个中断是进入了没问题,我再按K2 K3按键LED灯都没反应,应该是没有进入中断吧!第三个中断执行完了第一个中断源还会最后发生一次,这次也是不能进入中断的。看能不能就是第三个中断执行完了,第一个中断源发生的时候只是打开第一个中断,而不是进入第一个中断,这样就可以循环了我是这样想的。三个中断也不是要全部只执行一次,只是第一个中断只能执行一次。直到又重新开始时第一个中断才再次执行
追答添上一行:
void main(void)
{
TMOD = 01; //T0定时方式1
TH0 = (65536 - 10000) / 256;
TL0 = (65536 - 10000) % 256; //定时10ms@12MHz
TR0 = 0; //暂时不启动.
ET0 = 1;
PT0 = 1; //在这里加上这一句
…… //后面的不变
另外,你说:第一个中断只能执行一次。直到又重新开始时第一个中断才再次执行....
请说明:什么是重新开始?
还有:第二个,第三个,是先后发生吗?,是各出现一次吗?
重新开始是这样的,就是第三个中断执行完了,第一个中断源过几S或几十S还会最后发生一次,而这最后一次也不能进入中断的,我们可以把这最后一次做结束的标志,如第一个中断源最后发生一次之后,过段时间又发生了第一个中断源,那就是重新开始了。第一中断也可以负跳变有效的。
第二个 第三个是先后发生的。是各出现一次。
再稍做修改即可。
不是很明白,我是初学者,这个程序我也根本就不会写。
追答那你就坐等人给人发程序吧!我已经不用单片机好长时间了,电脑上也没有装这些软件了。
追问那也谢您了,我再等等吧!
高电平再打开,那当他又进入低电平了,那不是又要进入第一个中断了,那个口也支持边沿中断,问题就是3个中断的工作过程当中,第一个中断源的电平是经常高低变化的,当进入第三个中断,P0.1口输出低电平,过几S后,也有时十几S第一个中断源还会低电平一次。最后才结束,再重新开始。如此循环的。
追答你是想,一个循环三个中断都只能分别中断一次吗?那你就在每次循环结束后再打开嘛。
追问第三个中断程序结束后,过几S,也有时十几S,第一个中断还会低电平一次,才再次循环的,可在没循环之前第一个中断是不能再次进入的。如在第三个中断程序结束后第一个中断打开,那不是第一个中断又进入了。
追答如果说,第三个中断完成后,过几或十几S 第一个中断口上必定会低电平一次,那么你可以做个标志位把这必来一次中断放弃,就是进入后,标志为1则把标志清零后,直接跳出来。(中断还是设成边沿的好)等下次再来低电平就可以正常运行了,也就再次进入一次循环。
也可以这么说,收到哪个信号再控制哪个输出,按顺序来。可收到哪个信号再控制,应该是要进入中断的吧!我只知道两个外部中断,INT0, INT1.而输入有三个,还有一个引脚我也不知道怎么弄,该用什么引脚。
89c51单片机的数字钟程序?
\/\/启动外部中断 SETB IT0 SETB IE0 SETB EX0 SETB PX0 SETB IT1 SETB IE1 SETB EX1 SETB PX1 SETB EA CLR 00H \/\/没有调整中断 CLR 01H \/\/闪空 MOV 4DH,#04H \/\/0xFC MOV P3,#0FH MOV 62H,46H \/\/从分开始闪 MOV 63H,47H \/\/十位数*** MOV 50H,#3FH MOV 51H,#06H MOV 52H,#5BH ...
急求51单片机c语言简易程序:二个输入口,分别控制三个输出口
sbit Key1=P3^2;\/\/输入1,不能更改 sbit Key2=P3^3;\/\/输入2,不能更改,因为 51外部中断就这两个IO口是 sbit Out1=P0^0;\/\/输出1 sbit Out2=P0^1;\/\/输出2 void Delay(uint del){ uint i,j;for(i=0; i<del; i++)for(j=0; j<1827; j++);} void INT_Init(){ EX0 = ...
89C51单片机外部中断按键的中断程序 帮忙做一个外部中断子程序,谢谢
P1.0,P1.1并不是中断引脚,你如何让其触发中断?P3.2,P3.3才是中断引脚
at89c51单片机对应高低电平的电压值
能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA\/VPP:访问外部程序存储器控制信号。为使能从0000H 到...
89c51单片机有几组I\/O口,请简单介绍其主要功能
4组,P0可以作普通IO口,也可以在读写外部存储器作低8位的地址总线和8位的数据总线;P1口只作为一般IO口;P2作为一般IO口还在在读写外部存储器作高8位的地址总线;P3口除作为一般IO口还为第二输入\/输出功能(P3.0 串行数据接入端;P3.1 串行数据发送端;P3.2 外中断0输入端 ;P3.3 外中断1输入...
51单片机有几个中断源?
TCON)---定时器和外部中断的控制 4)串行口控制寄存器(SCON)---串行中断的控制 中断类型分为三类:1)T0、T1是2个定时器\/计数器中断,由片内定时器提供;2)INT0、INT1是2个外部中断,由引脚P3.2和P3.2提供;3)RX、TX为串行口中断所用,由片内串口提供。
8051单片机三种状态输出的程序
单个IO口不能控制电压。所以可以这样:找一个三端电位器,固定端接在两个IO口上,可变端引出作输出。然后让两个IO分别输出1和0,再调节电位器使输出正好为2.5V。只要两口都置1,输出就是5V;都置0,输出就是0V;一个1一个0,就输出2.5V。注意:调节时两口的输出状态不能互换,否则就不是2....
AT89C51和AT89S51的区别?
·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I\/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据\/地址的第八位。在...
试用89c51串行口扩展io口,控制16个发光二极管发光,画出电路并编写显示程...
include #define uchar unsigned char #define uint unsigned int \/\/ 加黑的都是定义头文件sbit led0=P2^0;sbit led1=P2^1;sbit led2=P2^2;sbit led3=P2^3;sbit led4=P2^4;sbit led5=P2^5;sbit led6=P2^6;sbit led7=P2^7;...
单片机89c51与89c52的区别
3、32个双向I\/O口;4、256x8bit内部RAM;5、3个16位可编程定时\/计数器中断;6、时钟频率0-24MHz;7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;11、有PDIP、PQFP、TQFP及PLCC等...