单片机设计一个定时器电路,能使发光二极管亮100Ms,灭100Ms周而复始。

如题所述

第1个回答  2009-11-17
0.1s亮、0.1s灭。

ORG 0
CLR P1.0
CALL DL100MS
SETB P1.0
CALL DL100MS
SJMP 0

DL100MS: MOV R7 ,#100
LOOP1: MOV R6, #250
LOOP2: NOP
NOP
DJNZ R6,LOOP2
DJNZ R7,LOOP1
RET
第2个回答  2019-01-17
#include<reg52.h>
#define
uchar
unsigned
char
#define
uint
unsigned
int
void
init();
uchar
a=0;
main()
{
init();
while(1)
{
if(a
==
4)
a
=
0;
if(a
<=
2)
P0
=
0x00;
else
P0
=
0xFF;
}
}
}
void
init()
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
TR0=1;
ET0=1;
}
void
timer0()
interrupt
1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
说明P0口控制LED.
第二种方法:比较简单:
#include<reg52.h>
#define
uchar
unsigned
char
uchar
a,num;
void
main()
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
TR0=1;
ET0=1;
EA=1;
while(1);
}
void
time0()
interrupt
1
using
0
{
TH0=0x3c;
TL0=0xb0;
num++;
if(num==20)
{
num=0;
a=~a;
P0=a;
}
}
第3个回答  2009-11-18
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void init();
uchar a=0;
main()
{ init();
while(1)
{ if(a == 4) a = 0;
if(a <= 2) P0 = 0x00;
else P0 = 0xFF; }

}

}

void init()
{
TMOD=0X01;

TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
TR0=1;
ET0=1;

}

void timer0() interrupt 1
{

TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;

} 说明P0口控制LED.

第二种方法:比较简单:
#include<reg52.h>
#define uchar unsigned char
uchar a,num;
void main()
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
TR0=1;
ET0=1;
EA=1;
while(1);
}

void time0() interrupt 1 using 0
{
TH0=0x3c;
TL0=0xb0;
num++;
if(num==20)
{
num=0;
a=~a;
P0=a;
}
}本回答被网友采纳