ORG 00H
LJMP MAIN
ORG 000BH;000BH是定时器0的入口,定时器1的入口是001BH
LJMP T0_INT
ORG 0030H
MAIN: MOV DPTR,#TABLE;把后面的表值存在DPTR中
MOV R0,#0;向R0设置初值
MOV A,R0
MOVC A,@A+DPTR;间接寻址,取表中代码,@A等同于指向DPTR的指针
MOV P0,A;把上一句中取到的码从P0送出
MOV TMOD,#01H;启用定时器0的工作方式1
MOV TH0,#HIGH(65535-50000);初值,50毫秒中断一次
MOV TL0,#LOW(65535-50000);
SETB TR0;启动定时器0
SETB ET0;启动定时器中断
SETB EA;打开总中断
MOV R1,#20;中断技术初始值
JMP $;停止
T0_INT:
CLR TR0;
MOV TH0,#HIGH(65535-50000);
MOV TL0,#LOW(65535-50000);
SETB TR0;
DJNZ R1,T0E;R1减到0重新赋值,否则退出
MOV R1,#20
INC R0
MOV A,R0;
MOVC A,@A+DPTR;间接寻址,取表中代码,@A等同于指向DPTR的指针
MOV P0,A;把上一句中取到的码从P0送出
CJNE R0,#10,T0_INT
MOV R0,#0H
MOV A,R0;
MOVC A,@A+DPTR;间接寻址,取表中代码,@A等同于指向DPTR的指针
MOV P0,A;把上一句中取到的码从P0送出
JMP T0_INT
T0E: RETI
TABLE:
DB 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8
DB 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e
END