Hallo zusammnen, Wie kann man in HI-Tech Compiler einen Pin steuern, sprich auf High oder Low legen? beim CCS gibt es die Build-In Funktion output_high (Testpin) und output_low (Testpin). wie sieht es im Hi-Tech compiler aus? Danke Sadier
> Wie kann man in HI-Tech Compiler einen Pin steuern Das kommt ganz auf den verwendeten Controller an... :-/ > Wie kann man in HI-Tech Compiler einen Pin steuern Gibts da evtl. sogar ein Manual dazu? Oder Beispielprogramme?
Vielleicht solltest du noch mal die Grundlagen der µC-Technik durcharbeiten...Deine Frage lässt darauf schließen, dass hier noch Defizite vorhanden sind. Außerdem gibt es im Programmverzeichnis des Compilers eine pdf, sozusagen das Handbuch. Zur Info vorab, es reicht nicht irgendeine Funktion für das Setzen eines Portspins auszuführen. Vorher müssen jede Menge Register zur Initialisierung des µC gesetzt werden.
Hallo Zusammen, Danke für eure Antworten. Also im Handbuch von dem Hi-Tech Compiler steht nichts drin. Ein Bespielprogramm verwendet den Befehl : Testpin_High(), Testpin muss man vorher definieren... der Compiler bringt mir immer die fehler meldung: Error [499] ; 0. undefined symbol: _Testpin_HIGH(example.obj) Es handelt sich um den PIC16F688 Danke Sadier
>Testpin muss man >vorher definieren... der Compiler bringt mir immer die fehler meldung: >Error [499] ; 0. undefined symbol: > _Testpin_HIGH(example.obj) Nun, da dürfte wohl ein innerer Zusammenhang bestehen. Beitrag ""Hilfe", "funktioniert nicht", funktioniert nicht."
> Testpin_High such mal im gesamten Installationsverzeichnis in allen *.c und *.h Files nach diesem Text. Such dann auch noch nach Stichwörtern wie "Pin*" und "Port*". Irgendwo wirst du schon was finden. > Testpin_High() > _Testpin_HIGH C ist Case-Sensitiv. Das weißt du? BTW: Was ist das für ein Jagdhund, den man zum Jagen tragen muß? :-o
poste doch mal den gesamten code des beispiels! entweder ist Testpin_High() soetwas: #define Testpin_High() PORTA = 0x01; // dann wird es wahrscheinlich in der xyz.h datei sein oder es ist eine Funktion, die an anderer Stelle im Code steckt. z.b.: void Testpin_High() { TRISA = ... PORTA = 0x01; } // dann wird es wohl in einer C-Datei sein wie gesagt, poste den code!!!
#include <htc.h> __CONFIG(INTCLK & BOREN & PWRTDIS & MCLRDIS & UNPROTECT ); //__EEPROM_DATA(0, 1, 2, 3, 4, 5, 6, 7); #define Testpin RA2 #define SpBuffer 0x00 int READEEPROM (int Addresse); void WRITEEEPROM (int Addresse, int Wert); void main (void) { int Testvar; __EEPROM_DATA(0, 0, 0, 0, 0, 0, 0, 0); __EEPROM_DATA(1, 1, 1, 1, 1, 1, 1, 1); Testpin_HIGH(); //RA2 = 1; //int value = 0x01; //int address = 0x00; //eeprom_write(address,value); //while(WR) continue; //eeprom_read (SpBuffer); Testvar = READEEPROM(SpBuffer); } int READEEPROM( int Addresse ) { int Help; EEADR = Addresse; RD = 1; //Help= EEDAT; return (Help); } void WRITEEEPROM(int Addresse, int Wert) { EEADR = Addresse; //EEDAT = Wert; WREN = 1; while(WR) continue; }
> wo ist die htc.h??
Das ist unwichtig, denn in der ist
1 | Testpin_HIGH(); |
nicht definiert, denn sonst würde ein anderer Fehler kommen ;-) Siehe dort im Beitrag "Re: HI-Tech Compiler"
Poste mal das Beispiel, inkl. der *.h oder *.c Dateien die dort eingebunden werden.
Anbei dir HTC.H Datei #ifndef HTC_H #define HTC_H /* Definitions for HTC_EDITION values */ #define _LITE_ 0 #define _STD_ 1 #define _PRO_ 2 /* common definitions */ #define ___mkstr1(x) #x #define ___mkstr(x) ___mkstr1(x) /* HI-TECH PICC / PICC-Lite compiler */ #if defined(_PICC_) || defined(_PICCLITE_) #include <pic.h> #endif /* HI-TECH PICC-18 compiler */ #if defined(_PICC18_) #include <pic18.h> #endif /* HI-TECH dsPICC compiler */ #if defined(_DSPICC_) #include <dspic.h> #endif /* HI-TECH HTKC compiler for Holtek MCUs */ #if defined(HTKC) #include <htk.h> #endif /* HI-TECH C for 8051 */ #if defined(_HTC8051_) #include <8051.h> #endif /* HI-TECH C for MSP430 */ #if defined(_MSP430C_) #include <msp430.h> #endif /* HI-TECH C for ARM */ #if defined(_ARMC_) #include <arm.h> #endif /* HI-TECH HTFSC compiler for Fortune MCUs */ #if defined(_HTFSC_) || defined(HTFSC) #include <htfsc.h> #endif /* HI-TECH C for PIC32 */ #if defined(_PICC32_) #include <pic32.h> #endif /* HI-TECH C for PSOC */ #if defined(_HCPSOC_) #include <psoc.h> #endif #endif
Schon mal im HI-Tech Forum gesucht? http://forum.htsoft.com/all/showflat.php/Cat/0/Number/115422/Main/115292 Zitat:
1 | Then I realized about 5 min after I posted that I forgot to include pic.h in my library! |
Müsstest du deine CPU noch irgendwie definieren?
Ich habe auch die PIC Datei ins Projekt eingebunden: #ifndef HTC_H #warning Header file pic16f688.h included directly. Use #include <htc.h> instead. #endif /* header file for the MICROCHIP PIC microcontroller * PIC16F688 */ #ifndef __PIC16F688_H #define __PIC16F688_H // Special function register definitions volatile unsigned char INDF @ 0x00; volatile unsigned char TMR0 @ 0x01; volatile unsigned char PCL @ 0x02; volatile unsigned char STATUS @ 0x03; unsigned char FSR @ 0x04; volatile unsigned char PORTA @ 0x05; volatile unsigned char PORTC @ 0x07; volatile unsigned char PCLATH @ 0x0A; volatile unsigned char INTCON @ 0x0B; volatile unsigned char PIR1 @ 0x0C; volatile unsigned char TMR1L @ 0x0E; volatile unsigned char TMR1H @ 0x0F; volatile unsigned char T1CON @ 0x10; volatile unsigned char BAUDCTL @ 0x11; unsigned char SPBRGH @ 0x12; unsigned char SPBRG @ 0x13; volatile unsigned char RCREG @ 0x14; volatile unsigned char TXREG @ 0x15; volatile unsigned char TXSTA @ 0x16; volatile unsigned char RCSTA @ 0x17; volatile unsigned char WDTCON @ 0x18; volatile unsigned char CMCON0 @ 0x19; unsigned char CMCON1 @ 0x1A; volatile unsigned char ADRESH @ 0x1E; volatile unsigned char ADCON0 @ 0x1F; unsigned char OPTION @ 0x81; volatile unsigned char TRISA @ 0x85; volatile unsigned char TRISC @ 0x87; unsigned char PIE1 @ 0x8C; volatile unsigned char PCON @ 0x8E; volatile unsigned char OSCCON @ 0x8F; unsigned char OSCTUNE @ 0x90; unsigned char ANSEL @ 0x91; unsigned char WPUA @ 0x95; unsigned char IOCA @ 0x96; volatile unsigned char EEDATH @ 0x97; volatile unsigned char EEADRH @ 0x98; unsigned char VRCON @ 0x99; volatile unsigned char EEDAT @ 0x9A; /* Alternate definition */ volatile unsigned char EEDATA @ 0x9A; volatile unsigned char EEADR @ 0x9B; /* Alternate definition */ volatile unsigned char EEADRL @ 0x9B; volatile unsigned char EECON1 @ 0x9C; volatile unsigned char EECON2 @ 0x9D; volatile unsigned char ADRESL @ 0x9E; unsigned char ADCON1 @ 0x9F; /* Definitions for STATUS register */ volatile bit CARRY @ ((unsigned)&STATUS*8)+0; volatile bit DC @ ((unsigned)&STATUS*8)+1; volatile bit ZERO @ ((unsigned)&STATUS*8)+2; volatile bit PD @ ((unsigned)&STATUS*8)+3; volatile bit TO @ ((unsigned)&STATUS*8)+4; bit RP0 @ ((unsigned)&STATUS*8)+5; bit RP1 @ ((unsigned)&STATUS*8)+6; bit IRP @ ((unsigned)&STATUS*8)+7; /* Definitions for PORTA register */ volatile bit RA0 @ ((unsigned)&PORTA*8)+0; volatile bit RA1 @ ((unsigned)&PORTA*8)+1; volatile bit RA2 @ ((unsigned)&PORTA*8)+2; volatile bit RA3 @ ((unsigned)&PORTA*8)+3; volatile bit RA4 @ ((unsigned)&PORTA*8)+4; volatile bit RA5 @ ((unsigned)&PORTA*8)+5; /* Definitions for PORTC register */ volatile bit RC0 @ ((unsigned)&PORTC*8)+0; volatile bit RC1 @ ((unsigned)&PORTC*8)+1; volatile bit RC2 @ ((unsigned)&PORTC*8)+2; volatile bit RC3 @ ((unsigned)&PORTC*8)+3; volatile bit RC4 @ ((unsigned)&PORTC*8)+4; volatile bit RC5 @ ((unsigned)&PORTC*8)+5; /* Definitions for INTCON register */ volatile bit RAIF @ ((unsigned)&INTCON*8)+0; volatile bit INTF @ ((unsigned)&INTCON*8)+1; volatile bit T0IF @ ((unsigned)&INTCON*8)+2; bit RAIE @ ((unsigned)&INTCON*8)+3; bit INTE @ ((unsigned)&INTCON*8)+4; bit T0IE @ ((unsigned)&INTCON*8)+5; bit PEIE @ ((unsigned)&INTCON*8)+6; volatile bit GIE @ ((unsigned)&INTCON*8)+7; /* Definitions for PIR1 register */ volatile bit TMR1IF @ ((unsigned)&PIR1*8)+0; volatile bit TXIF @ ((unsigned)&PIR1*8)+1; volatile bit OSFIF @ ((unsigned)&PIR1*8)+2; volatile bit C1IF @ ((unsigned)&PIR1*8)+3; volatile bit C2IF @ ((unsigned)&PIR1*8)+4; volatile bit RCIF @ ((unsigned)&PIR1*8)+5; volatile bit ADIF @ ((unsigned)&PIR1*8)+6; volatile bit EEIF @ ((unsigned)&PIR1*8)+7; /* Definitions for T1CON register */ bit TMR1ON @ ((unsigned)&T1CON*8)+0; bit TMR1CS @ ((unsigned)&T1CON*8)+1; bit T1SYNC @ ((unsigned)&T1CON*8)+2; bit T1OSCEN @ ((unsigned)&T1CON*8)+3; bit T1CKPS0 @ ((unsigned)&T1CON*8)+4; bit T1CKPS1 @ ((unsigned)&T1CON*8)+5; bit T1GE @ ((unsigned)&T1CON*8)+6; bit T1GINV @ ((unsigned)&T1CON*8)+7; /* Definitions for BAUDCTL register */ volatile bit ABDEN @ ((unsigned)&BAUDCTL*8)+0; volatile bit WUE @ ((unsigned)&BAUDCTL*8)+1; bit BRG16 @ ((unsigned)&BAUDCTL*8)+3; volatile bit SCKP @ ((unsigned)&BAUDCTL*8)+4; volatile bit RCIDL @ ((unsigned)&BAUDCTL*8)+6; volatile bit ABDOVF @ ((unsigned)&BAUDCTL*8)+7; /* Definitions for TXSTA register */ volatile bit TX9D @ ((unsigned)&TXSTA*8)+0; volatile bit TRMT @ ((unsigned)&TXSTA*8)+1; bit BRGH @ ((unsigned)&TXSTA*8)+2; bit SENDB @ ((unsigned)&TXSTA*8)+3; bit SYNC @ ((unsigned)&TXSTA*8)+4; bit TXEN @ ((unsigned)&TXSTA*8)+5; bit TX9 @ ((unsigned)&TXSTA*8)+6; bit CSRC @ ((unsigned)&TXSTA*8)+7; /* Definitions for RCSTA register */ volatile bit RX9D @ ((unsigned)&RCSTA*8)+0; volatile bit OERR @ ((unsigned)&RCSTA*8)+1; volatile bit FERR @ ((unsigned)&RCSTA*8)+2; bit ADDEN @ ((unsigned)&RCSTA*8)+3; bit CREN @ ((unsigned)&RCSTA*8)+4; bit SREN @ ((unsigned)&RCSTA*8)+5; bit RX9 @ ((unsigned)&RCSTA*8)+6; bit SPEN @ ((unsigned)&RCSTA*8)+7; /* Definitions for WDTCON register */ bit SWDTEN @ ((unsigned)&WDTCON*8)+0; bit WDTPS0 @ ((unsigned)&WDTCON*8)+1; bit WDTPS1 @ ((unsigned)&WDTCON*8)+2; bit WDTPS2 @ ((unsigned)&WDTCON*8)+3; bit WDTPS3 @ ((unsigned)&WDTCON*8)+4; /* Definitions for CMCON0 register */ bit CM0 @ ((unsigned)&CMCON0*8)+0; bit CM1 @ ((unsigned)&CMCON0*8)+1; bit CM2 @ ((unsigned)&CMCON0*8)+2; bit CIS @ ((unsigned)&CMCON0*8)+3; bit C1INV @ ((unsigned)&CMCON0*8)+4; bit C2INV @ ((unsigned)&CMCON0*8)+5; volatile bit C1OUT @ ((unsigned)&CMCON0*8)+6; volatile bit C2OUT @ ((unsigned)&CMCON0*8)+7; /* Definitions for CMCON1 register */ bit C2SYNC @ ((unsigned)&CMCON1*8)+0; bit T1GSS @ ((unsigned)&CMCON1*8)+1; /* Definitions for ADCON0 register */ bit ADON @ ((unsigned)&ADCON0*8)+0; volatile bit GODONE @ ((unsigned)&ADCON0*8)+1; bit CHS0 @ ((unsigned)&ADCON0*8)+2; bit CHS1 @ ((unsigned)&ADCON0*8)+3; bit CHS2 @ ((unsigned)&ADCON0*8)+4; bit VCFG @ ((unsigned)&ADCON0*8)+6; bit ADFM @ ((unsigned)&ADCON0*8)+7; /* Definitions for OPTION register */ bit PS0 @ ((unsigned)&OPTION*8)+0; bit PS1 @ ((unsigned)&OPTION*8)+1; bit PS2 @ ((unsigned)&OPTION*8)+2; bit PSA @ ((unsigned)&OPTION*8)+3; bit T0SE @ ((unsigned)&OPTION*8)+4; bit T0CS @ ((unsigned)&OPTION*8)+5; bit INTEDG @ ((unsigned)&OPTION*8)+6; bit RAPU @ ((unsigned)&OPTION*8)+7; /* Definitions for TRISA register */ bit TRISA0 @ ((unsigned)&TRISA*8)+0; bit TRISA1 @ ((unsigned)&TRISA*8)+1; bit TRISA2 @ ((unsigned)&TRISA*8)+2; bit TRISA3 @ ((unsigned)&TRISA*8)+3; bit TRISA4 @ ((unsigned)&TRISA*8)+4; bit TRISA5 @ ((unsigned)&TRISA*8)+5; /* Definitions for TRISC register */ volatile bit TRISC0 @ ((unsigned)&TRISC*8)+0; volatile bit TRISC1 @ ((unsigned)&TRISC*8)+1; volatile bit TRISC2 @ ((unsigned)&TRISC*8)+2; volatile bit TRISC3 @ ((unsigned)&TRISC*8)+3; volatile bit TRISC4 @ ((unsigned)&TRISC*8)+4; volatile bit TRISC5 @ ((unsigned)&TRISC*8)+5; /* Definitions for PIE1 register */ bit TMR1IE @ ((unsigned)&PIE1*8)+0; bit TXIE @ ((unsigned)&PIE1*8)+1; bit OSFIE @ ((unsigned)&PIE1*8)+2; bit C1IE @ ((unsigned)&PIE1*8)+3; bit C2IE @ ((unsigned)&PIE1*8)+4; bit RCIE @ ((unsigned)&PIE1*8)+5; bit ADIE @ ((unsigned)&PIE1*8)+6; bit EEIE @ ((unsigned)&PIE1*8)+7; /* Definitions for PCON register */ volatile bit BOD @ ((unsigned)&PCON*8)+0; volatile bit POR @ ((unsigned)&PCON*8)+1; bit SBODEN @ ((unsigned)&PCON*8)+4; bit ULPWUE @ ((unsigned)&PCON*8)+5; /* Definitions for OSCCON register */ bit SCS @ ((unsigned)&OSCCON*8)+0; volatile bit LTS @ ((unsigned)&OSCCON*8)+1; volatile bit HTS @ ((unsigned)&OSCCON*8)+2; volatile bit OSTS @ ((unsigned)&OSCCON*8)+3; bit IOSCF0 @ ((unsigned)&OSCCON*8)+4; bit IOSCF1 @ ((unsigned)&OSCCON*8)+5; bit IOSCF2 @ ((unsigned)&OSCCON*8)+6; /* Alternate definitions for OSCCON register */ bit IRCF0 @ ((unsigned)&OSCCON*8)+4; bit IRCF1 @ ((unsigned)&OSCCON*8)+5; bit IRCF2 @ ((unsigned)&OSCCON*8)+6; /* Definitions for OSCTUNE register */ bit TUN0 @ ((unsigned)&OSCTUNE*8)+0; bit TUN1 @ ((unsigned)&OSCTUNE*8)+1; bit TUN2 @ ((unsigned)&OSCTUNE*8)+2; bit TUN3 @ ((unsigned)&OSCTUNE*8)+3; bit TUN4 @ ((unsigned)&OSCTUNE*8)+4; /* Definitions for ANSEL register */ bit ANS0 @ ((unsigned)&ANSEL*8)+0; bit ANS1 @ ((unsigned)&ANSEL*8)+1; bit ANS2 @ ((unsigned)&ANSEL*8)+2; bit ANS3 @ ((unsigned)&ANSEL*8)+3; bit ANS4 @ ((unsigned)&ANSEL*8)+4; bit ANS5 @ ((unsigned)&ANSEL*8)+5; bit ANS6 @ ((unsigned)&ANSEL*8)+6; bit ANS7 @ ((unsigned)&ANSEL*8)+7; /* Definitions for WPUA register */ bit WPUA0 @ ((unsigned)&WPUA*8)+0; bit WPUA1 @ ((unsigned)&WPUA*8)+1; bit WPUA2 @ ((unsigned)&WPUA*8)+2; bit WPUA4 @ ((unsigned)&WPUA*8)+4; bit WPUA5 @ ((unsigned)&WPUA*8)+5; /* Definitions for IOCA register */ bit IOCA0 @ ((unsigned)&IOCA*8)+0; bit IOCA1 @ ((unsigned)&IOCA*8)+1; bit IOCA2 @ ((unsigned)&IOCA*8)+2; bit IOCA3 @ ((unsigned)&IOCA*8)+3; bit IOCA4 @ ((unsigned)&IOCA*8)+4; bit IOCA5 @ ((unsigned)&IOCA*8)+5; /* Definitions for VRCON register */ bit VR0 @ ((unsigned)&VRCON*8)+0; bit VR1 @ ((unsigned)&VRCON*8)+1; bit VR2 @ ((unsigned)&VRCON*8)+2; bit VR3 @ ((unsigned)&VRCON*8)+3; bit VRR @ ((unsigned)&VRCON*8)+5; bit VREN @ ((unsigned)&VRCON*8)+7; /* Definitions for EECON1 register */ volatile bit RD @ ((unsigned)&EECON1*8)+0; volatile bit WR @ ((unsigned)&EECON1*8)+1; volatile bit WREN @ ((unsigned)&EECON1*8)+2; volatile bit WRERR @ ((unsigned)&EECON1*8)+3; volatile bit EEPGD @ ((unsigned)&EECON1*8)+7; /* Definitions for ADCON1 register */ bit ADCS0 @ ((unsigned)&ADCON1*8)+4; bit ADCS1 @ ((unsigned)&ADCON1*8)+5; bit ADCS2 @ ((unsigned)&ADCON1*8)+6; // Configuration Mask Definitions #define CONFIG_ADDR 0x2007 // Fail-Safe clock monitor #define FCMEN 0x3FFF #define FCMDIS 0x37FF // Internal External Switch Over #define IESOEN 0x3FFF #define IESODIS 0x3BFF // Brown-out detect modes #define BOREN 0x3FFF #define BOREN_XSLP 0x3EFF #define SBOREN 0x3DFF #define BORDIS 0x3CFF // Protection of data block #define UNPROTECT 0x3FFF #define CPD 0x3F7F // Protection of program code #define UNPROTECT 0x3FFF #define PROTECT 0x3FBF // Master clear reset pin function #define MCLREN 0x3FFF #define MCLRDIS 0x3FDF // Power up timer enable #define PWRTDIS 0x3FFF #define PWRTEN 0x3FEF // Watchdog timer enable #define WDTEN 0x3FFF #define WDTDIS 0x3FF7 // Oscillator configurations #define RCCLK 0x3FFF #define RCIO 0x3FFE #define INTCLK 0x3FFD #define INTIO 0x3FFC #define EC 0x3FFB #define HS 0x3FFA #define XT 0x3FF9 #define LP 0x3FF8 #endif
Und dort steht doch schon die Lösung:
1 | /* Definitions for PORTA register */
|
2 | volatile bit RA0 @ ((unsigned)&PORTA*8)+0; |
3 | volatile bit RA1 @ ((unsigned)&PORTA*8)+1; |
4 | volatile bit RA2 @ ((unsigned)&PORTA*8)+2; |
5 | volatile bit RA3 @ ((unsigned)&PORTA*8)+3; |
6 | volatile bit RA4 @ ((unsigned)&PORTA*8)+4; |
7 | volatile bit RA5 @ ((unsigned)&PORTA*8)+5; |
Schreib einfach
1 | RA0 = 1; // damit wird Pin 0 am Port A high |
2 | RA0 = 0; // damit wird Pin 0 am Port A low |
Ein Tipp: Du solltest du dir aber so langsam mal ein Buch zum Thema ansehen :-/
Danke Lothar, Ein Buch besorgen, das werde ich gleich tun, hast du einen Tipp? Grüße
"buch" wäre u.U. auch http://www.cc5x.de/ Die Beispiele sind auf Basis des cc5x-Compilers geschrieben, jedoch ist und bleibt c ja c ;) evlt. kannst du ja folgendes kompilieren:(bsp-code von Teil1)
1 | #include <16F688.h> // Prozessor-Typ definieren |
2 | void main(void) // Start des Hauptprogramms |
3 | {
|
4 | TRISB = 0b.0000.0000; // Pins d PortB sind als Ausgänge geschaltet |
5 | PORTB = 0b.0000.1111; // unteres Nibble auf High |
6 | }
|
wenn nicht, schreibst du alternativ: TRISB = 0x00; PORTB = 0x0F;
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.