; Source created with Parsic Version 3

; Source created with Parsic Version 3.x

 

; at              : 26/03/03 01:54:43 p.m.

 

 

; Project File    : C:\VIEIRA\PARSIC\PERSIANA.PIC

 

; Project Version : 1.1.15

 

; Created         : 06/03/03 05:23:00 p.m.

 

; Last change     : 26/03/03 01:41:08 p.m.

 

       PROCESSOR 16C84

 

       INCLUDE P16C84.INC

 

       RADIX DEC

 

 

       __IDLOCS H'0101'

 

       __CONFIG _CP_OFF & _PWRTE_ON & _WDT_ON & _XT_OSC

 

; Diverses

 

ZERO   EQU Z  ; ZERO-Flag

CARRY  EQU C ; CARRY-Flag

 

 

; Variable

 

SYS_WSAV     = 12   ; located in Bank 0, 1

SYS_SSAV     = 13   ; located in Bank 0, 1

TR1    = 14   ; located in Bank 0, 1

TR1_HI = 15   ; located in Bank 0, 1

S0     = 16   ; located in Bank 0, 1

TR2    = 17   ; located in Bank 0, 1

TR2_HI = 18   ; located in Bank 0, 1

S1     = 19   ; located in Bank 0, 1

OS1_FD = 20   ; located in Bank 0, 1

RB0    = 21   ; located in Bank 0, 1

S2     = 22   ; located in Bank 0, 1

S3     = 23   ; located in Bank 0, 1

S4     = 24   ; located in Bank 0, 1

S5     = 25   ; located in Bank 0, 1

MF1    = 26   ; located in Bank 0, 1

MF1_HI = 27   ; located in Bank 0, 1

MF1_FD = 28   ; located in Bank 0, 1

RAM    = 29   ; located in Bank 0, 1

 

       ERRORLEVEL -302     ; disable warning (Bankswitching)

       ERRORLEVEL -306     ; disable warning (Pageswitching)

 

;****************************************

;Programmanfang

;****************************************

 

       ORG 0

 

       CLRF STATUS  ; switch to RAM-Bank 0

       GOTO SYS_INIT

       NOP

       NOP

 

;****************************************

;Interrupt-Adress

;****************************************

 

       MOVWF SYS_WSAV      ; save register

       SWAPF STATUS,W

       CLRF STATUS  ; bank 0

       MOVWF SYS_SSAV

 

       BCF INTCON,T0IF     ; Interrupt quitieren

 

       INCFSZ TR1,F

       GOTO SYS_INT_LABEL_0

       INCF TR1_HI,F

 

SYS_INT_LABEL_0

       INCFSZ TR2,F

       GOTO SYS_INT_LABEL_1

       INCF TR2_HI,F

 

SYS_INT_LABEL_1

       INCFSZ MF1,F

       GOTO SYS_INT_LABEL_2

       INCF MF1_HI,F

 

SYS_INT_LABEL_2

 

EXITINT

 

       SWAPF SYS_SSAV,W    ; Register zurück

       MOVWF STATUS

       SWAPF SYS_WSAV,F

       SWAPF SYS_WSAV,W

 

       RETFIE ; RETurn From Interrupt and Enable GIE

 

 

;****************************************

; Subroutines

;****************************************

 

 

;****************************************

;Initialisierung

;****************************************

 

 

SYS_INIT

 

       MOVLW B'00100000'

       MOVWF INTCON

 

; Ausgangs-Pegel setzen, bevor die Richtung gesetzt wird

 

       BCF STATUS,RP0      ; Bank 0

       MOVLW B'00000000'

       MOVWF PORTA

 

       MOVLW B'00000000'

       MOVWF PORTB

 

       MOVLW 143

       BSF STATUS,RP0      ; Bank 1

       MOVWF OPTION_REG

 

 

; Richtung setzen

 

       MOVLW B'11111111'

       MOVWF TRISA

 

       MOVLW B'11110010'

       MOVWF TRISB

 

; init vars

 

 

; Clear RAM

 

       MOVLW 12

       MOVWF FSR

