Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;
- ; MPASM template supplied by BILBOROUGH COLLEGE 28228
- ;NAME ...................................................ENTER YOUR NAME AND PROJECT TITLE HERE
- ;PROGRAM TITLE ...................................................
- ; Version 2 board settings: J14 links: Digital
- ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
- ;
- ; The following lines embed configuration data into the PICmicro
- LIST P=16F88
- __CONFIG H'2007', H'3F7A' ; RC mode
- __CONFIG H'2008', H'3FFC' ; Clock Fail-Safe disabled
- ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- #DEFINE PAGE0 BCF STATUS,5
- #DEFINE PAGE1 BSF STATUS,5
- OPSHUN EQU H'81' ;
- STATUS EQU H'03' ;defines status register
- TRISA EQU H'5' ;defines trisA register
- PORTA EQU H'05' ;defines portA register
- TRISB EQU H'6' ;defines TrisB register
- PORTB EQU H'06' ;defines portB register
- PCL EQU H'02' ;Names the register called program counter
- W EQU 0 ;Sets up the name used for the working register
- F EQU 1 ;Sets up the name used for file
- Z EQU 2 ;Sets up the name used for the zero flag
- C EQU 0 ;Sets up the name used for the carry flag
- ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- ; NAME YOUR REGISTERS HERE
- timer EQU H'0C' ;names the register called ????????
- line1 EQU H'0D' ;names the register called ????????
- line2 EQU H'0E' ;names the register called ???????? DELETE THIS SECTION IF NOT USING REGISTERS
- line3 EQU H'0F' ;names the register called ????????
- dam EQU H'10' ;names the register called ????????
- delayf EQU H'11' ;names the register called ????????
- ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- ; VECTORS
- ORG 00 ; Reset vector
- GOTO XYZ ; Goto start of program
- ORG 04 ; Interrupt vector address
- GOTO 05 ; Goto start of program
- ORG 05 ; Start of program memory
- ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- ; THIS SECTION IS USED TO SET THE DIRECTION OF THE OUTPUT PORTS.
- ;ENTER the binary number for the Data Direction in the TRIS registers.
- ;Use 0 if you would like an output or 1 if you would like an input.
- XYZ BSF STATUS,5 ;Bank 1 operation
- CLRF H'1B' ;Makes the ANSEL (analogue) inputs digital
- MOVLW B'00011111';
- MOVWF TRISA ;This sets portA data direction to #######
- MOVLW B'00000000' ;
- MOVWF TRISB ;This sets portB data direction to #######
- BCF STATUS,5 ;Back to bank 0
- ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- ; MAIN PROGRAM
- start CLRF PORTA
- CLRF PORTB
- CLRF STATUS
- CLRF timer
- CLRF line1
- CLRF line2
- CLRF line3
- CLRF dam
- CLRF delayf
- CALL input1
- CALL a8sub
- CALL a1sub5
- ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- ; SUBROUTINES
- ; Any subroutines to go in this section.
- input1 BTFSC PORTA,0
- GOTO wait0
- BTFSC PORTA,1
- GOTO wait1
- BTFSC PORTA,2
- GOTO wait2
- BTFSC PORTA,3
- GOTO wait3
- BTFSC PORTA,4
- GOTO wait4
- GOTO input1
- wait0 BTFSC PORTA,0
- GOTO wait0
- RETURN
- wait1 BTFSC PORTA,1
- GOTO wait1
- GOTO add1
- wait2 BTFSC PORTA,2
- GOTO wait2
- GOTO add2
- wait3 BTFSC PORTA,3
- GOTO wait3
- GOTO add4
- wait4 BTFSC PORTA,4
- GOTO wait4
- GOTO add8
- add1 MOVLW B'00000001'
- ADDWF timer,F
- GOTO input1
- add2 MOVLW B'00000011'
- ADDWF timer,F
- GOTO input1
- add4 MOVLW B'00000110'
- ADDWF timer,F
- GOTO input1
- add8 MOVLW B'00011101'
- ADDWF timer,F
- GOTO input1
- a1sub MOVLW B'00000110'
- ADDWF timer,F
- CLRF STATUS
- MOVLW B'00000001'
- SUBWF timer,F
- BTFSC STATUS,0
- RETURN
- INCF line1,F
- GOTO a1sub
- a4sub MOVLW B'00011101'
- ADDWF timer,F
- CLRF STATUS
- MOVLW B'00000110'
- SUBWF timer,F
- BTFSC STATUS,0
- GOTO a1sub
- INCF line2,F
- GOTO a4sub
- a8sub MOVLW B'00011101'
- SUBWF timer,F
- BTFSC STATUS,0
- GOTO a4sub
- INCF line3,F
- GOTO a8sub
- a1sub5 CLRF STATUS
- MOVLW B'00000101'
- SUBWF line3,F
- BTFSC STATUS,0
- GOTO a1sub4
- GOTO a5dlay5
- a5dlay5 CALL a5lght5
- CALL a5del
- CALL a5lght4
- CALL a5del
- CALL a5lght3
- CALL a5del
- CALL a5lght2
- CALL a5del
- CALL 5lght1
- CALL a5del
- GOTO a2sub4
- a1sub4 MOVLW B'00000101'
- ADDWF line3,F
- CLRF STATUS
- MOVLW B'00000100'
- SUBWF line3,F
- BTFSC STATUS,0
- GOTO a1sub3
- GOTO a5dlay4
- a5dlay4 CALL a5lght4
- CALL a5del
- CALL a5lght3
- CALL a5del
- CALL a5lght2
- CALL a5del
- CALL a5lght1
- CALL a5del
- GOTO a2sub4
- a1sub3 MOVLW B'00000100'
- ADDWF line3,F
- CLRF STATUS
- MOVLW B'00000011'
- SUBWF line3,F
- BTFSC STATUS,0
- GOTO a1sub2
- GOTO a5dlay3
- a5dlay3 CALL a5lght3
- CALL a5del
- CALL a5lght2
- CALL a5del
- CALL a5lght1
- CALL a5del
- GOTO a2sub4
- a1sub2 MOVLW B'00000011'
- ADDWF line3,F
- CLRF STATUS
- MOVLW B'00000010'
- SUBWF line3,F
- BTFSC STATUS,0
- GOTO a1sub1
- GOTO a5dlay2
- a5dlay2 CALL a5lght2
- CALL a5del
- CALL a5lght1
- CALL a5del
- GOTO a2sub4
- a1sub1 MOVLW B'00000010'
- ADDWF line3,F
- CLRF STATUS
- MOVLW B'00000001'
- SUBWF line3,F
- BTFSC STATUS,0
- GOTO a2sub4
- GOTO a5dlay1
- a5dlay1 CALL a5lght1
- CALL a5del
- GOTO a2sub4
- a5lght5 MOVLW B'01111111'
- MOVWF PORTB
- RETURN
- a5lght4 MOVLW B'01111110'
- MOVWF PORTB
- RETURN
- a5lght3 MOVLW B'01111100'
- MOVWF PORTB
- RETURN
- a5lght2 MOVLW B'01111000'
- MOVWF PORTB
- RETURN
- a5lght1 MOVLW B'01110000'
- MOVWF PORTB
- RETURN
- a2sub4 CLRF STATUS
- MOVLW B'00000100'
- SUBWF line2,F
- BTFSC STATUS,0
- GOTO a2sub3
- GOTO a1dlay4
- a1dlay4 CALL a4lght4
- CALL a1del
- CALL a4lght3
- CALL a1del
- CALL a4lght2
- CALL a1del
- CALL a4lght1
- CALL a1del
- GOTO a3sub5
- a2sub3 MOVLW B'00000100'
- ADDWF line2,F
- CLRF STATUS
- MOVLW B'00000011'
- SUBWF line2,F
- BTFSC STATUS,0
- GOTO a2sub2
- GOTO a1dlay3
- a1dlay3CALL a4lght3
- CALL a1del
- CALL a4lght2
- CALL a1del
- CALL a4lght1
- CALL a1del
- GOTO a3sub5
- a2sub2 MOVLW B'00000011'
- ADDWF line2,F
- CLRF STATUS
- MOVLW B'00000010'
- SUBWF line2,F
- BTFSC STATUS,0
- GOTO a2sub1
- GOTO a1dlay2
- a1dlay2 CALL a4lght2
- CALL a1del
- CALL a4lght1
- CALL a1del
- GOTO a3sub5
- a2sub1 MOVLW B'00000010'
- ADDWF line2,F
- CLRF STATUS
- MOVLW B'00000001'
- SUBWF line2,F
- BTFSC STATUS,0
- GOTO a3sub5
- GOTO a1dlay1
- a1dlay1 CALL a4lght1
- CALL a1del
- GOTO a3sub5
- a4lght4 MOVLW B'10111110'
- MOVWF PORTB
- RETURN
- a4lght3 MOVLW B'10111100'
- MOVWF PORTB
- RETURN
- a4lght2 MOVLW B'10111000'
- MOVWF PORTB
- RETURN
- a4lght1 MOVLW B'10110000'
- MOVWF PORTB
- RETURN
- a3sub5 CLRF STATUS
- MOVLW B'00000101'
- SUBWF line1,F
- BTFSC STATUS,0
- GOTO a3sub4
- GOTO mdelay5
- mdelay5 CALL a3lght5
- CALL a10del
- CALL a3lght4
- CALL a10del
- CALL a3lght3
- CALL a10del
- CALL a3lght2
- CALL a10del
- CALL a3lght1
- CALL a10del
- GOTO tend
- a3sub4 MOVLW B'00000101'
- ADDWF line1,F
- CLRF STATUS
- MOVLW B'00000100'
- SUBWF line1,F
- BTFSC STATUS,0
- GOTO a3sub3
- GOTO mdelay4
- mdelay4 CALL a3lght4
- CALL a10del
- CALL a3lght3
- CALL a10del
- CALL a3lght2
- CALL a10del
- CALL a3lght1
- CALL a10del
- GOTO tend
- a3sub3 MOVLW B'00000100'
- ADDWF line1,F
- CLRF STATUS
- MOVLW B'00000011'
- SUBWF line1,F
- BTFSC STATUS,0
- GOTO a3sub2
- GOTO mdelay3
- mdelay3 CALL a3lght3
- CALL a10del
- CALL a3lght2
- CALL a10del
- CALL a3lght1
- CALL a10del
- GOTO tend
- a3sub2 MOVLW B'00000011'
- ADDWF line1,F
- CLRF STATUS
- MOVLW B'00000010'
- SUBWF line1,F
- BTFSC STATUS,0
- GOTO mdelay1
- GOTO mdelay2
- mdelay2 CALL a3lght2
- CALL a10del
- CALL a3lght1
- CALL a10del
- GOTO tend
- a3sub1 MOVLW B'00000010'
- ADDWF line1,F
- CLRF STATUS
- MOVLW B'00000001'
- SUBWF line1,F
- BTFSC STATUS,0
- GOTO tend
- GOTO a5dlay1
- mdelay1 CALL a3lght1
- CALL a10del
- GOTO tend
- a3lght5 MOVLW B'11011111'
- MOVWF PORTB
- RETURN
- a3lght4 MOVLW B'11011110'
- MOVWF PORTB
- RETURN
- a3lght3 MOVLW B'11011100'
- MOVWF PORTB
- RETURN
- a3lght2 MOVLW B'11011000'
- MOVWF PORTB
- RETURN
- a3lght1 MOVLW B'11010000'
- MOVWF PORTB
- RETURN
- a5del MOVLW B'00011110'
- MOVWF dam
- DECF dam
- CALL acdel
- RETURN
- a1del MOVLW B'00000110'
- MOVWF dam
- DECF dam
- CALL acdel
- RETURN
- a10del MOVLW B'00000001'
- MOVWF dam
- DECF dam
- CALL acdel
- RETURN
- acdel MOVLW B'11111111'
- MOVWF delayf
- acdel2 DECFSZ delayf,F
- GOTO acdel2
- DECFSZ dam,F
- RETURN
- tend CALL flash
- CALL flash
- CALL flash
- CALL flash
- CALL flash
- GOTO start
- flash MOVLW B'00011111'
- MOVWF PORTB
- MOVLW B'11111111'
- MOVWF PORTB
- MOVLW B'00011111'
- MOVWF PORTB
- MOVLW B'11111111'
- MOVWF PORTB
- MOVLW B'00011111'
- MOVWF PORTB
- MOVLW B'11111111'
- MOVWF PORTB
- MOVLW B'00011111'
- MOVWF PORTB
- MOVLW B'11111111'
- MOVWF PORTB
- RETURN
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement