INCLUDE 89C51.MC ;-------------------4 Digit 7-Segments --------------------- ; Microcontroller connections to DAC0808 DATA EQU P0 ; data lines P0-P3 D1 EQU P0.4 ; display 1 D2 EQU P0.5 ; display 2 D3 EQU P0.6 ; display 3 D4 EQU P0.7 ; display 4 ;---------------------------------------------------------- ; Register definitions. BUF1 EQU 00h ; first two digits BUF2 EQU 01h ; last two digits ;---------------------------------------------------------- (0000H): JMP on_reset ;-----------------------Timer-0 intrrupt------------------- (000BH): CALL display ; display CLR TF0 RETI ;---------------------------------------------------------- (00FFH): on_reset: ;Initialize interrupt MOV DATA,#00H ; display in off state MOV IE,#82H ; timer-0 interrupt enable MOV TMOD,#09H ; timer-0 16-bit mode MOV TH0,ECH ; 5msec delay at 12MHz MOV TL0,78H SETB D4 ; turn on digiT-4 SETB TCON.4 ; timer running ENDLESS: MOV BUF1,#12H ; 12 on display MOV BUF2,#34H ; 34 on display JMP ENDLESS ;---------------------------------------------------------- display: ;destroy A JB D4,DISP1 JB D3,DISP4 JB D2,DISP3 JB D1,DISP2 DISP1: CLR D4 MOV A,BUF1 ; digit 1 display ANL A,#0FH MOV DATA,A SETB D1 DISP2: CLR D1 MOV A,BUF1 ; digit 2 display ANL A,#F0H RR A RR A RR A RR A MOV DATA,A SETB D2 DISP3: CLR D2 MOV A,BUF2 ; digit 3 display ANL A,#0FH MOV DATA,A SETB D3 DISP4: CLR D3 MOV A,BUF2 ; digit 4 display ANL A,#F0H RR A RR A RR A RR A MOV DATA,A SETB D4 RET ;----------------------------------------------------------