;************************************************* *********************
; This file is a basic code template for object module code *
; generation on the PIC16F54. This file contains the *
; basic code building blocks to build upon. *
; *
; Refer to the MPASM User's Guide for additional information on *
; features of the assembler and linker. *
; *
; Refer to the respective PIC data sheet for additional *
; information on the instruction set. *
; *
;************************************************* *********************
; *
; Filename: BioPic_V01.asm *
; Date: *
; File Version: *
; *
; Author: *
; Company: *
; *
;************************************************* *********************
; *
; Files required: P16F54.INC *
; *
; *
; *
;************************************************* *********************
; *
; Notes: *
; *
; *
; *
; *
;************************************************* *********************

list p=16F54 ; list directive to define processor
#include <p16F54.inc> ; processor specific variable definitions

__CONFIG _CP_ON & _WDT_ON & _HS_OSC

; '__CONFIG' directive is used to embed configuration word within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.

;***** VARIABLE DEFINITIONS
TEMP_VAR UDATA
HeizTime0 res 1
HeizTime1 res 1
Sekunde res 1
HeizTime3 res 1
PrellTime res 1


;************************************************* *********************
RESET_VECTOR CODE 0x1FF ; processor reset vector
goto start

MAIN CODE 0x000
start
Init
CLRWDT ; Watchdog zurücksetzen
movlw 0x0C ; Definition für Port A laden
tris PORTA ; Definitioon in Port A eintragen
movlw 0x9F ; Definition für Port B laden
tris PORTB ; Definitioon in Port B eintragen
movlw 0x07 ; Definition für Option Register laden
option ; Definitioon in Option eintragen
CLRWDT ; Watchdog zurücksetzen

;==================================
;=== ===
;=== Hauptporogramm Schleife ===
;=== ===
;==================================
Anfang
goto Schritt_1_abfrage
CLRWDT ; Watchdog zurücksetzen ; Watchdog zurücksetzen
goto Anfang

;==================================
;=== ===
;=== Ansteuerung Summer wenn OK ===
;=== ===
;==================================

Schritt_1_abfrage
CLRWDT
BTfss PORTB,0 ; Dir auf 0?
goto Schritt1_links ; beginne Schritte
BTfsc PORTB,1 ;Step auf 1?
goto schritt_1

goto Schritt_1_abfrage

Schritt1_links
CLRWDT
BTfsc PORTB,1 ;Step auf 1?
goto schritt_8
goto Schritt_1_abfrage

Schritt_2_abfrage
CLRWDT
BTfss PORTB,0 ; Dir auf 0?
goto Schritt2_links ; beginne Schritte
BTfsc PORTB,1 ;Step auf 1?
goto schritt_2
goto Schritt_2_abfrage

Schritt2_links
CLRWDT
BTfsc PORTB,1 ;Step auf 1?
goto schritt_1
goto Schritt_2_abfrage

Schritt_3_abfrage
CLRWDT
BTfss PORTB,0 ; Dir auf 0?
goto Schritt3_links ; beginne Schritte
BTfsc PORTB,1 ;Step auf 1?
goto schritt_3
goto Schritt_3_abfrage

Schritt3_links
CLRWDT
BTfsc PORTB,1 ;Step auf 1?
goto schritt_2
goto Schritt_3_abfrage



Schritt_4_abfrage
CLRWDT
BTfss PORTB,0 ; Dir auf 0?
goto Schritt4_links ; beginne Schritte
BTfsc PORTB,1 ;Step auf 1?
goto schritt_4
goto Schritt_4_abfrage

Schritt4_links
CLRWDT
BTfsc PORTB,1 ;Step auf 1?
goto schritt_3
goto Schritt_4_abfrage



Schritt_5_abfrage
CLRWDT
BTfss PORTB,0 ; Dir auf 0?
goto Schritt5_links ; beginne Schritte
BTfsc PORTB,1 ;Step auf 1?
goto schritt_5
goto Schritt_5_abfrage

Schritt5_links
CLRWDT
BTfsc PORTB,1 ;Step auf 1?
goto schritt_4
goto Schritt_5_abfrage

Schritt_6_abfrage
CLRWDT
BTfss PORTB,0 ; Dir auf 0?
goto Schritt6_links ; beginne Schritte
BTfsc PORTB,1 ;Step auf 1?
goto schritt_6
goto Schritt_6_abfrage

Schritt6_links
CLRWDT
BTfsc PORTB,1 ;Step auf 1?
goto schritt_5
goto Schritt_6_abfrage


