;Senior Design .EQU COUNT,00H .EQU DELAY,10H .EQU SPEED,20H MOV TMOD,#01H ;TIMER 0, MODE 1 MOV COUNT,#00 ;CLEAR COUNT VALUE MOV SPEED,#00 ;CLEAR SPEED VALUE MOV DELAY,#05H ;.22SEC DELAY FIVE TIMES BEGIN: MOV TL0,#00H ;INITIALIZE TIMER 0 MOV TH0,#00H ;FOR 1 SECOND DELAY SETB TR0 ;STARTS TIMER MOV A,P3.2 ;READS PORT PIN 3.2 FOR INPUT JNZ ADDONE ;IF PIN IS "HI" JUMP TO ADDONE PAUSE: JNB TF0,PAUSE CLR TFO CLR TR0 DJNZ DELAY,BEGIN ;JUMP TO BEGIN UNTIL DELAY IS ZERO SJMP DISPLAY ;JUMP TO DISPLAY WHEN 1 SECOND IS DONE ADDONE: MOV A,COUNT ;MOVES COUNT INTO THE ACC ADD A,#01H ;ADDS 1 TO THE COUNT DA A ;DECIMAL ADJUST MOV COUNT,A ;STORES THE VALUE IN COUNT RETI ;RETURN DISPLAY: MOV A,COUNT ;MOVES COUNT INTO THE ACC ;TO DIVIDE BY 2.2 FOR THE SPEED I JUST ;DIVIDE BY 22 AND THEN MULTIPLY BY 10 MOV B,#16H ;PLACES 16h (22d) IN B DIV AB ;DIVIDES THE COUNT BY 22 MOV B,#0AH ;PLACES 0Ah (10d) IN B MUL AB ;MULTIPLIES BY 10 MOV SPEED,A ;STORES THE SPEED MOV P1,SPEED ;OUTPUTS THE SPEED TO PORT 1 MOV COUNT,#00H ;RESETS THE COUNT TO ZERO MOV DELAY,#05H ;RESETS THE TIMER SJMP BEGIN .END