Sie sind auf Seite 1von 7

F:\Prog-pic16F877A\Test prog-datatable4\test_data4.

asm
; LOOKUP TABLE - LIGHTING 24 LEDS IN DIFFERENT PATTERN
;--------------------------------------------------------------;PROGRAMMAR--- SYED TASWAR MAHBUB
;CLOCK SPEED = 20 MHZ
;AFTER SEMICOLON,EVERYTHING IS COMMENT,COMPILER WILL NOT DO ANY ACTION
;---------------------------------------------------------------------------------------TITLE : "24 LED-LIGHT IN PORT B,C,D IN DIFFERENT PATTERN"
LIST P
#INCLUDE
__CONFIG

= PIC16F877A ;COMPILER DIRECTIVE--INDICATING WHICH PIC IN USE


"P16F877A.INC"
H'3F71'
;COMPILER DIRECTIVE--CONFIGURATION BITS

CBLOCK

0X20

;FROM CBLOCK=0X20 GPR CAN BE DECLARED

D1,D2,D3,DCON,CCON ;THESE ARE GPRS DECLARED AND COMPILER WILL


;PLACE THEM SERIALLY IN CBLOCK AUTOMATICALLY.
ENDC
;ENDING CBLOCK DECLARATION

ORG
GOTO

0X00
INIT

;RESET VECTOR.PC WILL START FROM HERE WHENEVER PROG.STARTS.


;PROGRAM COUNTER(PC)WILL GO TO THE LEBEL INIT BYPASSING ALL.

;---------------SUBROUTINE------------------------------------------------------------DELAY
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF

;250 MILLI SEC DELAY WITH 20MH CLOCK.


0X8A
D1
0XBA ;MOVING LITERAL VALUE 0XBA INTO W
D2
;MOVING W INTO D2 COUNTER.SO, D2 VALUE = W VALUE
0X03
D3

DELAY_0
DECFSZ
GOTO
DECFSZ
GOTO
DECFSZ
GOTO
GOTO
GOTO
NOP
RETLW

D1,F ;DECREMENTING D1,AND KEEPING THE VALUE IN D1;IF THE VALUE


$+2 ;IS 0,PC WILL JUMP OTHERWISE PC WILL GOTO NEXT INSTR.
D2,F
$+2
D3,F
DELAY_0
$+1 ;$=PRESINT INSTR.AND $+1 MEANS MOVING 1INSTR.FURTHER
$+1 ;FROM PRESENT INSTRUCTION.
;PC WILL DO NOTHING. WASTE OF 1 INSTRUCTION CYCLE.
0X00 ;RETLW MEANS RETURN FROM SUBROUTINE WITH 0 VALUE IN W

;------------------------------------------------------------------------------TABLE

ADDWF
DT
DT
DT
DT
DT
DT
DT
DT

PCL,F
0X01
0X02
0X04
0X08
0X10
0X20
0X40
0X80

;
;
;
;
;
;
;
;

FOR SETTING PORTB,0/PORTC,0/PORTD,0


FOR SETTING PORTB,1/PORTC,1/PORTD,1
---- DO-----PORTB,2/PORTC,2/PORTD,2
-----DO ----PORTB,3/PORTC,3/PORTD,3
-----DO-----PORTB,4/PORTC,4/PORTD,4
-----DO-----PORTB,5/PORTC,5/PORTD,5
-----DO-----PORTB,6/PORTC,6/PORTD,6
-----DO---- PORTB,7/PORTC,7/PORTD,7

;DT IS A COMPILER DIRECTIVE,WHICH MEANS RETLW INSTRUCTION.


;----------------------------------------------------------------

TABLE_1

ADDWF
DT
DT

PCL,F
0X80 ; -----DO---- PORTB,7/PORTC,7/PORTD,7
0X40 ; -----DO-----PORTB,6/PORTC,6/PORTD,6
1

F:\Prog-pic16F877A\Test prog-datatable4\test_data4.asm
DT
DT
DT
DT
DT
DT

0X20
0X10
0X08
0X04
0X02
0X01

;
;
;
;
;
;