CR1

       CLRF INDF

       INCF FSR,F

       MOVFW FSR

       SUBLW 48

       BTFSS STATUS,ZERO

       GOTO CR1

 

       MOVLW B'00111000'

       MOVWF S1

       MOVLW B'00001101'

       MOVWF S2

 

       BCF STATUS,RP0      ; Bank 0

       CLRF TMR0

       BCF INTCON,T0IF

       BSF INTCON,GIE      ; Interrupt freigeben

 

;**********************************

;******* Haupt-Programm ***********

;**********************************

 

MAIN

 

       CLRWDT

 

;***************************************************

; Timer -> TR1

;***************************************************

 

       MOVLW 5      ; Test auf >=

       SUBWF TR1_HI,W      ;F-W -> W

       BTFSS STATUS,ZERO

       GOTO LABEL_TR1_CHECK

       MOVLW 87

       SUBWF TR1,W  ;F-W -> W

LABEL_TR1_CHECK

       BTFSS STATUS,CARRY

       GOTO LABEL_TR1_ENDE

 

LABEL_TR1_RESET

       MOVLW 5      ; Test auf >=

       SUBWF TR1_HI,F      ;F-W -> F

       MOVLW 87

       SUBWF TR1,F  ;F-W -> F

       BTFSS STATUS,CARRY

       DECF TR1_HI,F

 

LABEL_TR1_SET ; toggel output

       BTFSC S0,0

       GOTO LABEL_TR1_CLR

       BSF S0,0

       GOTO LABEL_TR1_ENDE

LABEL_TR1_CLR

       BCF S0,0

LABEL_TR1_ENDE

 

;***************************************************

; UND - Gatter -> LG1

;***************************************************

 

LABEL_LG1_1

       BCF STATUS,RP0      ; Bank 0

       BTFSC PORTA,0

       GOTO LABEL_LG1_FALSE

LABEL_LG1_2

       BTFSS S0,0

       GOTO LABEL_LG1_FALSE

 

LABEL_LG1_TRUE

       BSF PORTB,0

       GOTO LABEL_LG1_ENDE

LABEL_LG1_FALSE

       BCF STATUS,RP0      ; Bank 0

       BCF PORTB,0

LABEL_LG1_ENDE

;***************************************************

; Timer -> TR2

;***************************************************

 

       MOVLW 0      ; Test auf >=

       SUBWF TR2_HI,W      ;F-W -> W

       BTFSS STATUS,ZERO

       GOTO LABEL_TR2_CHECK

       MOVLW 117

       SUBWF TR2,W  ;F-W -> W

LABEL_TR2_CHECK

       BTFSS STATUS,CARRY

       GOTO LABEL_TR2_ENDE

 

LABEL_TR2_RESET

       MOVLW 0      ; Test auf >=

       SUBWF TR2_HI,F      ;F-W -> F

       MOVLW 117

       SUBWF TR2,F  ;F-W -> F

       BTFSS STATUS,CARRY

       DECF TR2_HI,F

 

LABEL_TR2_SET ; toggel output

       BTFSC S1,6

       GOTO LABEL_TR2_CLR

       BSF S1,6

       GOTO LABEL_TR2_ENDE

LABEL_TR2_CLR

       BCF S1,6

LABEL_TR2_ENDE

 

;***************************************************

; One Shot -> OS1

;***************************************************

 

 

       BTFSS S1,6

       GOTO LABEL_OS1_1

       BTFSC OS1_FD,0

       GOTO LABEL_OS1_1

       BSF OS1_FD,0

       BSF S1,7

       GOTO LABEL_OS1_2

LABEL_OS1_1

       BCF S1,7

       BTFSC S1,6

       GOTO LABEL_OS1_2

       BCF OS1_FD,0

LABEL_OS1_2

;***************************************************

; UND - Gatter -> LG2

;***************************************************

 

LABEL_LG2_1

       BCF STATUS,RP0      ; Bank 0

       BTFSS PORTA,1

       GOTO LABEL_LG2_FALSE

LABEL_LG2_2

       BTFSS S1,7

       GOTO LABEL_LG2_FALSE

 

LABEL_LG2_TRUE

       BSF S1,2

       GOTO LABEL_LG2_ENDE

LABEL_LG2_FALSE

       BCF S1,2

LABEL_LG2_ENDE

;***************************************************

; UND - Gatter -> LG3

;***************************************************

 

