Searching \ for 'Re; reading pusbuttons' in subject line. ()
Make payments with PayPal - it's fast, free and secure! Help us get a faster server
FAQ page: massmind.org/techref/index.htm?key=reading+pusbuttons
Search entire site for: 'Re; reading pusbuttons'.

Truncated match.
PICList Thread
'Re; reading pusbuttons'
1997\10\17@142000 by Steve Smith

picon face
part 0 13549 bytes content-type:text/plainIn a message dated 17/10/97  11:59:04,  spam_OUTMAILER-DAEMONTakeThisOuTspamns2.x-link.ml.org (Mail
Delivery Subsystem) writes:

<<
In a message dated 16/10/97  05:11:42, you write:

<< What is the best way to sense a push button press?  I am multiplexing the
 PORTB data lines as a data bus and using PORTA as chip select as shown
 to me by Steve Smith.  Will the below circuit work?
  >>
In the circuit I sent The HC244 for the inputs is scanned once every 10mS
and
if button is down for three scans then it is valid Check out the debounce
routiene by Scott Dattalo its on his website
www.interstice.com/~sdattalo/technical/software/pic/debounce.html
This will debounce a whole 8 bits and you can loose the flip flop just
continue scanning the input register.

Also if you are working at 4Mhz you can do lots between reading an input
buffer to get keys every 10mS  The section to read keys will take less than
10uS

movlw b'11111111'       ;Set port b to input.
Tris port_b
movlw b'00000111'        ;Select an input buffer by seting b,4 address is
b,0,1,2
movwf port_a
movfw port_b                ;Read port B
movlw b'00010111'         ;Deselect input buffer turn off hc138

The read needs only take 1uS to open the 244 and read the key status just do
it every 10mS
software should be able to handle it all If you want send mail and I will
return a chunk of code for '84 that works in that circuit also attached are
the LCD handlers for that module.


Cheers Steve.......

some software extracts fo the board
CONOFF  EQU     B'00010000'     ; CONTROL PORT OFF STATE

;---------------PORT ASSIGNMENTS A IS ALWAYS OUTPUT--------
;---------------B IS BIDIRECTIONAL AND HAS ASSESS TO-------
;---------------UP TO 64 IO LINES VIA 138------------------

CON     EQU     PORTA   ; PORT A IS CONTROL
DTA     EQU     PORTB   ; PORT B IS DATA

;---------------138 LOCATION ASSIGNMENTS------------------

OUT1    EQU     B'00000000'     ; OUTPUTS 0-7
OUT2    EQU     B'00000001'     ; OUTPUTS 8-15
OUT3    EQU     B'00000010'     ; OUTPUTS 15-23
OUT4    EQU     B'00000011'     ; OUTPUTS 16-29 AND BUZZER AND LCD CONT
INP1    EQU     B'00000100'     ; INPUTS 0-7
INP2    EQU     B'00000101'     ; INPUTS 8-15
INP3    EQU     B'00000110'     ; INPUTS 16-23
INP4    EQU     B'00000111'     ; INPUTS 24-29 AND TEST SW AND CONT SW


;************* LCD FUNCTIONS ******************************
;---------------LCD TEXT OUTPUTER-----------
STRING
        MOVWF   STRNUM      ; SAVE STRING NUMBER
        MOVLW   b'11111111' ; NEEDS TO BE FF BEFORE ENTERING STRING
        MOVWF   TABOFF      ; SAVE IN CHR COUNTER
        MOVLW   LCDRS       ; SET TO DATA
        CALL    LCD_TXT     ; DO IT
DOSTR   PAGE1               ; SET PAGE MARKER
        CALL    CALLSTR     ; GET STRING CHARTER POINTED TO IN TABOFF
        PAGE0               ; RESET PAGE MARKER
        MOVWF   LCDCH       ; SAVE CHAR
        ANDLW   B'01111111' ; MASK END BIT (END OF STRING MARKER)
        CALL    LCD_OUT
        BTFSS   LCDCH,7     ; CHECK LAST
        GOTO    DOSTR       ; NOT FINISHED DO SOME MORE
        RETLW   0           ; CONTINUE PROGRAM
