User Tools

Site Tools


usage:usage:overview

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision Both sides next revision
usage:usage:overview [2013/05/10 17:35]
rhaseitl created
usage:usage:overview [2013/06/01 17:48]
carsten
Line 1: Line 1:
-test+< 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.txt · Last modified: 2013/06/01 17:59 by carsten