LABEL_LG3_1

       BTFSS S1,2

       GOTO LABEL_LG3_FALSE

LABEL_LG3_2

       BCF STATUS,RP0      ; Bank 0

       BTFSS PORTA,2

       GOTO LABEL_LG3_FALSE

 

LABEL_LG3_TRUE

       BSF S1,1

       GOTO LABEL_LG3_ENDE

LABEL_LG3_FALSE

       BCF S1,1

LABEL_LG3_ENDE

;***************************************************

; UND - Gatter -> LG4

;***************************************************

 

LABEL_LG4_1

       BTFSS S0,1

       GOTO LABEL_LG4_FALSE

LABEL_LG4_2

       BCF STATUS,RP0      ; Bank 0

       BTFSC PORTA,2

       GOTO LABEL_LG4_FALSE

LABEL_LG4_3

       BTFSS S1,2

       GOTO LABEL_LG4_FALSE

 

LABEL_LG4_TRUE

       BSF S0,6

       GOTO LABEL_LG4_ENDE

LABEL_LG4_FALSE

       BCF S0,6

LABEL_LG4_ENDE

;***************************************************

; RS-FLIP-FLOP -> RS1

;***************************************************

 

       BTFSC S0,6

       GOTO LABEL_RS1_RESET

       BTFSS S1,1

       GOTO LABEL_RS1_ENDE

       BSF S0,1     ; Ausgang setzen

       GOTO LABEL_RS1_ENDE

LABEL_RS1_RESET

       BCF S0,1     ; Ausgang zurücksetzen

LABEL_RS1_ENDE

 

;***************************************************

; UND - Gatter -> LG5

;***************************************************

 

LABEL_LG5_1

       BTFSS S1,2

       GOTO LABEL_LG5_FALSE

LABEL_LG5_2

       BCF STATUS,RP0      ; Bank 0

       BTFSS PORTA,3

       GOTO LABEL_LG5_FALSE

 

LABEL_LG5_TRUE

       BSF S1,0

       GOTO LABEL_LG5_ENDE

LABEL_LG5_FALSE

       BCF S1,0

LABEL_LG5_ENDE

;***************************************************

; RS-FLIP-FLOP -> RS2

;***************************************************

 

       BTFSC S0,5

       GOTO LABEL_RS2_RESET

       BTFSS S1,0

       GOTO LABEL_RS2_ENDE

       BSF S0,2     ; Ausgang setzen

       GOTO LABEL_RS2_ENDE

LABEL_RS2_RESET

       BCF S0,2     ; Ausgang zurücksetzen

LABEL_RS2_ENDE

 

;***************************************************

; UND - Gatter -> LG6

;***************************************************

 

LABEL_LG6_1

       BTFSS S0,2

       GOTO LABEL_LG6_FALSE

LABEL_LG6_2

       BCF STATUS,RP0      ; Bank 0

       BTFSC PORTA,3

       GOTO LABEL_LG6_FALSE

LABEL_LG6_3

       BTFSS S1,2

       GOTO LABEL_LG6_FALSE

 

LABEL_LG6_TRUE

       BSF S0,5

       GOTO LABEL_LG6_ENDE

LABEL_LG6_FALSE

       BCF S0,5

LABEL_LG6_ENDE

;***************************************************

; UND - Gatter -> LG7

;***************************************************

 

LABEL_LG7_1

       BTFSS S1,2

       GOTO LABEL_LG7_FALSE

LABEL_LG7_2

       BCF STATUS,RP0      ; Bank 0

       BTFSS PORTA,4

       GOTO LABEL_LG7_FALSE

 

LABEL_LG7_TRUE

       BSF S0,7

       GOTO LABEL_LG7_ENDE

LABEL_LG7_FALSE

       BCF S0,7

LABEL_LG7_ENDE

;***************************************************

; RS-FLIP-FLOP -> RS3

;***************************************************

 

       BTFSC S0,4

       GOTO LABEL_RS3_RESET

       BTFSS S0,7

       GOTO LABEL_RS3_ENDE

       BSF S0,3     ; Ausgang setzen

       GOTO LABEL_RS3_ENDE

LABEL_RS3_RESET

       BCF S0,3     ; Ausgang zurücksetzen

LABEL_RS3_ENDE

 

;***************************************************

