list p=16f877a
#include<p16f877a.inc>
__CONFIG H'3FF0'
NUM EQU h'21'
ADDON EQU h'22'
ORG h'00'
GOTO START
INIT:
BSF STATUS,5
CLRF TRISB
BCF STATUS,5
CLRF PORTB
MOVLW h'09'
MOVWF NUM ; it loops 9 times when it is zero, end program.
MOVLW h'00'
MOVWF ADDON ; looking the table; first take 1 and 2, 3, ... ,9
BCF STATUS,2
BCF STATUS,0
RETURN
LOOKTABLE:
MOVF NUM,0
ADDWF PCL,1
RETLW h'01'
RETLW h'02'
RETLW h'03'
RETLW h'04'
RETLW h'05'
RETLW h'06'
RETLW h'07'
RETLW h'08'
RETLW h'09'
SEND:
MOVWF PORTB ; to leds
RETURN
START:
CALL INIT
LOOP:
CALL LOOKTABLE
CALL SEND
INCF ADDON,1
MOVLW h'00'
SUBWF NUM,1
BTFSS STATUS,0
GOTO LOOP
END
Try running it with mplabs simulator.
What didn't show. Your program should simulate fine and the error you're seeing should be easy to diagnose.
for me it ends after first run.
Code:LOOP: CALL LOOKTABLE CALL SEND INCF ADDON,1 MOVLW h'00' ;You arent doing anything with this line (-1 maybe) SUBWF NUM,1 ; and this line BTFSS STATUS,0 ;maybe use a BTFSC GOTO LOOP END
MOVLW h'00' ;You arent doing anything with this line (-1 maybe)
SUBWF NUM,1 ; and this line
MOVLW h'01' ;W = 1
SUBWF NUM,1 ;Subtract W(1) from NUM
MOVLW h'00' ;Reset W to 0 (Not Needed)
LOOKTABLE:
MOVF NUM,0
ADDWF PCL,1
RETLW h'01' ;0
RETLW h'02' ;1
RETLW h'03' ;2
RETLW h'04' ;3
RETLW h'05' ;4
RETLW h'06' ;5
RETLW h'07' ;6
RETLW h'08' ;7
RETLW h'09' ;8
SEND:
MOVWF PORTB ;9
RETURN
LOOP:
CALL LOOKTABLE
CALL SEND
INCF ADDON,1
MOVF NUM,W
XORWF ADDON,W
BTFSS STATUS,Z
GOTO LOOP
END
list p=16f877a
#include <p16f877a.inc>
__CONFIG H'3FF0'
NUM EQU h'21'
ADDON EQU h'22'
ORG h'00'
GOTO START
INIT:
BSF STATUS,5
CLRF TRISB
BCF STATUS,5
CLRF PORTB
MOVLW h'09'
MOVWF NUM ; it loops 9 times when it is zero, end program.
MOVLW h'00'
MOVWF ADDON ; looking the table; first take 1 and 2, 3, ... ,9
BCF STATUS,2
BCF STATUS,0
RETURN
LOOKTABLE:
MOVF ADDON,0
ADDWF PCL,1
RETLW h'01'
RETLW h'02'
RETLW h'03'
RETLW h'04'
RETLW h'05'
RETLW h'06'
RETLW h'07'
RETLW h'08'
RETLW h'09'
SEND:
MOVWF PORTB ; to leds
RETURN
START:
CALL INIT
LOOP:
CALL LOOKTABLE
CALL SEND
INCF ADDON,1
DECFSZ NUM,1
GOTO LOOP
END
list p=16f877a
#include <p16f877a.inc>
__CONFIG H'3FF0'
NUM EQU h'21'
ADDON EQU h'22'
ORG h'00'
GOTO START
INIT:
BSF STATUS,5
CLRF TRISB
BCF STATUS,5
CLRF PORTB
MOVLW h'0A'
MOVWF NUM ; it loops 9 times when it is zero, end program.
MOVLW h'00'
MOVWF ADDON ; looking the table; first take 1 and 2, 3, ... ,9
BCF STATUS,2
BCF STATUS,0
RETURN
LOOKTABLE:
MOVF NUM,0
ADDWF PCL,1
NOP
RETLW h'01'
RETLW h'02'
RETLW h'03'
RETLW h'04'
RETLW h'05'
RETLW h'06'
RETLW h'07'
RETLW h'08'
RETLW h'09'
SEND:
MOVWF PORTB ; to leds
RETURN
START:
CALL INIT
LOOP:
CALL LOOKTABLE
CALL SEND
INCF ADDON,1
DECFSZ NUM,1
GOTO LOOP
END
Dear Pepsiiuk,
First of all thanx a lot for your interest..
About the program,
I used "num" reg to count 9 times.. I always decrement it and when it equals 0 I finished the program.. I used "addon" register to add pcl 0 to 9 to reach all values of table.. All my controls are with "num" reg..
* ADDON: 0 1 2 3 4 5 6 7 8 => Take value from table (every time I inc addon to reach one more below line and take the value(retlw)
* NUM: 9 8 7 6 5 4 3 2 1 => for looping 9 times.. I always dec it and test the bit status,0(z).. if it's set, I finish the program(end)
------------------------------------------------------------------------
Yes I know it's a little complicated program and hard to understand, but it's our one of the subject which we have obligation to learn & do (we have final exam after 10 days)
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?