PLEASE CHECK MY PROGRAM COUNTER

Discussion about projects that used PIC Microcontroller, Hardware Interface, Programming Algorithm and etc......

PLEASE CHECK MY PROGRAM COUNTER

Postby mohdismiaswaly » Sat Oct 05, 2013 11:46 pm

Hello,

I have spent hours to check why my code below cannot show Number 3 in my seven segment display.

I have 3 sensors (all OK, receive logic 1 and logic 0 output) and connect them to PIC). I can get output shows Number 0, 1 and 2 to the seven segment except Number 3.

It has something to do with counter. Your help is highly appreciated. :cry:

UP MOVLW h'00'
MOVWF COUNTER,0 ;CLEAR COUNTER ZONE A

BTFSS PORTC,1 ;CHECK SENSOR 1
BRA SENSOR2
INCF COUNTER,1,0

SENSOR2 BTFSS PORTC,2 ;CHECK SENSOR 2
BRA SENSOR3
INCF COUNTER,1,0

SENSOR3 BTFSS PORTC,3 ;CHECK SENSOR 3
BRA DECISION
INCF COUNTER,1,0
BRA DECISION
mohdismiaswaly
Apprentice
 
Posts: 39
Joined: Mon Nov 05, 2012 2:51 pm

Re: PLEASE CHECK MY PROGRAM COUNTER

Postby ABSF » Sun Oct 06, 2013 8:47 am

Which PIC are you using and could you also post the schematics on how your 7 seg led is connected?
The next war will determine NOT who is right BUT what is left.
User avatar
ABSF
Professional
 
Posts: 810
Joined: Wed Nov 10, 2010 9:32 am
Location: E Malaysia

Re: PLEASE CHECK MY PROGRAM COUNTER

Postby mohdismiaswaly » Sun Oct 06, 2013 5:01 pm

I use PIC18F4580.

I don't have the schematic, I use common anode 7segment display. That one is OK no problem. I program it to test all segments light up, and it is OK.

Now the problem is the counter. I connect 3 sensor to PIC and I want the counter to count if the sensor is logic high, then the counter will count 1. So the maximum count should be 3 since there are 3 sensors.
mohdismiaswaly
Apprentice
 
Posts: 39
Joined: Mon Nov 05, 2012 2:51 pm

Re: PLEASE CHECK MY PROGRAM COUNTER

Postby ABSF » Mon Oct 07, 2013 9:16 am

CODE: SELECT_ALL_CODE
UP    MOVLW   h'00'
  MOVWF   COUNTER,0    ;CLEAR COUNTER ZONE A

  BTFSS   PORTC,1    ;CHECK SENSOR 1
  BRA SENSOR2
  INCF    COUNTER,1,0   

SENSOR2    BTFSS PORTC,2    ;CHECK SENSOR 2
  BRA SENSOR3
  INCF COUNTER,1,0

SENSOR3    BTFSS PORTC,3    ;CHECK SENSOR 3
  BRA DECISION
  INCF COUNTER,1,0
  BRA    DECISION


1. When 3 sensors are active what did you see on the display.
2. Show us the codes on "DECISION". What did you do there? Did you store the value of "COUNTER" before coming back to scan the sensors again?

Allen
The next war will determine NOT who is right BUT what is left.
User avatar
ABSF
Professional
 
Posts: 810
Joined: Wed Nov 10, 2010 9:32 am
Location: E Malaysia

Re: PLEASE CHECK MY PROGRAM COUNTER

Postby mohdismiaswaly » Tue Oct 08, 2013 7:18 pm

OK THE ABOVE PROBLEM NOW SETTLE.


Now I have different problem.


I have only 1 sensor. The sensor is producing digital output (0 and 1). What I want is when the PIC get 0 from sensor, it will count 1, if PIC get 1 from sensor, it will keep counter to 1 as before. So every time PIC get zero, the number is incrementing to 2,3,4,5,6 and so on. I use 7 segment display (common anode).

Below is my code, I have tried many times. Initially the display shows 0, once the sensor give 0 to PIC the display shows 8. It should show 1. I am using PIC18F4580. I have configured the bits correctly with PBADEN set to OFF and set the input to be digital in PIC by configuring ADCON1<00001111>

PLEASE SOMEONE. CANNOT THINK ANYMORE :?
CODE: SELECT_ALL_CODE
;-------------------------------------------------------------------------------------------------------------------------------------------------
Main:

      BSF      STATUS,5                    ;SWITCH TO BANK1; BIT 5 OF STATUS REGISTER IS SET TO 1
      BSF      TRISE,0               ;SENSOR ENTER
      MOVLW   B'00000000'
      MOVWF   TRISC               ;7 SEGMENT FOR HOVERING CAR
      
      BCF      STATUS,5                    ;SWITCH TO BANK0; BIT 5 OF STATUS REGISTER IS SET TO 0
      MOVLW   B'00001111'
      MOVWF   ADCON1,0

      MOVLW   h'00'
      MOVWF   COUNTER_B,0            ;CLEAR COUNTER CAR ENTER

      
;----------------------------------------------------------------------------------------------------
      
         
SENSOR_ENT   BTFSC   PORTE,0               ;CHECK SENSOR ENTER   
         BRA      DOWN
         INCF      COUNTER_B,1
         TSTFSZ   COUNTER_B,0
         BRA      SATU
         BRA      DOWN

;------------------------------------------------------------------------------------------------
DOWN      MOVFF   COUNTER_B,TESTER_B         
         MOVLW   D'0'
         TSTFSZ   TESTER_B,0
SIFAR      BRA      SATU
         BZ      NUMBER0
         