-----DO-----PORTB,5/PORTC,5/PORTD,5
-----DO-----PORTB,4/PORTC,4/PORTD,4
-----DO ----PORTB,3/PORTC,3/PORTD,3
---- DO-----PORTB,2/PORTC,2/PORTD,2
FOR SETTING PORTB,1/PORTC,1/PORTD,1
FOR SETTING PORTB,0/PORTC,0/PORTD,0

;DT IS A COMPILER DIRECTIVE,WHICH MEANS RETLW INSTRUCTION.


;------------------------------------------------------------------TABLE_2

ADDWF
DT
DT
DT
DT

PCL,F
B'10000001'
B'01000010'
B'00100100'
B'00011000'

;DT IS A COMPILER DIRECTIVE,WHICH MEANS RETLW INSTRUCTION.


;-------------------------------------------------------------------TABLE_3

ADDWF
DT
DT
DT
DT

PCL,F
B'00011000'
B'00100100'
B'01000010'
B'10000001'

;DT IS A COMPILER DIRECTIVE,WHICH MEANS RETLW INSTRUCTION.

;--------- MAIN PROGRAM STARTS HERE ----------------------------INIT


BANKSEL TRISB
;MOVING TO BANK1
CLRF
TRISB
;MAKING PORTB AS OUTPUT
CLRF
TRISC
;MAKING PORTC AS OUTPUT
CLRF
TRISD
;MAKING PORTD AS OUTPUT
BANKSEL PORTB
;FALLING BACK TO BANK0
CLRF
PORTB
;CLEARING PORTB,SO PORTB =0
CLRF
PORTC
;CLEARING PORTC,SO PORTC =0
CLRF
PORTD
;CLEARING PORTD,SO PORTD =0

MAIN

LUKO_CURI

KHELA

GAME

KHELA_2

CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
DECFSZ
GOTO
CLRF
NOP

DCON
0X08
CCON
DCON,W ;MOVING DCON COUNTER IN W SO THAT W VALUE IS STORED IN DCON
TABLE
PORTB
;MOVING W IN PORTB AND HENCE DCON VALUE IS SENT TO PORTB
DELAY
;DELAY IS CALLED SO THAT EYE CAN DETECT THE DISPLAY
DCON
;DCON IS INCREMENTED,SO INCREMENTED VALUE IS SHOWN IN PORTB
CCON,F
LUKO_CURI
PORTB

CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
DECFSZ
GOTO
CLRF
NOP
CLRF

DCON
0X08
CCON
DCON,W
TABLE
PORTC
DELAY
DCON
CCON,F
GAME
PORTC

;MAKING DCON = 0
;MOVING 0X08 VALUE IN W
;MOVING W INTO CCON.SO,CCON VALUE NOW = W VALUE
;MOVING DCON IN W,SO DCON VALUE WILL EQUAL TO W VALUE
;PLACING W IN PORTC.SO,PORTC
;DELAY IS CALLED SO THAT EYE
;DCON IS INCREMENTED SO THAT
;CCON COUNTER IS DECREMENTED

DCON
2

WILL DISPLAY DCON VALUE


CAN SEE THE DISPLAY
INCREMENTED VALUE CAN BE SHOWN
AND PC WILL JUMP IF CCON BECOMES 0

F:\Prog-pic16F877A\Test prog-datatable4\test_data4.asm

GAME_2

MAIN_2

AGAIN

PLAY

REPEAT

PLAY_2

REPEAT_2

MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
DECFSZ
GOTO
CLRF
CALL

0X08
CCON
DCON,W ;DCON IS PUT IN W,SO THAT DCON VALUE WILL EQUAL TO W VALUE
TABLE
PORTD ;W IS MOVED TO PORTD,SO PORTD WILL DISPLAY DCON VALUE
DELAY
DCON
;DCON IS INCREMENTED,SO,INCREMENTED VALUE WILL BE SHOWN IN PORTD
CCON,F
GAME_2
PORTD
DELAY

CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
DECFSZ
GOTO
CLRF
NOP

DCON
0X08
CCON
DCON,W
TABLE_1
PORTD
DELAY
DCON
CCON,F
AGAIN
PORTD

CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
DECFSZ
GOTO
CLRF
NOP
CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
DECFSZ
GOTO
CLRF
CALL

