电路设计
思路
汇编
ORG 0000H
LJMP START
ORG 000BH ;T0的中断服务程序入口
LJMP TIME
ORG 0030H
START:MOV SP,#60H
MOV P0,#0FEH
MOV R1,#00H ;软件计数器清零
MOV TMOD,#01H ;T0采用工作方式1
MOV TH0,#3CH ;设置初始值:2^16-50μs/1μs=3CB0H
MOV TL0,#0B0H
SETB EA
SETB ET0
SETB TR0
LOOP:AJMP LOOP ;循环等待
TIME:PUSH PSW
INC R1
CJNE R1,#20,TIME_JMP ;定时50μm二十次
CPL P0.0 ;改变P0.0状态
MOV R1,#00H ;清空软件计数器
TIME_JMP:MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
POP PSW
RETI
END
C语言
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED = P0^0;
uchar count = 0;
void main()
{
TMOD = 0x00;
TH0 = (8192-5000)/32;
TL0 = (8192-5000)%32;
IE = 0x82;
TR0 = 1;
while(1);
}
void LED_Flash() interrupt 1
{
TH0 = (8192-5000)/32;
TL0 = (8192-5000)%32;
if(++count == 200)
{
LED = ~LED;
count = 0;
}
}