;--------------LCDRS-----------------------------------------------
LCD_RS
        MOVLW   BUZ             ; LCD IN CONTROL MODE NO BUZ
LCD_TXT MOVWF   DTA             ; INFO ON PORT
        MOVLW   OUT4            ; SELECT ADDRESS
        ADDLW   CONOFF          ; ADD THE OFF LOCATION TO PORT LOCATION
        MOVWF   CON             ; SET CONTROL PORT
        BCF     IOEN            ; CLOCK DATA OUT
        BSF     IOEN            ; RETURN TO NON SELECTED
        RETLW   0               ; EXIT
;---------------LCD PAUSE------------------
LCD_OUT
        MOVWF   DTA             ; PUT LCD CONTROL DATA ON BUS
        BSF     LCDEN           ; Lcd enable HIGH
        BCF     LCDEN           ; Lcd enable LOW                ; SEND IT
        MOVLW   .19             ; DELAY FOR LCD TO CATCH UP
        CALL    SHORT           ; DO TIME
        RETLW   0               ; EXIT
;--------------LCD CLEAR DISPLAY-----------------------------------
LCDCLR
        CALL    LCD_RS          ; CONTROL MODE
        MOVLW   01h             ; CLEAR DISPLAY
        CALL    LCD_OUT         ; SHORT TIME DELAY
        MOVLW   .5              ; TIME FOR LCD TO CATCH UP
        CALL    LONG            ; DO TIME
        RETLW   0               ; EXIT
;--------------LCD LINE 1 SELECT---------------------------------
L1
        CALL    LCD_RS          ; CONTROL MODE
        MOVLW   B'10000000'     ; LINE 1 SET
        GOTO    LCD_OUT         ; SHORT TIME DELAY
;--------------LCD LINE 2 SELECT---------------------------------
L2
        CALL    LCD_RS          ; CONTROL MODE
        MOVLW   B'11000000'     ; LINE 2 SET
        GOTO    LCD_OUT         ; SHORT TIME DELAY
;-------------LCD BACK 1 SPACE----------------------------------
BACK1
        CALL    LCD_RS          ; CONTROL MODE
        MOVLW   B'00010000'     ; BACK ONE SPACE
        GOTO    LCD_OUT         ; SHORT TIME DELAY
;------------LCD LINE 2 POS 12----------------------------------
L1_8
        CALL    LCD_RS          ; CONTROL MODE
        MOVLW   B'10001000'     ; LINE 1 POS 8
        GOTO    LCD_OUT         ; SHORT TIME DELAY
;------------LCD LINE 2 POS 8------------------------------------
L2_8
        CALL    LCD_RS          ; CONTROL MODE
        MOVLW   B'11001000'     ; LINE 2 POS 8
        GOTO    LCD_OUT         ; SHORT TIME DELAY
;------------CUSOR BLINK-----------------------------------------
BLINK
        CALL    LCD_RS          ; CONTROL MODE
        MOVLW   B'00001110'     ; CURSOR BLINK
        GOTO    LCD_OUT         ; SHORT TIME DELAY
;------------CURSOR NORMAL---------------------------------------
NO_BLINK
        CALL    LCD_RS          ; CONTROL MODE
        MOVLW   B'00001100'     ; CURSOR NORMAL
        GOTO    LCD_OUT         ; SHORT TIME DELAY
;-------------LCD INSERT SPACE W CONTAINS NUMBER OF-------------
SPACE_0
        MOVWF   GP3             ; SAVE NUMBER OF SPACES
SPACE_1 MOVLW   .10             ; SPACE LOCATION
        CALL    STRING          ; GO DO IT
        DECFSZ  GP3,F           ; FINISHED
        GOTO    SPACE_1         ; DO SOME MORE
        RETLW   0               ; EXIT
;************* END LCD FUNCTIONS ************************
 >>


---------------------
Forwarded message:
From:   .....MAILER-DAEMONKILLspamspam@spam@ns2.x-link.ml.org (Mail Delivery Subsystem)
To:     XYGAXspamKILLspamAOL.COM
Date: 97-10-17 07:59:04 EDT

The original message was received at Fri, 17 Oct 1997 08:56:43 +0200 (SAT)
from wcpes.x-link.ml.org [163.195.20.11]

  ----- The following addresses had permanent fatal errors -----