DCON
0X08
CCON
DCON,W
TABLE_1
PORTC
DELAY
DCON
CCON,F
REPEAT
PORTC
DCON
0X08
CCON
DCON,W
TABLE_1
PORTB
DELAY
DCON
CCON,F
REPEAT_2
PORTB
DELAY

;-------- NEW LED LIGHTING ------------------------------------------SHURU

CHAKKAR

SHURU_2

CHAKKAR_2

CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
NOP
INCF
DECFSZ
GOTO
CLRF
NOP

DCON
0X04
CCON
DCON,W
TABLE
PORTB
DELAY
DCON,F

CLRF
MOVLW
MOVWF
MOVF

DCON
0X04
CCON
DCON,W

DCON,F
CCON,F
CHAKKAR
PORTB

F:\Prog-pic16F877A\Test prog-datatable4\test_data4.asm

SHURU_3

CHAKKAR_3

ABAR_SURU

TAKKAR

SURU_SURU

TAKKAR_2

SURU_4

TAKKAR_3

CALL
MOVWF
CALL
INCF
NOP
INCF
DECFSZ
GOTO
CLRF
NOP

TABLE
PORTC
DELAY
DCON,F

CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
NOP
INCF
DECFSZ
GOTO
CLRF
CALL

DCON
0X04
CCON
DCON,W
TABLE
PORTD
DELAY
DCON,F

CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
NOP
INCF
DECFSZ
GOTO
CLRF
NOP

DCON
0X04
CCON
DCON,W
TABLE_1
PORTD
DELAY
DCON,F

CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
NOP
INCF
DECFSZ
GOTO
CLRF
NOP

DCON
0X04
CCON
DCON,W
TABLE_1
PORTC
DELAY
DCON,F

CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
NOP
INCF
DECFSZ
GOTO
CLRF
NOP

DCON
0X04
CCON
DCON,W
TABLE_1
PORTB
DELAY
DCON,F

DCON,F
CCON,F
CHAKKAR_2
PORTC

DCON,F
CCON,F
CHAKKAR_3
PORTD
DELAY

DCON,F
CCON,F
TAKKAR
PORTD

DCON,F
CCON,F
TAKKAR_2
PORTC

DCON,F
CCON,F
TAKKAR_3
PORTB
4

F:\Prog-pic16F877A\Test prog-datatable4\test_data4.asm
CALL

DELAY

;--------------------------------------------------------------------NUTON

MELA

MELA_2

KHELA_5

MELA_5

CHAKKAR_8

NEW_NEW

CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
NOP
INCF
NOP
INCF
DECFSZ
GOTO
CLRF
NOP

DCON
0X03
CCON
DCON,W
TABLE
PORTB
DELAY
DCON,F

CLRF
MOVLW
MOVWF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
NOP
INCF
NOP
INCF
DECFSZ
GOTO
CLRF
NOP

DCON
0X01
DCON
0X03
CCON
DCON,W
TABLE
PORTC
DELAY
DCON,F

CLRF
MOVLW
MOVWF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
NOP
INCF
NOP
INCF
DECFSZ
GOTO
NOP
CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
CLRF
CALL

DCON
0X02
DCON
0X02
CCON
DCON,W
TABLE
PORTD
DELAY
DCON,F

CLRF
MOVLW

DCON
0X03

DCON,F
DCON,F
CCON,F
MELA
PORTB

DCON,F
DCON,F
CCON,F
KHELA_5
PORTC

DCON,F
DCON,F
CCON,F
CHAKKAR_8
DCON
0X07
DCON
DCON,W
TABLE
PORTD
DELAY
PORTD
DELAY

F:\Prog-pic16F877A\Test prog-datatable4\test_data4.asm

MELA_7

MELA_8

KHELA_7

MELA_9

CHAKKAR_7

MOVWF
MOVF
CALL
MOVWF
CALL
INCF
NOP
INCF
NOP
INCF
DECFSZ
GOTO
CLRF
NOP

CCON
DCON,W
TABLE_1
PORTD
DELAY
DCON,F

