User Tools

Site Tools


usage:usage:overview

This is an old revision of the document!


< code asm> ; * ; Programm PATermV1.asm ; Dieses PA-Terminalprogrammes: Es beinhaltet einen 8 stelligen (4 Byte) ; Dekadischen Zähler zum zählen der Hübe eines Pressluftantriebes. Nach ; dem Aufzählen wird der BCD Stelleninhalt für die Siebensegmentanzeige ; codiert und anschliessend seriell an die Anzeige versandt. ; *

; Seriennummer Antrieb: SN equ d'00000137' ; Terminal Nr. 1

; Register ; Namen-Registeradressen (Festwert): ; Bank 0: ; Bank 1: INDF equ 0x00 ; ← TMR0 equ 0x01 ; Option Register PLC equ 0x02 ; ← STATUS equ 0x03 ; ← FSR equ 0x04 ; ← PORTA set 0x05 ; TRISA PORTB set 0x06 ; TRISB EEDATA equ 0x08 ; ECON1 EEADR equ 0x09 ; ECON2 PCLATH equ 0x0A ; ← INTCON equ 0x0B ; ←

; Bank 1: TRISA set 0x05 TRISB set 0x06 EECON1 equ 0x08 EECON2 equ 0x09

; Variablen

ByteNr set 0x0C Anzeige set 0x0D Anzeigewert set 0x0E Testwert set 0x0F

B3 set 0x10 ; Höchste Doppelstelle Anzeige: Mio. und Zehnmio. B2 set 0x11 ; dritte Doppelstelle Anzeige: Zehntausender und Hundertausender B1 set 0x12 ; zweite Doppelstelle Anzeige: Hunderter und Tausender B0 set 0x13 ; niedrigstes Doppelstelle Anzeige: Einer und Zehner

B3? set 0x14 ; Redundanzstellen B2? set 0x15 B1? set 0x16 B0? set 0x17

B3?? set 0x18 B2?? set 0x19 B1?? set 0x1A B0?? set 0x1B

; ** ESpeicherA set 0x1C PWMa set 0x1D Senden set 0x1E ; Speichert schon gesendet Status PWMs set 0x1F

A0 set 0x20 ; Adressspeicher MSB (ID PA-Terminal) A1 set 0x21 ; Adressspeicher LSB F0 set 0x22 ; Fehlerbyte MSB F1 set 0x23 ; Fehlerbyte LSB

A0? set 0x24 ; Redundanzstellen A1? set 0x25 ; F0? set 0x26 ; F1? set 0x27 ;

A0?? set 0x28 ; A1?? set 0x29 ; F0?? set 0x2A ; F1?? set 0x2B ;

Schleife1 set 0x2C Schleife2 set 0x2D Schleife3 set 0x2E Schleife4 set 0x2F

Telnr set 0x30 SERBUF set 0x31 Schleife5 set 0x3C Schleife6 set 0x3D Bitindex set 0x3D RAM1 set 0x3E RAM2 set 0x3F

Steuer set 0x40 Adresse0 set 0x41 Adresse1 set 0x42 D1 set 0x43 D2 set 0x44 D3 set 0x45 D4 set 0x46 identisch set 0x47 Fehler set 0x48 Fehlkont set 0x49 ; Fehlerkontrollbyte korrekt set 0x4A TS set 0x4B Sprung set 0x4C RAM set 0x4D Vorgabe set 0x4E ; Vergleich set 0x4F ;

; Konstanten

PWMF equ 0x01 ; Pulsweitenschwelle ( <an, > aus) PWMm equ 0x14 ; Pulsweitenzyklusmaximalwert

;Bitnamen c equ 0 z equ 2 RP0 equ 5 RP1 equ 6 IRP equ 7 RBIF equ 0

GIE equ 0x07 WR equ 0x01 WREN equ 0x02 RD equ 0x00

; PORTA ClockLED equ 2 ; Pin1: Anzeige Clock (Bit 2 Port A) serLED equ 3 ; Pin2: Serielle Daten zur Anzeige (Bit 3 Port A) Strobe equ 4 ; Pin3: Strobe zur Anzeige Übernahme (Bit 4 Port A) OutEnabl equ 1 ; Pin18: Anzeige an/aus (Bit 1 Port A) Moved equ 0 ; Pin17: Moved (inside) Signal (eigentlich Hardware PortA.P0) uSchwelle equ D'16' ; oSchwelle equ D'240';

; PortB

		; Hardware (Jumper) Sperre Nullung Zählerstand: 

ZeroReset equ 1 ; Low = Nullsetzen gesperrt, high Nullsetzen möglich ReportTrans equ 2 ; Serielle Daten Ausgabe Direction equ 3 ; Richtung der Halbduplex RS485: low = receive, high = send iniDataSave equ 4 ; veranlassse Datensicherung: high = on power,

		; low = Datensicherung ausführen!

Commands equ 5 ; Received Remote Commands Program equ 6 ; In Curcuit Programm Data ProClock equ 7 ; Inserie-Programmierclock

; Makrodefinitionen bank0 macro

	bcf	STATUS, RP0
	endm

bank1 macro

	bsf	STATUS, RP0
	endm
	org	0x00	
	goto 	main

; hier potetielle Interrups

main

	BSF	STATUS, RP0	; Disable Interupts
	BCF	INTCON, GIE	
	goto	Start

; Interruptruitine DATASAVE an H'04' DATASAVE

	Call	Interrupt	; Interrupt-Einsprungpunkt
	Sleep
	return

Start

	; Initialisierung
	BSF	STATUS, RP0	; Bank1
	MOVLW	B'10011000'	; Enable global interlock and special RB0 
	MOVWF	INTCON		; Schreibe ins Inerlockkontrollregister
	BCF	STATUS, RP0	; Bank0
	MOVLW	H'00'
	MOVWF	ESpeicherA	; Lade EEpromstartwert

; IO-Port Einrichtung

	bank0	; adressiere Bank0
	CLRF	PORTA
	bank1	; adressiere Bank1
	MOVLW	B'00000001'	; 7x Ausgang, 1x Eingang
	MOVWF 	TRISA		; Setze Richtung
	bank0	; adressiere Bank0
	CLRF	PORTB
	bank1	; adressiere Bank1
	MOVLW	B'00110011'	; 4x Ausgang, 4x Eingang
	MOVWF 	TRISB		; Setze Richtung
	bank0			; adressiere Bank0
	BTFSS	PORTB, 1	; Wenn Inijumper offen:  ZeroReset = H (EE-> Null),
	goto	LeseEE		; sonst, wenn gesetzt:   ZeroReset = L: EEprom>RAM
	Call	Nullsetzen	; Nullsetzen EEPROM 1,3ms

LeseEE Call HoleEE ; 0,9 ms (→ 2,4ms) </code>

usage/usage/overview.1370101709.txt.gz · Last modified: 2013/06/01 17:48 by carsten