<.....bserfonteinKILLspamspam.....tbh.wcape.co.za>

  ----- Transcript of session follows -----
550 <EraseMEbserfonteinspam_OUTspamTakeThisOuTtbh.wcape.co.za>... Host unknown (Name server:
tbh.wcape.co.za: host not found)

In a message dated 16/10/97  05:11:42, you write:

<< What is the best way to sense a push button press?  I am multiplexing the
PORTB data lines as a data bus and using PORTA as chip select as shown
to me by Steve Smith.  Will the below circuit work?
 >>
In the circuit I sent The HC244 for the inputs is scanned once every 10mS and
if button is down for three scans then it is valid Check out the debounce
routiene by Scott Dattalo its on his website
www.interstice.com/~sdattalo/technical/software/pic/debounce.html
This will debounce a whole 8 bits and you can loose the flip flop just
continue scanning the input register.

Also if you are working at 4Mhz you can do lots between reading an input
buffer to get keys every 10mS  The section to read keys will take less than
10uS

movlw b'11111111'       ;Set port b to input.
Tris port_b
movlw b'00000111'        ;Select an input buffer by seting b,4 address is
b,0,1,2
movwf port_a
movfw port_b                ;Read port B
movlw b'00010111'         ;Deselect input buffer turn off hc138

The read needs only take 1uS to open the 244 and read the key status just do
it every 10mS
software should be able to handle it all If you want send mail and I will
return a chunk of code for '84 that works in that circuit also attached are
the LCD handlers for that module.


Cheers Steve.......

some software extracts fo the board
CONOFF  EQU     B'00010000'     ; CONTROL PORT OFF STATE

;---------------PORT ASSIGNMENTS A IS ALWAYS OUTPUT--------
;---------------B IS BIDIRECTIONAL AND HAS ASSESS TO-------
;---------------UP TO 64 IO LINES VIA 138------------------

CON     EQU     PORTA   ; PORT A IS CONTROL
DTA     EQU     PORTB   ; PORT B IS DATA

;---------------138 LOCATION ASSIGNMENTS------------------

OUT1    EQU     B'00000000'     ; OUTPUTS 0-7
OUT2    EQU     B'00000001'     ; OUTPUTS 8-15
OUT3    EQU     B'00000010'     ; OUTPUTS 15-23
OUT4    EQU     B'00000011'     ; OUTPUTS 16-29 AND BUZZER AND LCD CONT
INP1    EQU     B'00000100'     ; INPUTS 0-7
INP2    EQU     B'00000101'     ; INPUTS 8-15
INP3    EQU     B'00000110'     ; INPUTS 16-23
INP4    EQU     B'00000111'     ; INPUTS 24-29 AND TEST SW AND CONT SW


;************* LCD FUNCTIONS ******************************
;---------------LCD TEXT OUTPUTER-----------
STRING
       MOVWF   STRNUM      ; SAVE STRING NUMBER
       MOVLW   b'11111111' ; NEEDS TO BE FF BEFORE ENTERING STRING
       MOVWF   TABOFF      ; SAVE IN CHR COUNTER
       MOVLW   LCDRS       ; SET TO DATA
       CALL    LCD_TXT     ; DO IT
DOSTR   PAGE1               ; SET PAGE MARKER
       CALL    CALLSTR     ; GET STRING CHARTER POINTED TO IN TABOFF
       PAGE0               ; RESET PAGE MARKER
       MOVWF   LCDCH       ; SAVE CHAR
       ANDLW   B'01111111' ; MASK END BIT (END OF STRING MARKER)
       CALL    LCD_OUT
       BTFSS   LCDCH,7     ; CHECK LAST
       GOTO    DOSTR       ; NOT FINISHED DO SOME MORE
       RETLW   0           ; CONTINUE PROGRAM
;--------------LCDRS-----------------------------------------------
LCD_RS
       MOVLW   BUZ             ; LCD IN CONTROL MODE NO BUZ
LCD_TXT MOVWF   DTA             ; INFO ON PORT
       MOVLW   OUT4            ; SELECT ADDRESS
       ADDLW   CONOFF          ; ADD THE OFF LOCATION TO PORT LOCATION
       MOVWF   CON             ; SET CONTROL PORT
       BCF     IOEN            ; CLOCK DATA OUT
       BSF     IOEN            ; RETURN TO NON SELECTED
       RETLW   0               ; EXIT