; UND - Gatter -> LG8

;***************************************************

 

LABEL_LG8_1

       BTFSS S0,3

       GOTO LABEL_LG8_FALSE

LABEL_LG8_2

       BCF STATUS,RP0      ; Bank 0

       BTFSC PORTA,4

       GOTO LABEL_LG8_FALSE

LABEL_LG8_3

       BTFSS S1,2

       GOTO LABEL_LG8_FALSE

 

LABEL_LG8_TRUE

       BSF S0,4

       GOTO LABEL_LG8_ENDE

LABEL_LG8_FALSE

       BCF S0,4

LABEL_LG8_ENDE

;***************************************************

; UND - Gatter -> LG9

;***************************************************

 

LABEL_LG9_1

       BTFSS S0,1

       GOTO LABEL_LG9_FALSE

 

LABEL_LG9_TRUE

       BCF S1,3

       GOTO LABEL_LG9_ENDE

LABEL_LG9_FALSE

       BSF S1,3

LABEL_LG9_ENDE

;***************************************************

; UND - Gatter -> LG10

;***************************************************

 

LABEL_LG10_1

       BTFSS S0,2

       GOTO LABEL_LG10_FALSE

 

LABEL_LG10_TRUE

       BCF S1,4

       GOTO LABEL_LG10_ENDE

LABEL_LG10_FALSE

       BSF S1,4

LABEL_LG10_ENDE

;***************************************************

; UND - Gatter -> LG11

;***************************************************

 

LABEL_LG11_1

       BTFSS S0,3

       GOTO LABEL_LG11_FALSE

 

LABEL_LG11_TRUE

       BCF S1,5

       GOTO LABEL_LG11_ENDE

LABEL_LG11_FALSE

       BSF S1,5

LABEL_LG11_ENDE

;***************************************************

; UND - Gatter -> LG12

;***************************************************

 

LABEL_LG12_1

       BCF STATUS,RP0      ; Bank 0

       BTFSS PORTA,1

       GOTO LABEL_LG12_FALSE

 

LABEL_LG12_TRUE

       BSF RB0,1

       GOTO LABEL_LG12_ENDE

LABEL_LG12_FALSE

       BCF RB0,1

LABEL_LG12_ENDE

;***************************************************

; UND - Gatter -> LG13

;***************************************************

 

LABEL_LG13_1

       BTFSS S2,5

       GOTO LABEL_LG13_FALSE

 

LABEL_LG13_TRUE

       BCF S2,0

       GOTO LABEL_LG13_ENDE

LABEL_LG13_FALSE

       BSF S2,0

LABEL_LG13_ENDE

;***************************************************

; UND - Gatter -> LG14

;***************************************************

 

LABEL_LG14_1

       BTFSS S2,4

       GOTO LABEL_LG14_FALSE

 

LABEL_LG14_TRUE

       BCF S2,3

       GOTO LABEL_LG14_ENDE

LABEL_LG14_FALSE

       BSF S2,3

LABEL_LG14_ENDE

;***************************************************

; UND - Gatter -> LG15

;***************************************************

 

LABEL_LG15_1

       BTFSS S2,1

       GOTO LABEL_LG15_FALSE

 

LABEL_LG15_TRUE

       BCF S2,2

       GOTO LABEL_LG15_ENDE

LABEL_LG15_FALSE

       BSF S2,2

LABEL_LG15_ENDE

;***************************************************

; UND - Gatter -> LG16

;***************************************************

 

LABEL_LG16_1

       BTFSS S2,5

       GOTO LABEL_LG16_FALSE

LABEL_LG16_2

       BTFSS S2,4

       GOTO LABEL_LG16_FALSE

 

LABEL_LG16_TRUE

       BSF S2,6

       GOTO LABEL_LG16_ENDE

LABEL_LG16_FALSE

       BCF S2,6

LABEL_LG16_ENDE

;***************************************************

; UND - Gatter -> LG17

;***************************************************

 

LABEL_LG17_1

       BTFSS S1,3

       GOTO LABEL_LG17_FALSE

LABEL_LG17_2

       BTFSS S1,4

       GOTO LABEL_LG17_FALSE

LABEL_LG17_3

       BTFSS S2,5

       GOTO LABEL_LG17_FALSE

 

