//我倒,写完调试好,才发现你要的是汇编,算了,不写了,分留给别人吧,不是太难的题。
#include
#include
#define uchar unsigned char
#define L1 PD0
#define L2 PD1
uchar light_change=0x01;
void MCU_init(void)
{
DDRD=0xff;
PORTD=0xff;
}
void timer0_init(void)
{
TCNT0=158;
TCCR0=0x05;
TIMSK|=(1<
ISR(TIMER0_OVF_vect)
{
static uchar cnt=0;
TCNT0=158;
if(++cnt>=20)
{
cnt=0;
light_change^=0x01;
PORTD=0xff;
}
if(light_change)PORTD^=(1<
}
int main(void)
{
MCU_init();
timer0_init();
sei();
while(1);
}
ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT
ORG 30H
MAIN:
MOV TMOD,#01H
SETB EA
SETB ET0
SETB TR0
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R0,#4
MOV R1,#10
MAIN1:
JB 7EH,LED2
LED1:
JB 7FH,LED10
CLR P1.0
AJMP MAIN1
LED10:
SETB P1.0
AJMP MAIN1
LED2:
JB 7FH,LED20
CLR P1.1
AJMP MAIN1
LED20:
SETB P1.1
AJMP MAIN1
T0INT:
MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R0,RTI
CPL 7FH ;7F为200ms到标志
MOV R0,#4
DJNZ R1,RTI
MOV R1,#10
CPL 7EH ;7EH为2s到标志
RTI:
RETI
END