;---------------LCD PAUSE------------------
LCD_OUT
       MOVWF   DTA             ; PUT LCD CONTROL DATA ON BUS
       BSF     LCDEN           ; Lcd enable HIGH
       BCF     LCDEN           ; Lcd enable LOW                ; SEND IT
       MOVLW   .19             ; DELAY FOR LCD TO CATCH UP
       CALL    SHORT           ; DO TIME
       RETLW   0               ; EXIT
;--------------LCD CLEAR DISPLAY-----------------------------------
LCDCLR
       CALL    LCD_RS          ; CONTROL MODE
       MOVLW   01h             ; CLEAR DISPLAY
       CALL    LCD_OUT         ; SHORT TIME DELAY
       MOVLW   .5              ; TIME FOR LCD TO CATCH UP
       CALL    LONG            ; DO TIME
       RETLW   0               ; EXIT
;--------------LCD LINE 1 SELECT---------------------------------
L1
       CALL    LCD_RS          ; CONTROL MODE
       MOVLW   B'10000000'     ; LINE 1 SET
       GOTO    LCD_OUT         ; SHORT TIME DELAY
;--------------LCD LINE 2 SELECT---------------------------------
L2
       CALL    LCD_RS          ; CONTROL MODE
       MOVLW   B'11000000'     ; LINE 2 SET
       GOTO    LCD_OUT         ; SHORT TIME DELAY
;-------------LCD BACK 1 SPACE----------------------------------
BACK1
       CALL    LCD_RS          ; CONTROL MODE
       MOVLW   B'00010000'     ; BACK ONE SPACE
       GOTO    LCD_OUT         ; SHORT TIME DELAY
;------------LCD LINE 2 POS 12----------------------------------
L1_8
       CALL    LCD_RS          ; CONTROL MODE
       MOVLW   B'10001000'     ; LINE 1 POS 8
       GOTO    LCD_OUT         ; SHORT TIME DELAY
;------------LCD LINE 2 POS 8------------------------------------
L2_8
       CALL    LCD_RS          ; CONTROL MODE
       MOVLW   B'11001000'     ; LINE 2 POS 8
       GOTO    LCD_OUT         ; SHORT TIME DELAY
;------------CUSOR BLINK-----------------------------------------
BLINK
       CALL    LCD_RS          ; CONTROL MODE
       MOVLW   B'00001110'     ; CURSOR BLINK
       GOTO    LCD_OUT         ; SHORT TIME DELAY
;------------CURSOR NORMAL---------------------------------------
NO_BLINK
       CALL    LCD_RS          ; CONTROL MODE
       MOVLW   B'00001100'     ; CURSOR NORMAL
       GOTO    LCD_OUT         ; SHORT TIME DELAY
;-------------LCD INSERT SPACE W CONTAINS NUMBER OF-------------
SPACE_0
       MOVWF   GP3             ; SAVE NUMBER OF SPACES
SPACE_1 MOVLW   .10             ; SPACE LOCATION
       CALL    STRING          ; GO DO IT
       DECFSZ  GP3,F           ; FINISHED
       GOTO    SPACE_1         ; DO SOME MORE
       RETLW   0               ; EXIT
;************* END LCD FUNCTIONS ************************



Content-ID: <0_28158_877111347spamspam_OUTemout01.mail.aol.com.5035>> Content-type: text/plain;
       name="returned.dat"

Reporting-MTA: dns; ns2.x-link.ml.org
Received-From-MTA: DNS; wcpes.x-link.ml.org
Arrival-Date: Fri, 17 Oct 1997 08:56:43 +0200 (SAT)

Final-Recipient: RFC822;
@spam@bserfonteinKILLspamspamtbh.wcape.co.za
Action: failed
Status: 5.1.2
Remote-MTA: DNS; tbh.wcape.co.za
Last-Attempt-Date: Fri, 17 Oct 1997 08:56:44 +0200 (SAT)


More... (looser matching)
- Last day of these posts
- In 1997 , 1998 only
- Today
- New search...