LABEL_LG17_TRUE

       BSF S2,7

       GOTO LABEL_LG17_ENDE

LABEL_LG17_FALSE

       BCF S2,7

LABEL_LG17_ENDE

;***************************************************

; UND - Gatter -> LG18

;***************************************************

 

LABEL_LG18_1

       BTFSS S0,3

       GOTO LABEL_LG18_FALSE

LABEL_LG18_2

       BTFSS S2,5

       GOTO LABEL_LG18_FALSE

LABEL_LG18_3

       BTFSS S2,1

       GOTO LABEL_LG18_FALSE

 

LABEL_LG18_TRUE

       BSF S3,0

       GOTO LABEL_LG18_ENDE

LABEL_LG18_FALSE

       BCF S3,0

LABEL_LG18_ENDE

;***************************************************

; UND - Gatter -> LG19

;***************************************************

 

LABEL_LG19_1

       BTFSS S0,1

       GOTO LABEL_LG19_FALSE

LABEL_LG19_2

       BTFSS S0,2

       GOTO LABEL_LG19_FALSE

LABEL_LG19_3

       BTFSS S0,3

       GOTO LABEL_LG19_FALSE

LABEL_LG19_4

       BTFSS S2,5

       GOTO LABEL_LG19_FALSE

 

LABEL_LG19_TRUE

       BSF S3,1

       GOTO LABEL_LG19_ENDE

LABEL_LG19_FALSE

       BCF S3,1

LABEL_LG19_ENDE

;***************************************************

; ODER - Gatter -> LG20

;***************************************************

 

LABEL_LG20_1

       BTFSC S2,6

       GOTO LABEL_LG20_TRUE

LABEL_LG20_2

       BTFSC S2,7

       GOTO LABEL_LG20_TRUE

LABEL_LG20_3

       BTFSC S3,0

       GOTO LABEL_LG20_TRUE

LABEL_LG20_4

       BTFSC S3,1

       GOTO LABEL_LG20_TRUE

 

LABEL_LG20_FALSE

       BCF S4,7

       GOTO LABEL_LG20_ENDE

LABEL_LG20_TRUE

       BSF S4,7

LABEL_LG20_ENDE

;***************************************************

; UND - Gatter -> LG21

;***************************************************

 

LABEL_LG21_1

       BTFSS S1,3

       GOTO LABEL_LG21_FALSE

LABEL_LG21_2

       BTFSS S0,2

       GOTO LABEL_LG21_FALSE

LABEL_LG21_3

       BTFSS S2,0

       GOTO LABEL_LG21_FALSE

LABEL_LG21_4

       BTFSS S2,2

       GOTO LABEL_LG21_FALSE

 

LABEL_LG21_TRUE

       BSF S3,2

       GOTO LABEL_LG21_ENDE

LABEL_LG21_FALSE

       BCF S3,2

LABEL_LG21_ENDE

;***************************************************

; UND - Gatter -> LG22

;***************************************************

 

LABEL_LG22_1

       BTFSS S2,0

       GOTO LABEL_LG22_FALSE

LABEL_LG22_2

       BTFSS S2,4

       GOTO LABEL_LG22_FALSE

 

LABEL_LG22_TRUE

       BSF S3,3

       GOTO LABEL_LG22_ENDE

LABEL_LG22_FALSE

       BCF S3,3

LABEL_LG22_ENDE

;***************************************************

; UND - Gatter -> LG23

;***************************************************

 

LABEL_LG23_1

       BTFSS S0,1

       GOTO LABEL_LG23_FALSE

LABEL_LG23_2

       BTFSS S0,2

       GOTO LABEL_LG23_FALSE

LABEL_LG23_3

       BTFSS S0,3

       GOTO LABEL_LG23_FALSE

LABEL_LG23_4

       BTFSS S2,0

       GOTO LABEL_LG23_FALSE

 

LABEL_LG23_TRUE

       BSF S3,4

       GOTO LABEL_LG23_ENDE

LABEL_LG23_FALSE

       BCF S3,4

LABEL_LG23_ENDE

;***************************************************

; ODER - Gatter -> LG24

;***************************************************

 

LABEL_LG24_1

       BTFSC S3,2

       GOTO LABEL_LG24_TRUE

