hi hab hier einen code ist der soweit richtig
dieser Code soll erstens die ports initialisieren und am schluss einen
timer unter RA4 starten der bei allen lows hochzählt
list p=16F84A ; list directive to define processor
#include <p16F84A.inc> ; processor specific variable
definitions
__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _RC_OSC
; '__CONFIG' directive is used to embed configuration data 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
w_temp EQU 0x0C ; variable used for context saving
status_temp EQU 0x0D ; variable used for context saving
w_copy Equ 0x20 ; Backup für Akkuregister
s_copy Equ 0x21 ; Backup für Statusregister
;**********************************************************************
ORG 0x000 ; processor reset vector
goto main ; go to beginning of program
ORG 0x004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
; isr code can go here or be located as a call subroutine elsewhere
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
main
;*****************************************************
;* hier werden die einzelnen Ein-/Ausgänge und *
;* die Bänke 0/1 initialisiert *
;*****************************************************
;*************************
;* Bank Write Verify *
;*************************
BCF STATUS, RP0 ; Bank 0
; ; hier kann irgendein
; ; Code rein
MOVF EEDATA, W ; muss in Bank 0 sein
BSF STATUS, RP0 ; Bank 1
Read
BSF EECON1, RD ; Ja, lies den Inhalt von Write
BCF STATUS, RP0 ; Bank 0
SUBWF EEDATA, W ;
BTFSS STATUS, Z ; ist ein unterschied 0?
;GOTO Write_ERR ; No, schreib Error
;*************
;* PortA *
;*************
BCF STATUS, RP0 ;
CLRF PORTA ; Initialisierung von PortA
; durch löschen des Data latches
BSF STATUS, RP0 ; Markiere Bank 1
MOVLW 0x0F ; nutzen für den DatenVerzeichniss
MOVWF TRISA ; SET RA<3:0> als Input
; SET RA4 als Output
;*************
;* PortB *
;*************
BCF STATUS, RP0 ;
CLRF PORTB ; Initialisierung von PortA
; durch löschen des Data latches
BSF STATUS, RP0 ; Markiere Bank 1
MOVLW 0xCF ; nutzen für den DatenVerzeichniss
MOVWF TRISB ; SET RA<3:0> als Input
; SET RB<5:4> als Output
; SET RB<7:6> als Output
;*****************************************************
;* hiermit wird der Timer0 mit dem RA4 verbunden *
;* es wird der eigene Takt verwendet und nich *
;* der PIC-Takt *
;*****************************************************
BSF T0CS, 1 ; hier wird in der Speicherzelle T0SC die 1
gesetzt
MOVF T0CS, 1 ; nun wird es unter der Speicherzelle gesichert
;*****************************************************
;* hier drunter wird die Low-Flanke ausgewählt *
;* für RA4, damit er weiss wo er hochzählen soll *
;*****************************************************
BSF T0SE, 0 ; hier wird für RA4 die Low Flake gewählt
MOVF T0SE, 1 ; hier wird es unter der Speicherzelle gesichert
;*****************************************************
;* hier drunter wird nun der Inhalt des gezählten *
;* gesichert in dem Register TMR0 *
;*****************************************************
MOVWF T0SE ; hier wird nun das Register auf die
Speicherzelle
geschrieben
MOVF TMR0, 0 ; das ist das Timer-Register
;*****************************************************
;* hier soll nun eine Überprüfung stattfinden *
;*****************************************************
END
also das was von eurer seite noch cool wäre wenn ihr mir irgendwie
erklärt wir man nun macht das einen bestimmten raus sucht und da dann
anfängt mit etwas anderem
danke im vorraus