单片机外部中断实验?

单片机外部中断实验?,第1张

include<reg51.h>include<intrins.h>define uchar unsigned charuchar cnt,timesvoid delay(){uchar iTMOD=0x01TH0=(65536-50000)/256TL0=(65536-50000)%256TR0=1for(i=0i<timesi++){while(TF0==0)TH0=(65536-50000)/256TL0=(65536-50000)%256TF0=0}TR0=0}void ext0() interrupt 0{uchar i,jP1=0xfetimes=8for(i=0i<5i++){for(j=0j<8j++){P1=_crol_(P1,1)delay()}}}void ext1() interrupt 2{uchar i,jP1=0x7ftimes=12for(i=0i<3i++){for(j=0j<8j++){P1=_cror_(P1,1)delay()}}}main(){EX0=1EX1=1IT0=0IT1=1PX0=0PX1=1while(1)}

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

uchar cnt,times

void delay()

{

uchar i

TMOD=0x01

TH0=(65536-50000)/256

TL0=(65536-50000)%256

TR0=1

for(i=0i<timesi++)

{

while(TF0==0)

TH0=(65536-50000)/256

TL0=(65536-50000)%256

TF0=0

}

TR0=0

}

void ext0() interrupt 0

{

uchar i,j

P1=0xfe

times=8

for(i=0i<5i++)

{

for(j=0j<8j++)

{

P1=_crol_(P1,1)

delay()

}

}

}

void ext1() interrupt 2

{

uchar i,j

P1=0x7f

times=12

for(i=0i<3i++)

{

for(j=0j<8j++)

{

P1=_cror_(P1,1)

delay()

}

}

}

main()

{

EX0=1

EX1=1

IT0=0

IT1=1

PX0=0

PX1=1

while(1)

}

把这行的void int0() interrupt 0 //using 0,定义的去掉,不用定义寄存器组,因为定义了,在中断子程序主程序中都调用了延时子程序,这样在中断子程序中破坏了主程序的变量值,不定义时,编译时就是保护主程序的变量。如果要定义的话,要改成void int0() interrupt 0 using 1

这样就可以了。

这个已经调试通过的,放心好了。不过,别忘了,给个采纳呀!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7752780.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存