求单片机一秒延时程序(12M晶振),要用C语言且用定时和中断

来源:百度知道 编辑:UC知道 时间:2024/05/24 01:12:07

我以前写的控制跑马灯的程序,有1s定时,也有中断,
根据需要修改修改就可以了。
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uchar uu);

main()
{
EA=1;
EX0=1;//开总中断和外部中断0;
EX1=1;//开中断1?
ET0=1;
PX0=1;
PX1=1;
IT0=1;
IT1=1;
while(1)
{
P2=0;
delay(20);
P2=0xff;
delay(20);
}
}

void int1() interrupt 0 using 2
{
uchar aa,i,j,k;
i=0xfe;
for(aa=0;aa<4;aa++)
{
P2=i;
j=i>>7;
k=i<<1;
i=k|j;
delay(20);
}
}

void int2() interrupt 2 using 3
{
uchar bb,ii,jj,kk;
ii=0x7f;
for(bb=0;bb<4;bb++)
{
P2=ii;
jj=ii<<7;
kk=ii>>1;
ii=kk|jj;
delay(20);
}
}

void delay(uchar uu) //uu*5ms定时;
{
uchar aaa;
for(aa