SATU              MOVFF   COUNTER_B,TESTER_B
         MOVLW   D'1'
         SUBWF   TESTER_B,0,0
         BZ      NUMBER1
         BRA      DUA
   

DUA         MOVFF   COUNTER_B,TESTER_B
         MOVLW   D'2'
         SUBWF   TESTER_B,0,0
         BZ      NUMBER2
         BRA      TIGA


TIGA              MOVFF   COUNTER_B,TESTER_B
         MOVLW   D'3'
         SUBWF   TESTER_B,0,0
         BZ      NUMBER3
         BRA      EMPAT

EMPAT      MOVFF   COUNTER_B,TESTER_B
         MOVLW   D'4'
         SUBWF   TESTER_B,0,0
         BZ      NUMBER4
         BRA      LIMA

LIMA              MOVFF   COUNTER_B,TESTER_B
         MOVLW   D'5'
         SUBWF   TESTER_B,0,0
         BZ      NUMBER5
         BRA   ENAM

ENAM      MOVFF   COUNTER_B,TESTER_B   
         MOVLW   D'6'
         SUBWF   TESTER_B,0,0
         BZ      NUMBER6
         BRA      TUJUH

TUJUH      MOVFF   COUNTER_B,TESTER_B
         MOVLW   D'7'
         SUBWF   TESTER_B,0,0
         BZ      NUMBER7
         BRA      LAPAN

LAPAN      MOVFF   COUNTER_B,TESTER_B   
         MOVLW   D'8'
         SUBWF   TESTER_B,0,0
         BZ      NUMBER8
         BRA      SENSOR_ENT

;-------------------------------------------------------------------------------------------   
NUMBER0      MOVLW B'11000000'
         MOVWF   PORTC,0
         CALL   DELAY
         BRA      SENSOR_ENT   

NUMBER1      MOVLW B'11111001'
         MOVWF   PORTC,0
         CALL   DELAY
         BRA      SENSOR_ENT

NUMBER2      MOVLW B'10100100'
         MOVWF   PORTC,0
         CALL   DELAY
         BRA      SENSOR_ENT   

NUMBER3      MOVLW B'10110000'
         MOVWF   PORTC,0
         CALL   DELAY
         BRA      SENSOR_ENT

NUMBER4      MOVLW B'10011001'
         MOVWF   PORTC,0
         CALL   DELAY
         BRA      SENSOR_ENT

NUMBER5      MOVLW B'10010010'
         MOVWF   PORTC,0
         CALL   DELAY
         BRA      SENSOR_ENT   

NUMBER6      MOVLW B'10000010'
         MOVWF   PORTC,0
         CALL   DELAY
         BRA      SENSOR_ENT

NUMBER7      MOVLW B'11111000'
         MOVWF   PORTC,0
         CALL   DELAY
         BRA      SENSOR_ENT

NUMBER8      MOVLW B'10000000'
         MOVWF   PORTC,0
         CALL   DELAY
         GOTO   SENSOR_ENT
;========================================================================================
; DELAY SUBROUTINE
;========================================================================================

DELAY      MOVLW   D'10'         
         MOVWF   D3                     
         MOVLW   D'10'         
         MOVWF   D2         
         MOVLW   D'10'         
         MOVWF   D1         
LINE1      DECFSZ   D1            ;DECREASE THE VALUE OF D1 AND SKIP THE NEXT LINE WHEN IT REACH ZERO
         GOTO   LINE1         ;IF NOT ZERO, IT WILL LEAD THE PROGRAM TO 1 LINE ABOVE
LINE2      DECFSZ   D2            ;DECREASE THE VALUE OF D2 AND SKIP THE NEXT LINE WHEN IT REACH ZERO
         GOTO   LINE2         ;IF NOT ZERO, IT WILL LEAD THE PROGRAM TO 5 LINE ABOVE
LINE3      DECFSZ   D3            ;DECREASE THE VALUE OF D3 AND SKIP THE NEST LINE WHEN IT REACH ZERO
         GOTO   LINE3         ;IF NOT ZERO, IT WILL LEAD THE PROGRAM TO 9 LINE ABOVE
         RETURN               ;RETURN FROM SUBROUTINE


                  END                     ; directive 'end of program'
mohdismiaswaly
Apprentice
 
Posts: 39
Joined: Mon Nov 05, 2012 2:51 pm

Re: PLEASE CHECK MY PROGRAM COUNTER

Postby robosang » Thu Oct 10, 2013 3:14 pm

Waiting.....
robosang
Expert
 
Posts: 1239
Joined: Wed Jun 10, 2009 5:37 pm

Re: PLEASE CHECK MY PROGRAM COUNTER

Postby mohdismiaswaly » Fri Oct 11, 2013 9:02 pm

Anyone?
mohdismiaswaly
Apprentice
 
Posts: 39
Joined: Mon Nov 05, 2012 2:51 pm

Re: PLEASE CHECK MY PROGRAM COUNTER

Postby Loki000 » Sat Dec 20, 2014 1:32 pm

UP MOVLW h'00'
MOVWF COUNTER,0 ;CLEAR COUNTER ZONE A

BTFSS PORTC,1 ;CHECK SENSOR 1
BRA SENSOR2
INCF COUNTER,1,0

SENSOR2 BTFSS PORTC,2 ;CHECK SENSOR 2
BRA SENSOR3
INCF COUNTER,1,0

SENSOR3 BTFSS PORTC,3 ;CHECK SENSOR 3
BRA DECISION
INCF COUNTER,1,0
BRA DECISION
Loki000
Fledgling
 
Posts: 1
Joined: Sat Dec 20, 2014 1:31 pm


Return to PIC Microcontroller

Who is online

Users browsing this forum: No registered users and 6 guests

cron