LABEL_LG24_2

       BTFSC S3,3

       GOTO LABEL_LG24_TRUE

LABEL_LG24_3

       BTFSC S3,4

       GOTO LABEL_LG24_TRUE

 

LABEL_LG24_FALSE

       BCF S5,0

       GOTO LABEL_LG24_ENDE

LABEL_LG24_TRUE

       BSF S5,0

LABEL_LG24_ENDE

;***************************************************

; UND - Gatter -> LG25

;***************************************************

 

LABEL_LG25_1

       BTFSS S0,1

       GOTO LABEL_LG25_FALSE

LABEL_LG25_2

       BTFSS S1,5

       GOTO LABEL_LG25_FALSE

LABEL_LG25_3

       BTFSS S2,0

       GOTO LABEL_LG25_FALSE

 

LABEL_LG25_TRUE

       BSF S3,5

       GOTO LABEL_LG25_ENDE

LABEL_LG25_FALSE

       BCF S3,5

LABEL_LG25_ENDE

;***************************************************

; UND - Gatter -> LG26

;***************************************************

 

LABEL_LG26_1

       BTFSS S0,1

       GOTO LABEL_LG26_FALSE

LABEL_LG26_2

       BTFSS S1,4

       GOTO LABEL_LG26_FALSE

LABEL_LG26_3

       BTFSS S2,2

       GOTO LABEL_LG26_FALSE

 

LABEL_LG26_TRUE

       BSF S3,6

       GOTO LABEL_LG26_ENDE

LABEL_LG26_FALSE

       BCF S3,6

LABEL_LG26_ENDE

;***************************************************

; ODER - Gatter -> LG27

;***************************************************

 

LABEL_LG27_1

       BTFSC S3,5

       GOTO LABEL_LG27_TRUE

LABEL_LG27_2

       BTFSC S3,6

       GOTO LABEL_LG27_TRUE

 

LABEL_LG27_FALSE

       BCF S5,1

       GOTO LABEL_LG27_ENDE

LABEL_LG27_TRUE

       BSF S5,1

LABEL_LG27_ENDE

;***************************************************

; UND - Gatter -> LG28

;***************************************************

 

LABEL_LG28_1

       BTFSS S0,1

       GOTO LABEL_LG28_FALSE

LABEL_LG28_2

       BTFSS S1,4

       GOTO LABEL_LG28_FALSE

LABEL_LG28_3

       BTFSS S2,2

       GOTO LABEL_LG28_FALSE

 

LABEL_LG28_TRUE

       BSF S4,6

       GOTO LABEL_LG28_ENDE

LABEL_LG28_FALSE

       BCF S4,6

LABEL_LG28_ENDE

;***************************************************

; UND - Gatter -> LG29

;***************************************************

 

LABEL_LG29_1

       BTFSS S0,1

       GOTO LABEL_LG29_FALSE

LABEL_LG29_2

       BTFSS S2,5

       GOTO LABEL_LG29_FALSE

 

LABEL_LG29_TRUE

       BSF S4,4

       GOTO LABEL_LG29_ENDE

LABEL_LG29_FALSE

       BCF S4,4

LABEL_LG29_ENDE

;***************************************************

; UND - Gatter -> LG30

;***************************************************

 

LABEL_LG30_1

       BTFSS S0,3

       GOTO LABEL_LG30_FALSE

LABEL_LG30_2

       BTFSS S2,5

       GOTO LABEL_LG30_FALSE

 

LABEL_LG30_TRUE

       BSF S4,5

       GOTO LABEL_LG30_ENDE

LABEL_LG30_FALSE

       BCF S4,5

LABEL_LG30_ENDE

;***************************************************

; ODER - Gatter -> LG31

;***************************************************

 

LABEL_LG31_1

       BTFSC S4,6

       GOTO LABEL_LG31_TRUE

LABEL_LG31_2

       BTFSC S4,4

       GOTO LABEL_LG31_TRUE

LABEL_LG31_3

       BTFSC S4,5

       GOTO LABEL_LG31_TRUE

 

LABEL_LG31_FALSE

       BCF S2,5

       GOTO LABEL_LG31_ENDE

LABEL_LG31_TRUE

       BSF S2,5

LABEL_LG31_ENDE

