;定義數據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
|