;; **************************************************************************** ;; 7Seg LED module for pic12/16 Pseudo Operating System ;; **************************************************************************** LIST P=PIC16F88 INCLUDE "P16F88.INC" INCLUDE "MACRO.INC" ; *** Define constant *** #DEFINE CATHODE_COMMON ;Define if use cathode common #DEFINE ANODE_COMMON ;Define if use anode common IFNDEF SEG7_PORT ; _____________ #DEFINE SEG7_PORT ;| ___ a | #DEFINE SEG7A PORTB,D'0' ;| < ___ > | #DEFINE SEG7B PORTB,D'1' ;| ^ ^ | #DEFINE SEG7C PORTB,D'2' ;| | | | |b| #DEFINE SEG7D PORTB,D'3' ;|f| | g | | | #DEFINE SEG7E PORTB,D'4' ;| v ___ v | #DEFINE SEG7F PORTB,D'5' ;| < ___ > | #DEFINE SEG7G PORTB,D'6' ;| ^ ^ | #DEFINE SEG7DP PORTB,D'7' ;| | | | |c| ENDIF ;|e| | d | | | ;| v ___ v | ;| < ___ > | ;|_____________| ; *** Request register/routine *** EXTERN ARGUMENT0 ; *** Provide register/routine *** IFDEF CATHODE_COMMON GLOBAL SEG7CATHODE ;Output 7Seg LED Cathode common ENDIF IFDEF ANODE_COMMON GLOBAL SEG7ANODE ;Output 7Seg LED Anode common ENDIF ; *** Program area *** CODE ; *** Cathode Common *** IFDEF CATHODE_COMMON SEG7CATHODE MOVLW HIGH(CATHODE) ; Cathode Common MOVWF PCLATH ; | a | b | c | d | e | f | g | dp MOVF ARGUMENT0,W ;_|_ _|_ _|_ _|_ _|_ _|_ _|_ _|_ ANDLW H'0F' ;\ / \ / \ / \ / \ / \ / \ / \ / ADDLW LOW(CATHODE) ;_V_ _V_ _V_ _V_ _V_ _V_ _V_ _V_ BTFSC STATUS,C ; | | | | | | | | INCF PCLATH,F ; |___|___|___|___|___|___|___| MOVWF PCL ; | com CATHODE GOTO CATHODE_1 ; _____________ GOTO CATHODE_2 ;| ___ a | GOTO CATHODE_3 ;| < ___ > | GOTO CATHODE_4 ;| ^ ^ | GOTO CATHODE_5 ;| | | | |b| GOTO CATHODE_6 ;|f| | g | | | GOTO CATHODE_7 ;| v ___ v | GOTO CATHODE_8 ;| < ___ > | GOTO CATHODE_9 ;| ^ ^ | GOTO CATHODE_A ;| | | | |c| GOTO CATHODE_B ;|e| | d | | | GOTO CATHODE_C ;| v ___ v | GOTO CATHODE_D ;| < ___ > | GOTO CATHODE_E ;|_____________| GOTO CATHODE_F CATHODE_0 BANKSEL(PORTA) ; _____________ BSF SEG7A ;| ___ a | BSF SEG7B ;| < ___ > | BSF SEG7C ;| ^ ^ | BSF SEG7D ;| | | | |b| BSF SEG7E ;|f| | | | | BSF SEG7F ;| v v | BCF SEG7G ;| | BCF SEG7DP ;| ^ ^ | BACK ;| | | | |c| ;|e| | d | | | ;| v ___ v | ;| < ___ > | ;|_____________| CATHODE_1 BANKSEL(PORTA) ; _____________ BCF SEG7A ;| | BSF SEG7B ;| | BSF SEG7C ;| ^ | BCF SEG7D ;| | |b| BCF SEG7E ;| | | | BCF SEG7F ;| v | BCF SEG7G ;| | BCF SEG7DP ;| ^ | BACK ;| | |c| ;| | | | ;| v | ;| | ;|_____________| CATHODE_2 BANKSEL(PORTA) ; _____________ BSF SEG7A ;| ___ a | BSF SEG7B ;| < ___ > | BCF SEG7C ;| ^ | BSF SEG7D ;| | |b| BSF SEG7E ;| g | | | BCF SEG7F ;| ___ v | BSF SEG7G ;| < ___ > | BCF SEG7DP ;| ^ | BACK ;| | | | ;|e| | d | ;| v ___ | ;| < ___ > | ;|_____________| CATHODE_3 BANKSEL(PORTA) ; _____________ BSF SEG7A ;| ___ a | BSF SEG7B ;| < ___ > | BSF SEG7C ;| ^ | BSF SEG7D ;| | |b| BCF SEG7E ;| g | | | BCF SEG7F ;| ___ v | BSF SEG7G ;| < ___ > | BCF SEG7DP ;| ^ | BACK ;| | |c| ;| d | | | ;| ___ v | ;| < ___ > | ;|_____________| CATHODE_4 BANKSEL(PORTA) ; _____________ BCF SEG7A ;| | BSF SEG7B ;| | BSF SEG7C ;| ^ ^ | BCF SEG7D ;| | | | |b| BCF SEG7E ;|f| | g | | | BSF SEG7F ;| v ___ v | BSF SEG7G ;| < ___ > | BCF SEG7DP ;| ^ | BACK ;| | |c| ;| | | | ;| v | ;| | ;|_____________| CATHODE_5 BANKSEL(PORTA) ; _____________ BSF SEG7A ;| ___ a | BCF SEG7B ;| < ___ > | BSF SEG7C ;| ^ | BSF SEG7D ;| | | | BCF SEG7E ;|f| | g | BSF SEG7F ;| v ___ | BSF SEG7G ;| < ___ > | BCF SEG7DP ;| ^ | BACK ;| | |c| ;| d | | | ;| ___ v | ;| < ___ > | ;|_____________| CATHODE_6 BANKSEL(PORTA) ; _____________ BSF SEG7A ;| ___ a | BCF SEG7B ;| < ___ > | BSF SEG7C ;| ^ | BSF SEG7D ;| | | | BSF SEG7E ;|f| | g | BSF SEG7F ;| v ___ | BSF SEG7G ;| < ___ > | BCF SEG7DP ;| ^ ^ | BACK ;| | | | |c| ;|e| | d | | | ;| v ___ v | ;| < ___ > | ;|_____________| CATHODE_7 BANKSEL(PORTA) ; _____________ BSF SEG7A ;| ___ a | BSF SEG7B ;| < ___ > | BSF SEG7C ;| ^ ^ | BCF SEG7D ;| | | | |b| BCF SEG7E ;|f| | | | | BSF SEG7F ;| v v | BCF SEG7G ;| | BCF SEG7DP ;| ^ | BACK ;| | |c| ;| | | | ;| v | ;| | ;|_____________| CATHODE_8 BANKSEL(PORTA) ; _____________ BSF SEG7A ;| ___ a | BSF SEG7B ;| < ___ > | BSF SEG7C ;| ^ ^ | BSF SEG7D ;| | | | |b| BSF SEG7E ;|f| | g | | | BSF SEG7F ;| v ___ v | BSF SEG7G ;| < ___ > | BCF SEG7DP ;| ^ ^ | BACK ;| | | | |c| ;|e| | d | | | ;| v ___ v | ;| < ___ > | ;|_____________| CATHODE_9 BANKSEL(PORTA) ; _____________ BSF SEG7A ;| ___ a | BSF SEG7B ;| < ___ > | BSF SEG7C ;| ^ ^ | BSF SEG7D ;| | | | |b| BCF SEG7E ;|f| | g | | | BSF SEG7F ;| v ___ v | BSF SEG7G ;| < ___ > | BCF SEG7DP ;| ^ | BACK ;| | |c| ;| d | | | ;| ___ v | ;| < ___ > | ;|_____________| CATHODE_A BANKSEL(PORTA) ; _____________ BSF SEG7A ;| ___ a | BSF SEG7B ;| < ___ > | BSF SEG7C ;| ^ ^ | BCF SEG7D ;| | | | |b| BSF SEG7E ;|f| | g | | | BSF SEG7F ;| v ___ v | BSF SEG7G ;| < ___ > | BCF SEG7DP ;| ^ ^ | BACK ;| | | | |c| ;|e| | | | | ;| v v | ;| | ;|_____________| CATHODE_B BANKSEL(PORTA) ; _____________ BCF SEG7A ;| | BCF SEG7B ;| | BSF SEG7C ;| ^ | BSF SEG7D ;| | | | BSF SEG7E ;|f| | g | BSF SEG7F ;| v ___ | BSF SEG7G ;| < ___ > | BCF SEG7DP ;| ^ ^ | BACK ;| | | | |c| ;|e| | d | | | ;| v ___ v | ;| < ___ > | ;|_____________| CATHODE_C BANKSEL(PORTA) ; _____________ BSF SEG7A ;| ___ a | BCF SEG7B ;| < ___ > | BCF SEG7C ;| ^ | BSF SEG7D ;| | | | BSF SEG7E ;|f| | | BSF SEG7F ;| v | BCF SEG7G ;| | BCF SEG7DP ;| ^ | BACK ;| | | | ;|e| | d | ;| v ___ | ;| < ___ > | ;|_____________| CATHODE_D BANKSEL(PORTA) ; _____________ BCF SEG7A ;| | BSF SEG7B ;| | BSF SEG7C ;| ^ | BSF SEG7D ;| | |b| BSF SEG7E ;| g | | | BCF SEG7F ;| ___ v | BSF SEG7G ;| < ___ > | BCF SEG7DP ;| ^ ^ | BACK ;| | | | |c| ;|e| | d | | | ;| v ___ v | ;| < ___ > | ;|_____________| CATHODE_E BANKSEL(PORTA) ; _____________ BSF SEG7A ;| ___ a | BCF SEG7B ;| < ___ > | BCF SEG7C ;| ^ | BSF SEG7D ;| | | | BSF SEG7E ;|f| | g | BSF SEG7F ;| v ___ | BSF SEG7G ;| < ___ > | BCF SEG7DP ;| ^ | BACK ;| | | | ;|e| | d | ;| v ___ | ;| < ___ > | ;|_____________| CATHODE_F BANKSEL(PORTA) ; _____________ BSF SEG7A ;| ___ a | BCF SEG7B ;| < ___ > | BCF SEG7C ;| ^ | BCF SEG7D ;| | | | BSF SEG7E ;|f| | g | BSF SEG7F ;| v ___ | BSF SEG7G ;| < ___ > | BCF SEG7DP ;| ^ | BACK ;| | | | ;|e| | | ;| v | ;| | ;|_____________| ENDIF ;END of Cathode Common ; *** Anode Common *** IFDEF ANODE_COMMON SEG7ANODE MOVLW HIGH(ANODE) ; Anode Common com MOVWF PCLATH ; _____________|_____________ MOVF ARGUMENT0,W ; | | | | | | | | ANDLW H'0F' ;_|_ _|_ _|_ _|_ _|_ _|_ _|_ _|_ ADDLW LOW(ANODE) ;\ / \ / \ / \ / \ / \ / \ / \ / BTFSC STATUS,C ;_V_ _V_ _V_ _V_ _V_ _V_ _V_ _V_ INCF PCLATH,F ; | | | | | | | | MOVWF PCL ; | a | b | c | d | d | f | g | dp ANODE GOTO ANODE_1 ; _____________ GOTO ANODE_2 ;| ___ a | GOTO ANODE_3 ;| < ___ > | GOTO ANODE_4 ;| ^ ^ | GOTO ANODE_5 ;| | | | |b| GOTO ANODE_6 ;|f| | g | | | GOTO ANODE_7 ;| v ___ v | GOTO ANODE_8 ;| < ___ > | GOTO ANODE_9 ;| ^ ^ | GOTO ANODE_A ;| | | | |c| GOTO ANODE_B ;|e| | d | | | GOTO ANODE_C ;| v ___ v | GOTO ANODE_D ;| < ___ > | GOTO ANODE_E ;|_____________| GOTO ANODE_F ANODE_0 BANKSEL(PORTA) ; _____________ BCF SEG7A ;| ___ a | BCF SEG7B ;| < ___ > | BCF SEG7C ;| ^ ^ | BCF SEG7D ;| | | | |b| BCF SEG7E ;|f| | | | | BCF SEG7F ;| v v | BSF SEG7G ;| | BSF SEG7DP ;| ^ ^ | BACK ;| | | | |c| ;|e| | d | | | ;| v ___ v | ;| < ___ > | ;|_____________| ANODE_1 BANKSEL(PORTA) ; _____________ BSF SEG7A ;| | BCF SEG7B ;| | BCF SEG7C ;| ^ | BSF SEG7D ;| | |b| BSF SEG7E ;| | | | BSF SEG7F ;| v | BSF SEG7G ;| | BSF SEG7DP ;| ^ | BACK ;| | |c| ;| | | | ;| v | ;| | ;|_____________| ANODE_2 BANKSEL(PORTA) ; _____________ BCF SEG7A ;| ___ a | BCF SEG7B ;| < ___ > | BSF SEG7C ;| ^ | BCF SEG7D ;| | |b| BCF SEG7E ;| g | | | BSF SEG7F ;| ___ v | BCF SEG7G ;| < ___ > | BSF SEG7DP ;| ^ | BACK ;| | | | ;|e| | d | ;| v ___ | ;| < ___ > | ;|_____________| ANODE_3 BANKSEL(PORTA) ; _____________ BCF SEG7A ;| ___ a | BCF SEG7B ;| < ___ > | BCF SEG7C ;| ^ | BCF SEG7D ;| | |b| BSF SEG7E ;| g | | | BSF SEG7F ;| ___ v | BCF SEG7G ;| < ___ > | BSF SEG7DP ;| ^ | BACK ;| | |c| ;| d | | | ;| ___ v | ;| < ___ > | ;|_____________| ANODE_4 BANKSEL(PORTA) ; _____________ BSF SEG7A ;| | BCF SEG7B ;| | BCF SEG7C ;| ^ ^ | BSF SEG7D ;| | | | |b| BSF SEG7E ;|f| | g | | | BCF SEG7F ;| v ___ v | BCF SEG7G ;| < ___ > | BSF SEG7DP ;| ^ | BACK ;| | |c| ;| | | | ;| v | ;| | ;|_____________| ANODE_5 BANKSEL(PORTA) ; _____________ BCF SEG7A ;| ___ a | BSF SEG7B ;| < ___ > | BCF SEG7C ;| ^ | BCF SEG7D ;| | | | BSF SEG7E ;|f| | g | BCF SEG7F ;| v ___ | BCF SEG7G ;| < ___ > | BSF SEG7DP ;| ^ | BACK ;| | |c| ;| d | | | ;| ___ v | ;| < ___ > | ;|_____________| ANODE_6 BANKSEL(PORTA) ; _____________ BCF SEG7A ;| ___ a | BSF SEG7B ;| < ___ > | BCF SEG7C ;| ^ | BCF SEG7D ;| | | | BCF SEG7E ;|f| | g | BCF SEG7F ;| v ___ | BCF SEG7G ;| < ___ > | BSF SEG7DP ;| ^ ^ | BACK ;| | | | |c| ;|e| | d | | | ;| v ___ v | ;| < ___ > | ;|_____________| ANODE_7 BANKSEL(PORTA) ; _____________ BCF SEG7A ;| ___ a | BCF SEG7B ;| < ___ > | BCF SEG7C ;| ^ ^ | BSF SEG7D ;| | | | |b| BSF SEG7E ;|f| | | | | BCF SEG7F ;| v v | BSF SEG7G ;| | BSF SEG7DP ;| ^ | BACK ;| | |c| ;| | | | ;| v | ;| | ;|_____________| ANODE_8 BANKSEL(PORTA) ; _____________ BCF SEG7A ;| ___ a | BCF SEG7B ;| < ___ > | BCF SEG7C ;| ^ ^ | BCF SEG7D ;| | | | |b| BCF SEG7E ;|f| | g | | | BCF SEG7F ;| v ___ v | BCF SEG7G ;| < ___ > | BSF SEG7DP ;| ^ ^ | BACK ;| | | | |c| ;|e| | d | | | ;| v ___ v | ;| < ___ > | ;|_____________| ANODE_9 BANKSEL(PORTA) ; _____________ BCF SEG7A ;| ___ a | BCF SEG7B ;| < ___ > | BCF SEG7C ;| ^ ^ | BCF SEG7D ;| | | | |b| BSF SEG7E ;|f| | g | | | BCF SEG7F ;| v ___ v | BCF SEG7G ;| < ___ > | BSF SEG7DP ;| ^ | BACK ;| | |c| ;| d | | | ;| ___ v | ;| < ___ > | ;|_____________| ANODE_A BANKSEL(PORTA) ; _____________ BCF SEG7A ;| ___ a | BCF SEG7B ;| < ___ > | BCF SEG7C ;| ^ ^ | BSF SEG7D ;| | | | |b| BCF SEG7E ;|f| | g | | | BCF SEG7F ;| v ___ v | BCF SEG7G ;| < ___ > | BSF SEG7DP ;| ^ ^ | BACK ;| | | | |c| ;|e| | | | | ;| v v | ;| | ;|_____________| ANODE_B BANKSEL(PORTA) ; _____________ BSF SEG7A ;| | BSF SEG7B ;| | BCF SEG7C ;| ^ | BCF SEG7D ;| | | | BCF SEG7E ;|f| | g | BCF SEG7F ;| v ___ | BCF SEG7G ;| < ___ > | BSF SEG7DP ;| ^ ^ | BACK ;| | | | |c| ;|e| | d | | | ;| v ___ v | ;| < ___ > | ;|_____________| ANODE_C BANKSEL(PORTA) ; _____________ BCF SEG7A ;| ___ a | BSF SEG7B ;| < ___ > | BSF SEG7C ;| ^ | BCF SEG7D ;| | | | BCF SEG7E ;|f| | | BCF SEG7F ;| v | BSF SEG7G ;| | BSF SEG7DP ;| ^ | BACK ;| | | | ;|e| | d | ;| v ___ | ;| < ___ > | ;|_____________| ANODE_D BANKSEL(PORTA) ; _____________ BSF SEG7A ;| | BCF SEG7B ;| | BCF SEG7C ;| ^ | BCF SEG7D ;| | |b| BCF SEG7E ;| g | | | BSF SEG7F ;| ___ v | BCF SEG7G ;| < ___ > | BSF SEG7DP ;| ^ ^ | BACK ;| | | | |c| ;|e| | d | | | ;| v ___ v | ;| < ___ > | ;|_____________| ANODE_E BANKSEL(PORTA) ; _____________ BCF SEG7A ;| ___ a | BSF SEG7B ;| < ___ > | BSF SEG7C ;| ^ | BCF SEG7D ;| | | | BCF SEG7E ;|f| | g | BCF SEG7F ;| v ___ | BCF SEG7G ;| < ___ > | BSF SEG7DP ;| ^ | BACK ;| | | | ;|e| | d | ;| v ___ | ;| < ___ > | ;|_____________| ANODE_F BANKSEL(PORTA) ; _____________ BCF SEG7A ;| ___ a | BSF SEG7B ;| < ___ > | BSF SEG7C ;| ^ | BSF SEG7D ;| | | | BCF SEG7E ;|f| | g | BCF SEG7F ;| v ___ | BCF SEG7G ;| < ___ > | BSF SEG7DP ;| ^ | BACK ;| | | | ;|e| | | ;| v | ;| | ;|_____________| ENDIF ;END of Anode Common END ;; **************************************************************************** ;; ;; Copyright (c) Hitoshi Gomi ;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are met: ;; ;; 1.Redistributions of source code must retain the above copyright notice, ;; this list of conditions and the following disclaimer. ;; 2.Redistributions in binary form must reproduce the above copyright notice, ;; this list of conditions and the following disclaimer in the documentation ;; and/or other materials provided with the distribution. ;; 3.The names of the author may not be used to endorse or promote products ;; derived from this software without specific prior written permission. ;; ;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ;; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ;; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ;; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ;; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ;; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ;; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ;; POSSIBILITY OF SUCH DAMAGE. ;; ;; ****************************************************************************