CLRF
MOVLW
MOVWF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
NOP
INCF
NOP
INCF
DECFSZ
GOTO
CLRF
NOP

DCON
0X01
DCON
0X03
CCON
DCON,W
TABLE_1
PORTC
DELAY
DCON,F

CLRF
MOVLW
MOVWF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
INCF
NOP
INCF
NOP
INCF
DECFSZ
GOTO
NOP
CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
CALL
CLRF
CALL

DCON
0X02
DCON
0X02
CCON
DCON,W
TABLE_1
PORTB
DELAY
DCON,F

DCON,F
DCON,F
CCON,F
MELA_7
PORTD

DCON,F
DCON,F
CCON,F
KHELA_7
PORTC

DCON,F
DCON,F
CCON,F
CHAKKAR_7
DCON
0X07
DCON
DCON,W
TABLE_1
PORTB
DELAY
PORTB
DELAY

;-----------------------------------------------------------------------TOKAI

KANAMASI

CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
NOP
MOVF

DCON
0X08
CCON
DCON,W
TABLE
PORTB
DCON,W
6

F:\Prog-pic16F877A\Test prog-datatable4\test_data4.asm
CALL
TABLE_1
MOVWF
PORTD
CALL
DELAY
INCF
DCON,F
DECFSZ CCON,F
GOTO
KANAMASI
CLRF
PORTB
NOP
CLRF
PORTD
;-------------------------------------------------------------------------TAMASHA
CLRF
DCON ;MAKING DCON VALUE = 0
MOVLW
0X04 ;MOVING VALUE OF 0X04 TO W
MOVWF
CCON ;MOVING W TO CCON.SO,CCON VALUE IS 0X04
STAY_1
MOVF
DCON,W ;MOVING DCON TO W,SO DCON VALUE WILL BE W VALUE
CALL
TABLE_2;BRINGING REQUIRED VALUE FROM TABLE_2 THROUGH W
MOVWF
PORTC ;MOVING W TO PORTC.SO,W VALUE=DCON VALUE WILL DISPLAY IN PORTC
NOP
;DOING NOTHING
CALL
DELAY ;DELAY IS CALLED SO THAT EYE CAN SEE THE DISPLAY
INCF
DCON,F ;INCREMENTING DCON VALUE,SO THAT IT WILL DISPLAY IN PORTC
DECFSZ CCON,F
GOTO
STAY_1
CLRF
PORTC
NOP

;---------------------------------------------------------------------------------------ULTA

STAY_2

CLRF
CLRF
MOVLW
MOVWF
MOVF
CALL
MOVWF
NOP
CALL
INCF
DECFSZ
GOTO
CLRF
NOP

DCON
CCON
0X04
CCON
DCON,W ;MOVING DCON TO W SO THAT DCON VALUE IS SHOWN
TABLE_3 ;CALLING THE VALUE FROM TABLE_3 BY ADDING W WITH PCL IN TABLE_3
PORTC
;SHOWING THAT VALUE IN PORTC
DELAY
DCON,F
CCON,F
STAY_2
PORTC

;INCREMENTIN THE VALUE OF DCON


;DECREMENTING CCON,AND PC WILL JUMP IF CCON VALUE = 0,OTHERWISE
;GOTO STAY_2
;CLEARING PORTC
;DOING NOTHING,WASTE OF 1INSTR.CYCLE

;----------------------------------------------------------------------------PALTA

CLRF
DCON ;MAKING DCON 0
MOVWF
DCON
MOVLW
0X08
MOVWF
CCON
ULTA_2
MOVF
DCON,W
CALL
TABLE_1
MOVWF
PORTB
NOP
;DOING NOTHING
MOVF
DCON,W
CALL
TABLE
MOVWF
PORTD
CALL
DELAY
INCF
DCON,F
DECFSZ CCON,F
GOTO
ULTA_2
CLRF
PORTB
NOP
CLRF
PORTD
NOP
CALL
DELAY
GOTO
MAIN ;GOING BACK TO MAIN TO REPEAT THE PROGRAM
END
;END OF THE PROGRAM.BEYOND THIS,PC WILL NOT SEE ANYTHING.
;----------------------------------------------------------------------------------

Das könnte Ihnen auch gefallen