;SENIOR DESIGN CHRIS ANNIS ;TIMER INTERRUPT AND EXTERNAL INTRRUPT ;COUNTS NUMBER OF EXTERNAL INTERRUPTS ;AND DISPLAYS THE COUNT EVERY SECOND .EQU COUNT,00H .EQU PASS,01H .EQU SPEED,02H MOV SPEED,#00H SJMP BEGIN .ORG 0003H ;EX0,INTERRUPT SUBROUTINE LOCATION LJMP INTCOU ;ACTUAL SUBROUTINE FOLLOWS MAIN SECTION ; .ORG 000BH ;TF0 INTERRUPT SUBROUTINE LOCATION ; LJMP INTSPE ;ACTUAL SUBROUTINEFOLLOWS MAIN SECTION BEGIN: ;MAIN SECTION ;INITIALIZE PASS VALUE MOV PASS,#14H ;20 PASSES PER SECOND MOV COUNT,#00H ;INITIALIZE COUNT MOV TMOD,#01H ;SETUP TIMER0, MODE1 MOV TL0,#5AH ;INITIALIZE TIMER0 FOR 5OMSEC DELAY MOV TH0,#0CBH SETB TR0 ;START TIMER0 MOV IE,#83H ;ENABLE EXTERNAL INTERRUPT 0 ;ENABLE TIMER 0 INTERRUPT ;-------FOREGROUND OPERATION ;-------CONTINUOUSLY OUTPUT SPEED TO PORT1 AGIN: MOV P1,SPEED SJMP AGIN ;-------INTERRUPT SUBROUTINE ;-------(20 PASSES) ;------TIMER INTERRUPT ;INTSPE: ; DJNZ PASS,IFIN ;EXIT IF 1 SEC NOT PASSED ; MOV IE,#82H ;DISABLES EXTERNAL INTERRUPT ; MOV PASS,#14H ;RELOAD PASS VALUE ; MOV A,SPEED ; ;MOV SPEED,A ; INC SPEED ; MOV P1,SPEED ; ;MOV COUNT,#00H ;IFIN: MOV TL0,#5AH ;REINIT TIMER ; MOV TH0,#0CBH ; MOV IE,#83H ; RETI ;------EXTERNAL INTERRUPT------- INTCOU: MOV IE,#81H ;DISABLES TIMER INTERRUPT MOV A,COUNT ADD A,#01H ;ADDS 1 TO THE COUNT MOV COUNT,A MOV IE,#83H RETI .END