;定义数据RAM空间 LMS EQU 37H ;定义一个变量存放计数值毫秒 LMIAO EQU 38H ;定义一个变量存放计数值秒 ;数据存放 ORG 0100H TABLE: DB 0C0h,0F9H,0A4H,0b0H,99H,92H,82H,0F8H,80H,90H ;表:共阳数码管 0-9 ORG 0000H LJMP MAIN ORG 000BH ;中断入口 LJMP TIMER ORG 0200H MAIN: MOV TMOD,#01H ;设置定时器1为1模式,即16位计算模式 MOV TH0,#0D8H ;给计数寄存器赋值,10毫秒时间 MOV TL0,#0F0H MOV IE,#82H ;开总中断和T0中断 CLR A MOV LMS,A ;计数缓冲清0 MOV LMIAO,A SETB TR0 ; M1: MOV A,LMS CJNE A,#100,M2 ;以10毫秒计数,100次即为1秒 MOV LMS,#0 MOV A,LMIAO INC A MOV LMIAO,A CJNE A,#100,M2 ;如果加到100秒,则清0 MOV LMIAO,#0 M2: LCALL DISPLAY ;显示 SJMP M1 TIMER: INC LMS ;定时中断产生,以10毫秒计数加1 MOV TH0,#0D8H ;重新装入定时器值10毫秒 MOV TL0,#0F0H RETI DISPLAY: MOV DPTR,#TABLE ;数码管显示子程序 MOV A,LMIAO MOV B,#10 DIV AB SETB P3.4 SETB P3.3 ;千位数码管 MOVC A,@A+DPTR MOV P1,A MOV P1,#0FFH CLR P3.3 ;百位数码管 MOV A,B MOVC A,@A+DPTR ANL A,#0X7F ;加入小数点 MOV P1,A MOV P1,#0FFH MOV A,LMS MOV B,#10 DIV AB CLR P3.4 SETB P3.3 ;十位数码管 MOVC A,@A+DPTR MOV P1,A MOV P1,#0FFH CLR P3.3 ;个位数码管 MOV A,B MOVC A,@A+DPTR MOV P1,A MOV P1,#0FFH RET END
|