主函数,对接口输出前,应该先把数据写入一个全局变量,如 aa = 0x。
然后再输出:P0 = aa;。
在中断函数结束前,也执行:P0 = aa;,即可显示出来中断前的灯光。
#include <reg52h>
sbit k1=P3^3;
sbit led0=P0^0;
unsigned char detetim = 0;
//
void main(void)
{
P0=0xff;
k_old=0x00;
IT1=1; //低电平触发
EA=1;
EX1=1;
while(1)
{
if (detetim == 0)
{
led1 = 0;
}
else
{
led1 = 1;
}
}
}
/
INT1中断函数
/
void counter(void) interrupt 2
{
EX1=0;
if (detetim == 0)
{
detetim=1;
}
else
{
detetim=0;
}
EX1=1;
}
中断是为了使时间更精确。使用中断一般要先设置使用哪个定时/计数器的模式几,之后再设置定时器的使能为,再打开总中断使能位,启动定时器。外部中断比定时器的优先级高,如果有更重要的事等着去处理则交给外部中断,当检测到有外部中断时,会去执行外部中断服务,执行完后回到之前未执行的地方接着继续执行;串口用到定时器,因为在串口的模式1和模式3中需要用定时器的溢出率来设置波特率。我说得不怎么详细,这个几句话说不清。这个你可以先把概念搞懂,之后用列子去理解概念会比较好,不懂的就多问问。
这是我在网上看到的一点资料
以上就是关于单片机C51的中断程序应该怎么写全部的内容,包括:单片机C51的中断程序应该怎么写、请单片机高手帮写一个简单的中断程序、c语言编写51单片机中断程序,执行过程是怎样的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)