;***************************************************

; UND - Gatter -> LG32

;***************************************************

 

LABEL_LG32_1

       BTFSS S1,3

       GOTO LABEL_LG32_FALSE

LABEL_LG32_2

       BTFSS S2,1

       GOTO LABEL_LG32_FALSE

LABEL_LG32_3

       BTFSS S0,2

       GOTO LABEL_LG32_FALSE

 

LABEL_LG32_TRUE

       BSF S4,3

       GOTO LABEL_LG32_ENDE

LABEL_LG32_FALSE

       BCF S4,3

LABEL_LG32_ENDE

;***************************************************

; UND - Gatter -> LG33

;***************************************************

 

LABEL_LG33_1

       BTFSS S0,1

       GOTO LABEL_LG33_FALSE

LABEL_LG33_2

       BTFSS S1,4

       GOTO LABEL_LG33_FALSE

LABEL_LG33_3

       BTFSS S2,1

       GOTO LABEL_LG33_FALSE

 

LABEL_LG33_TRUE

       BSF S4,2

       GOTO LABEL_LG33_ENDE

LABEL_LG33_FALSE

       BCF S4,2

LABEL_LG33_ENDE

;***************************************************

; UND - Gatter -> LG34

;***************************************************

 

LABEL_LG34_1

       BTFSS S1,5

       GOTO LABEL_LG34_FALSE

LABEL_LG34_2

       BTFSS S2,5

       GOTO LABEL_LG34_FALSE

 

LABEL_LG34_TRUE

       BSF S3,7

       GOTO LABEL_LG34_ENDE

LABEL_LG34_FALSE

       BCF S3,7

LABEL_LG34_ENDE

;***************************************************

; UND - Gatter -> LG35

;***************************************************

 

LABEL_LG35_1

       BTFSS S0,1

       GOTO LABEL_LG35_FALSE

LABEL_LG35_2

       BTFSS S0,2

       GOTO LABEL_LG35_FALSE

LABEL_LG35_3

       BTFSS S0,3

       GOTO LABEL_LG35_FALSE

LABEL_LG35_4

       BTFSS S2,0

       GOTO LABEL_LG35_FALSE

LABEL_LG35_5

       BTFSS S2,3

       GOTO LABEL_LG35_FALSE

 

LABEL_LG35_TRUE

       BSF S4,0

       GOTO LABEL_LG35_ENDE

LABEL_LG35_FALSE

       BCF S4,0

LABEL_LG35_ENDE

;***************************************************

; UND - Gatter -> LG36

;***************************************************

 

LABEL_LG36_1

       BTFSS S1,3

       GOTO LABEL_LG36_FALSE

LABEL_LG36_2

       BTFSS S1,4

       GOTO LABEL_LG36_FALSE

LABEL_LG36_3

       BTFSS S2,5

       GOTO LABEL_LG36_FALSE

 

LABEL_LG36_TRUE

       BSF S4,1

       GOTO LABEL_LG36_ENDE

LABEL_LG36_FALSE

       BCF S4,1

LABEL_LG36_ENDE

;***************************************************

; ODER - Gatter -> LG37

;***************************************************

 

LABEL_LG37_1

       BTFSC S4,3

       GOTO LABEL_LG37_TRUE

LABEL_LG37_2

       BTFSC S4,2

       GOTO LABEL_LG37_TRUE

LABEL_LG37_3

       BTFSC S3,7

       GOTO LABEL_LG37_TRUE

LABEL_LG37_4

       BTFSC S4,0

       GOTO LABEL_LG37_TRUE

LABEL_LG37_5

       BTFSC S4,1

       GOTO LABEL_LG37_TRUE

 

LABEL_LG37_FALSE

       BCF S2,1

       GOTO LABEL_LG37_ENDE

LABEL_LG37_TRUE

       BSF S2,1

LABEL_LG37_ENDE

;***************************************************

; UND - Gatter -> LG38

;***************************************************

 

LABEL_LG38_1

       BCF STATUS,RP0      ; Bank 0

       BTFSS PORTA,0

       GOTO LABEL_LG38_FALSE

LABEL_LG38_2

       BTFSS S4,7

       GOTO LABEL_LG38_FALSE

 