Schritt_7_abfrage
CLRWDT
BTfss PORTB,0 ; Dir auf 0?
goto Schritt7_links ; beginne Schritte
BTfsc PORTB,1 ;Step auf 1?
goto schritt_7
goto Schritt_7_abfrage

Schritt7_links
CLRWDT
BTfsc PORTB,1 ;Step auf 1?
goto schritt_6
goto Schritt_7_abfrage

Schritt_8_abfrage
CLRWDT
BTfss PORTB,0 ; Dir auf 0?
goto Schritt8_links ; beginne Schritte
BTfsc PORTB,1 ;Step auf 1?
goto schritt_8
goto Schritt_8_abfrage

Schritt8_links
CLRWDT
BTfsc PORTB,1 ;Step auf 1?
goto schritt_7
goto Schritt_8_abfrage





schritt_1
CLRWDT
BSF PORTA,0
BCF PORTA,1
BCF PORTB,5
BSF PORTB,6
BTfss PORTB,0 ; Dir auf 0?
goto Schritt_prell1
BTfss PORTB,1 ;Step auf 0?
goto Schritt_2_abfrage
goto schritt_1

Schritt_prell1
CLRWDT
BTfss PORTB,1 ;Step auf 0?
goto Schritt_1_abfrage
goto schritt_1

schritt_2
CLRWDT
BSF PORTA,0
BCF PORTA,1
BCF PORTB,5
BCF PORTB,6
BTfss PORTB,0 ; Dir auf 0?
goto Schritt_prell2
BTfss PORTB,1 ;Step auf 0?
goto Schritt_3_abfrage
goto schritt_2

Schritt_prell2
CLRWDT
BTfss PORTB,1 ;Step auf 0?
goto Schritt_2_abfrage
goto schritt_2







schritt_3
CLRWDT
BSF PORTA,0
BSF PORTA,1
BCF PORTB,5
BCF PORTB,6
BTfss PORTB,0 ; Dir auf 0?
goto Schritt_prell3
BTfss PORTB,1 ;Step auf 0?
goto Schritt_4_abfrage
goto schritt_3

Schritt_prell3
CLRWDT
BTfss PORTB,1 ;Step auf 0?
goto Schritt_3_abfrage
goto schritt_3





schritt_4
CLRWDT
BCF PORTA,0
BSF PORTA,1
BCF PORTB,5
BCF PORTB,6
BTfss PORTB,0 ; Dir auf 0?
goto Schritt_prell4
BTfss PORTB,1 ;Step auf 0?
goto Schritt_5_abfrage
goto schritt_4

Schritt_prell4
CLRWDT
BTfss PORTB,1 ;Step auf 0?
goto Schritt_4_abfrage
goto schritt_4


schritt_5
CLRWDT
BCF PORTA,0
BSF PORTA,1
BSF PORTB,5
BCF PORTB,6
BTfss PORTB,0 ; Dir auf 0?
goto Schritt_prell5
BTfss PORTB,1 ;Step auf 0?
goto Schritt_6_abfrage
goto schritt_5

Schritt_prell5
CLRWDT
BTfss PORTB,1 ;Step auf 0?
goto Schritt_5_abfrage
goto schritt_5

schritt_6
CLRWDT
BCF PORTA,0
BCF PORTA,1
BSF PORTB,5
BCF PORTB,6
BTfss PORTB,0 ; Dir auf 0?
goto Schritt_prell6
BTfss PORTB,1 ;Step auf 0?
goto Schritt_7_abfrage
goto schritt_6

Schritt_prell6
CLRWDT
BTfss PORTB,1 ;Step auf 0?
goto Schritt_6_abfrage
goto schritt_6


schritt_7
CLRWDT
BCF PORTA,0
BCF PORTA,1
BSF PORTB,5
BSF PORTB,6
BTfss PORTB,0 ; Dir auf 0?
goto Schritt_prell7
BTfss PORTB,1 ;Step auf 0?
goto Schritt_8_abfrage
goto schritt_7

Schritt_prell7
CLRWDT
BTfss PORTB,1 ;Step auf 0?
goto Schritt_7_abfrage
goto schritt_7
schritt_8
CLRWDT
BCF PORTA,0
BCF PORTA,1
BCF PORTB,5
BSF PORTB,6
BTfss PORTB,0 ; Dir auf 0?
goto Schritt_prell8
BTfss PORTB,1 ;Step auf 0?
goto Schritt_1_abfrage
goto schritt_8

Schritt_prell8
CLRWDT
BTfss PORTB,1 ;Step auf 0?
goto Schritt_8_abfrage
goto schritt_8



RETLW 0
; remaining code goes here
END ; directive 'end of program'