LABEL_LG38_TRUE

       BSF PORTB,3

       GOTO LABEL_LG38_ENDE

LABEL_LG38_FALSE

       BCF STATUS,RP0      ; Bank 0

       BCF PORTB,3

LABEL_LG38_ENDE

;***************************************************

; UND - Gatter -> LG39

;***************************************************

 

LABEL_LG39_1

       BTFSS PORTA,0

       GOTO LABEL_LG39_FALSE

LABEL_LG39_2

       BTFSS S5,0

       GOTO LABEL_LG39_FALSE

 

LABEL_LG39_TRUE

       BSF PORTB,2

       GOTO LABEL_LG39_ENDE

LABEL_LG39_FALSE

       BCF STATUS,RP0      ; Bank 0

       BCF PORTB,2

LABEL_LG39_ENDE

;***************************************************

; UND - Gatter -> LG40

;***************************************************

 

LABEL_LG40_1

       BTFSS PORTA,0

       GOTO LABEL_LG40_FALSE

LABEL_LG40_2

       BTFSS S2,4

       GOTO LABEL_LG40_FALSE

 

LABEL_LG40_TRUE

       BSF S5,5

       GOTO LABEL_LG40_ENDE

LABEL_LG40_FALSE

       BCF S5,5

LABEL_LG40_ENDE

;***************************************************

; UND - Gatter -> LG41

;***************************************************

 

LABEL_LG41_1

       BCF STATUS,RP0      ; Bank 0

       BTFSS PORTA,0

       GOTO LABEL_LG41_FALSE

LABEL_LG41_2

       BTFSS S2,5

       GOTO LABEL_LG41_FALSE

 

LABEL_LG41_TRUE

       BSF S5,2

       GOTO LABEL_LG41_ENDE

LABEL_LG41_FALSE

       BCF S5,2

LABEL_LG41_ENDE

;***************************************************

; UND - Gatter -> LG42

;***************************************************

 

LABEL_LG42_1

       BCF STATUS,RP0      ; Bank 0

       BTFSS PORTA,0

       GOTO LABEL_LG42_FALSE

LABEL_LG42_2

       BTFSS S2,1

       GOTO LABEL_LG42_FALSE

 

LABEL_LG42_TRUE

       BSF S5,3

       GOTO LABEL_LG42_ENDE

LABEL_LG42_FALSE

       BCF S5,3

LABEL_LG42_ENDE

;***************************************************

; Mono-Flop -> MF1

;***************************************************

 

; Läuft der Impuls ?

 

       BTFSC MF1_FD,1

       GOTO LABEL_MF1_CHKTIME

 

; Test auf positive Flanke

 

       BTFSC MF1_FD,0

       GOTO LABEL_MF1_SETFD

       BTFSS S5,1

       GOTO LABEL_MF1_SETFD

 

 

LABEL_MF1_RESET

 

       CLRF MF1

       CLRF MF1_HI

       BSF MF1_FD,1

       BSF S5,4

 

LABEL_MF1_CHKTIME

 

       MOVLW 7

       SUBWF MF1_HI,W

       BTFSS STATUS,ZERO

       GOTO LABEL_MF1_CHECK

       MOVLW 161

       SUBWF MF1,W

LABEL_MF1_CHECK

       BTFSS STATUS,CARRY

       GOTO LABEL_MF1_SETFD

LABEL_MF1_TO

 

       BCF MF1_FD,1

       BCF S5,4

 

LABEL_MF1_SETFD

 

       BTFSS S5,1

       GOTO LABEL_MF1_CLR

       BSF MF1_FD,0

       GOTO LABEL_MF1_ENDE

LABEL_MF1_CLR

       BCF MF1_FD,0

 

LABEL_MF1_ENDE

 

;***************************************************

; UND - Gatter -> LG43

;***************************************************

 

LABEL_LG43_1

       BTFSS S5,1

       GOTO LABEL_LG43_FALSE

LABEL_LG43_2

       BTFSS S5,4

       GOTO LABEL_LG43_FALSE

 

LABEL_LG43_TRUE

       BSF S2,4

       GOTO LABEL_LG43_ENDE

LABEL_LG43_FALSE

       BCF S2,4

LABEL_LG43_ENDE

;****************************************

 

       GOTO MAIN

 

 

       END