-
Thread
Atmega16 Taster an Port C einlesen und Display-Ausgabe.
uint8_t eing=PINC; eing = eing&0x3C; eing = eing<<2; return eing; } void ResetRS() { PORTC &=0x7F; } void SetRS() { PORTC |=0x80; } void SetE() { PORTC |=0x40; } void ResetE() { PORTC &=0xBF; } void SchreibeReg(uint8_t reg) { ResetRS(); _delay_ms(1);
-
Thread
Nochmal Hilfe zum DOGXL
while(1) { //test ob uC läuft DDRC = 0xff; //AUSGANG PORTC=0b11111111 ; //LED } return 0; }
initialisieren //Hauptschleife while(1) { DDRC = 0xff; //AUSGANG PORTC=0b11111111; //LED } return 0; }
-
Thread
Berechnungsfehler bei der Konstruktion von Assembler Warteschleife?
), dann sind die Zeiten spürbar kürzer. Ich versuchte es so: [avrasm] longdelay: sbi PORTC, 0 ldi Temp3, 40 ; wait 1200ms loop: rcall Delay30ms ; 30ms x 40 dec Temp3 brne loop cbi PORTC, 0 ret [/avrasm] Das Signal auf PORTC dient
-
Thread
Komisches Verhalten ATmega16 + Fleury LCD (ständig reset?)
B-Box schrieb: > > > DDRC=0xFF; > PORTC |= (1<<PC7); > > wozu ist das gut ? LCD hast du an PORTC oder PORTA ?
Thomas R. schrieb: > B-Box schrieb: >> >> >> DDRC=0xFF; >> PORTC |= (1<<PC7); >> >> > > > wozu ist das gut ? LCD hast du an PORTC oder PORTA ? ahh, ich sehe, es sollte für die LED sein - klemm die mal da ab, kommentiere auch die zwei zeilen weg und teste
-
Thread
ATMEGA16 LCD 2x8 ansteuern (4Bit-Interface)
; } void init() { DDRA=0xFF; // DDRA als Ausgang DDRC=0xFF; PORTA=0x00; PORTC=0x00; } void send(int VeeEnRsRWData4321) { PORTA=1<<En; // Enable delayus(50); PORTA=VeeEnRsRWData4321; // Vee En Rs RW Data4-1 delayus(100); PORTA=0<<En; // Werte
lcd_init(); int i=0; while(i<10) // nur zum Anzeigen, dass While-Schleife startet { PORTC=0x0F; delayms(100); PORTC=0xF0; delayms(100); i++; } PORTC=0x00; while(1) { // H WriteChar(01011000); WriteChar(01011000); delayms(500);
-
Thread
pic das forum Gesperrt
Sprungmarken - immer GROß schreiben, zum Unterscheiden!!! ; Speicherbank 1 auswählen clrf PORTC ; PORT C vor Konfiguration löschen! (ist sicherer vor allem bei kritischen Anwendungen) bsf STATUS, RP0 ; umschalten auf Speicherbank 1 (nach Reset ist normalerweise immer Speicherbank
Clock, TRISC<4>=Serial Data Input=automatically controlled, TRISC<5>=Serial Data Output ; tris PORTC ; lädt den Wert vom Arbeisregister w in das TRIS-Register des PORT C - schaltet automatisch auf die richtige Speicherbank um! ; Speicherbank 0 gewählt: ; SSPCON = XX10 0101 ; bitweise
-
Thread
STM32 Beste/Schönste Methode um Bits in Register zu setzen
// Bus freigeben SYSTEM.SCKCR.LONG = (unsigned long) 0x00030100; PORT5.DDR.BIT.B3 = 1; PORTC.DDR.BYTE = 0x3f; PORTC.DR.BIT.B2 = 0; .... PORTC.DR.BIT.B2 = 1; PORTB.DDR.BYTE = 0xff; PORTD.DDR.BYTE = 0xff; IOPORT.PFCR0.BYTE = 0x06; // CS1 + CS2 Da kann man bis auf die
-
Thread
AVR assembler variabeldefinition
scheitere gerade bei etwas ganz simplen bei der definition von "variabeln" ich will das LED1 == PORTC.0 ist wie kann ich das machen wenn ich .def LED1, PORTC.0 wird gemeckert, ich weiss eine ganz einfache frage bestimmt aber in vielen tutorials wird dies gar nicht angesprochen... danke,
Vielleicht gefällt es dir auch so: .macro LED_EIN sbi portc,0 .endmacro .macro LED_AUS cbi portc,0 .endmacro LED_EIN LED_AUS MfG Willi
-
Thread
avrasmeditor
PINB6 = 6 ; Port B Input Pins bit 6 .equ PINB7 = 7 ; Port B Input Pins bit 7 ; ***** PORTC ************************ ; PORTC - Port C Data Register .equ PORTC0 = 0 ; Port C Data Register bit 0 .equ PC0 = 0 ; For compatibility .equ PORTC1 = 1 ; Port C Data Register bit 1 .equ PC1 = 1 ; For compatibility .equ PORTC2 = 2 ; Port C Data Register bit 2 .equ PC2 = 2 ; For compatibility .equ PORTC3 = 3 ; Port C Data Register bit 3 .equ PC3 = 3 ; For compatibility .equ PORTC4 = 4 ; Port C Data Register
-
Thread
Servoansteuerung, finde den Fehler nicht.
while(1) { schalter=debounce(schalter); if (schalter == 1) { PORTC |= (1 << PC3); //wenn schalter 1 dann LED an ablauf(1); } else { PORTC &= ~(1 << PC3); // wenn schalter 0 dann LED aus i=0; } //PWM für Servo
der abfragezeit durch max und minimale servoposition { if (TCNT1 >= posi && bit_is_set(PORTC, PINC0)) { PORTC &= ~(1 << PC0); //Pegel zurück auf 0 setzen } } if (TCNT1 < 500 || TCNT1 > 3000) //Zeitabschnitt Pegel=0 von PWM { } } } ISR
-
Thread
ATMega644 mit 7-Segmentanzeigen
OVF_vect) //######################################################### { // Alle Segmente aus PORTC &= ~(1<<PC3); PORTC &= ~(1<<PC4); PORTC &= ~(1<<PC5); if(muxflag==0) { PORTA = num[h]; PORTC |= (1<<PC3); } if(muxflag==1) { PORTA = num[z]; PORTC |= (1<<PC4); } if(muxflag==2) { PORTA = num[e]; PORTC |= (1<<PC5); muxflag=0; } else { muxflag = muxflag + 1; } } //######################################################### /* Hauptprogramm */ int main(void) //##
-
Thread
erste Schritte mit Atmega8 und LED
( 1 << PC1 ); //PC1 Ausgang while(1) { if (PINB & (1 << PB0))//wenn PB0 High ist... { PORTC |= (1 << PC0); //PC0 High } if (PINB & (1 << PB1))//wenn PB1 High ist... { PORTC |= (1 << PC1); //PC1 High } // Eine Schleife if (!(PINB & (1 << PB0))) //wenn PB0 Low ist... { PORTC
Stelle // zentral fürs Entwanzen oder Hardwareanpassen... #define LED_PC0_ANSCHALTEN() do { PORTC &= ~(1 << PC0); } while(0) #define LED_PC0_AUSSCHALTEN() do { PORTC |= (1 << PC0); } while(0) #define TASTER_PB0_GEOEFFNET() (PINB & (1 << PB0)) #define TASTER_PB0_GESCHLOSSEN() !(TASTER_PB0
-
Thread
ATmega uart via oszillator 1.8 geht irgendwie nicht
zeichen, 0 rcall serout rcall sync sbi ddrc,3 sbi portc,3 ende: rcall Warten cbi portc,3 rcall Warten sbi portc,3 rjmp ende serout: sbis UCSRA,UDRE ; Warten bis UDR für das nächste
-
Thread
GCC - I/O problem + Tastatur - Blackout
Wäre sehr hilfreich wenn mir jemand einen code für denn gcc geben würde der folgendes macht : PORTC auf Ausgang schalten und LED's auschalten. PORTA auf Eingang schalten oder besser BIT0 von PORTA. Wenn BIT0 von PORTA = 1 dann BIT0 von PORTC auf 0 ( LED's sind gegen GND geschaltet ). Endloasschleife
wo mir einfach nur das byteword ab den Startbit und dem StopBit aus der tastatur auf die LED's am PORTC ausgegeben wird reicht mir schon, den rest würde ich selber hinbekommen ( =denke ich ). Vielen Dank im vorraus !! Ihr könntet mir hier sehr helfen ! LG mirki
-
Thread
Ausgänge sind an Obwohl 0x00
habe ich nur ein Problem.... Wennn ich die Ausgänge so Initialisiere: [c]DDRC = 0xFF; PORTC = 0x00;[/c] Dann sind die Ausgänge 3, 4, 5 an. Ich kann mir das verhalten irgendwie nicht erklähren. Wenn ich aber PORTC = 0x01 mache dann sind die drei Ausgänge aus und wie ich es will ist die 1 an. Aber ist denn "PORTC = 0x00" identisch mit "PORTC = 0x1C" wie soll ich dann alles ausschlaten.... MfG Tropby PS.: Sry wenn es das schon im Forum gibt. Habe das einfach nicht gefunden.......
-
Thread
Netzwerkkarte mit RTL8019
auf Anschluss PORTE als XT1 und XT2!!! - PORTB 0..7 sind Daten-Leitungen D0..D7 (statt PORTA) - PORTC 0..4 sind Adressleitungen A0..A4 (bleibt gleich) - PORTD 2 ist IRQ (bleibt gleich) - PORTD 5,6,7 sind Steuerleitungen (statt PORTC)
: Wenn man einen Mega32 benutzt, muß das JTAG-Interface disabled werden, weil die JTAG-Pins auf PortC liegen. MfG Torsten
-
Thread
USART sendet nur kryptische Zeichen zurück
Eingänge mit internen Pull-Ups ausser PB0 & PB1 setzen DDRB = 0x00; PORTB = 0xFC; //PORTC die ersten 4 Bits auf Ausgänge setzten DDRC = 0x0F; uartInit(); //USART init sei(); //Interrupts erlauben //Hauptschleife while(1) { PORTC |= (1<<PC2); _delay_ms(1000) ; PORTC &= ~(1<<PC2); _delay_ms(1000); } } //############# UART ########### void uartInit(void) { UBRRH = (unsigned char) (UBRR_VAL >> 8); UBRRL = (unsigned char) UBRR_VAL; UCSRB
-
Thread
LCD funktioniert nicht
} /*Erzeugt einen Enable-Puls*/ static void lcd_enable(void) { PORTC |= (1<<PC7); // Enable auf 1 setzen _delay_us(100); // kurze Pause PORTC &= ~(1<<PC7); // Enable auf 0 setzen _delay_ms(100); } [/c] Im Vorraus
//Ausgang: LCD (R/W) DDRC |= (1 << DDC7); //Ausgang: LCD (E) DDRC = 0xff; PORTC = 0x00; /*Port D*/ DDRD &= ~(1 << DDD0); //Eingang: Taster "back" DDRD &= ~(1 << DDD1); //Eingang: Taster "up" DDRD &= ~(1 << DDD2); //Eingang
-
Thread
AVR-Atmega 16 Input Problem
DDRA=0x00; DDRC=0xFF; while(1) { if(PINA&(1<<PINA1)) { PORTC&=~(1<<PINC3); } else if(PINA|(1<<PINA1)) { PORTC|=(1<<PINC3); } } return 0; } [/c] Was mache ich falsch ?
Hi >Was mache ich falsch ? >PORTC|=(1<<PINC3); JTAG nicht abgeschaltet? MfG Spess
-
Thread
atmega644p - Welche Pins können als I/O benutzt werden?
b11100111; PORTB = b00000000; DDRC = b11111110; PORTC = b00000000; DDRD = b11100011; //taster auch als eingang... PORTD = b00000000; Wenn ich jetzt Testweise alle Leds an schalte, scheint alles zu funktionieren. //////////////////// //Testpattern /////////////////// PORTA |= b11001111; PORTB |= b11100111; PORTC |= b11111110; PORTD |= b01100011; _delay_ms(2000); PORTA = b00000000; PORTB = b00000000; PORTC = b00000000; PORTD = b00000000; Aber wenn ich jede led hintereinander einzel durch schalte, geht
-
Thread
Mega16 startet nicht / nur einmal
regfile = "m16def.dat" $crystal = 1000000 Config Porta = Output Config Portb = Output Config Portc = Output Config Portd = Output Do Porta = 0 Portb = 0 Portc = 0 Portd = 0 Wait 1 Porta = 255 Portb = 255 Portc = 255 Portd = 255
-
Thread
Futaba VFD Ansteuerung mit Bascom
Nein, habe ich nicht: Portb = &B00000000 Portc.6 = 0 Portc.7 = 0 und das erste, was gesendet wird is reset (&B11111000)...
garkein edit... %) *gg* ich habs... :D er hat probleme mit Pinc.* gehabt... hab jetzt alles auf Portc.* augebaut und schon geht es... *FREU* Nun noch eine kleine frage... gibt es eine einfachere möglichkeit den string auf's display zu schreiben, als ihn von einer funktion in buchstaben zerlegen
-
Thread
MEGA32 C-Port in basic
. . . config portc=output . . do portc=255 alle pinne auf high portc=&B11111111 portc.0=0 portc.0 auf 0 . . . loop end was du beachten musst, und dass ist, was ich glaube was du suchst: Bei den Fuses musst du jtag auf OFF setzen, damit alle pinne am portc funktionieren
-
Thread
at90can Analogwerte auslesen
untersten 4 bit löschen (die port bits) ADMUX |= port; //nächster zu erfassender port PORTC &= ~0xF; PORTC |= port2; ADCSRA |= (1<<ADSC); //nächste conversion beginnen } }//end of function [/c] wenn ich jetzt den Ausgang D4 Setzte, kommt die Wandlung durcheinader.
Port D4 setze" machst, sehe ich in deinem Code nicht. Für mich manipulierst du nur port2 = PORTC & 0xF; ... PORTC &= ~0xF; PORTC |= port2;
-
Thread
Probleme mit uart Einbindung & Linker
switch(new_uartByte) { case 32: //Ein 1 Bit erhalten new_uartBit=1; PORTC |= (1 << PC7); break; case 0: //Ein 0 Bit erhalten new_uartBit=0; PORTC |= (0 << PC7); break; } if (bit_counter%2==0) { uartBit1=new_uartBit; PORTC |= (1 << PC6); } else { uartBit2=new_uartBit; PORTC |= (0 << PC6); } bit_counter++; }[/c]
-
Thread
isr timer 0 ov mit atmel studio 6
Speicher fuer das Statusregister > tmp_sreg = SREG; // Statusregister sichern > PORTC |= (1<<PC7); // Testpin an ausgeben > GV_NMRA_OV++; // Erhöhe Zeitwert (Overflow) um 1 > SREG = tmp_sreg; // Status-Register wieder herstellen > } > [/C] um
. also einfach: PORTC |= (1<<PC7); // Testpin an ausgeben GV_NMRA_OV++; // Erhöhe Zeitwert (Overflow) um 1 schreiben.
-
Thread
LCD-Tutorial: LCD auf anderem Port funktioniert nicht
wunderbar (ATMEGA16). Ich brauche aber den PortB für die USART, also habe ich alles 1:1 auf die Pins am PortC angeklemmt: PC0-PC3 = DB4-DB7 PC4 = RS PC5 = E und im lcd-routines.h entsprechende Änderungen vorgenommen: // LCD DB4-DB7 <--> PORTD Bit PD0-PD3 #define LCD_PORT PORTC #define
Tut wurde sauber programmiert, sollte eigentlich funktionieren. Aber warum schreibst du oben von PortC und dann im Kommentar aber PORTD? Nur ein Tippfehler?
-
Thread
MM5450 Treiber mit Atmega8
T0-Overflow ruft IR auf if(PB0==0 && n>=0) //d.h. als nächstes kommt eine positive Flanke { PORTC=z[n]; //Daten n--; } else PORTC=z[0]; //nach 36 Datenbits startet Schieberegister im MM5450 PORTB ^= (1<<PB0); //CLOCK } int main(void) { DDRB = 0xFF; PORTB=0x00; DDRC
struct bits*)&port).b##pin) #define SBIT(x,y) SBIT_(x,y) #define DAT SBIT( PORTC, PC0 ) #define DAT_DDR SBIT( DDRC, PC0 ) #define CLK SBIT( PORTB, PB0 ) #define CLK_DDR SBIT( DDRB, PB0 ) void mm5450_wr( uint8_t num, uint8_t val ) { do{
-
Thread
Dämmerungsschalter mit 3mm LED als Lichtsensor und Anzeige
Codevision... Sollte mit der EVAL Version von Codevision funktionieren. Funktion: Über den ADC0(PORTC.0) Eingang des ATMega wird die Helligkeit gemessen. Die Beschaltung habe ich im Source aufgezeichnet. Die Diode hängt zwischen PORTC.0 und PORTC.1, wobei die Anode der Diode an PORTC.0 geht. Ich hoffe
Fall eine rote 3mm klare low current Diode. Ist der wert unter einer bestimmten Schwelle schaltet PORTC.5 ein, darüber wieder aus. Während der Dunkelphase blinkt die Diode welche auch als Lichtsensor verwendet wird ähnlich einer Alarmanlage. Vielleicht kanns ja jemand gebrauchen....
-
Thread
unkontrolliertes Schalten während Programmierung
meine Programme bisher nicht auf der Zielhardware debuggen. Wenn das aber wichtig ist, würde ich PortC sowieso nur mit Vorsicht oder für LEDs oder so benutzen, denn da hängt nun mal auch JTAG drauf. Meine MOSFet Treiber koppele ich meistens sowieso über HC244 o.ä. an den MC, erstens schützt das den
Programme bisher nicht auf der > Zielhardware debuggen. > Wenn das aber wichtig ist, würde ich PortC sowieso nur mit Vorsicht oder > für LEDs oder so benutzen, denn da hängt nun mal auch JTAG drauf. > Meine MOSFet Treiber koppele ich meistens sowieso über HC244 o.ä. an den > MC, erstens schützt
-
Thread
Bits löschen - Ich stehe auf dem Schlauch
. int main(void) { /* Replace with your application code */ DDRC = 0b00000111; PORTC = 0; while (1) { for (int i = 0; i < 3; i++) { PORTC |= (1 << i); _delay_ms(100); } for (int i = 0; i < 4; i++) { PORTC &= -(1 <<
[code] PORTC &= ~(1 << i); [/code] nicht [code] PORTC &= -(1 << i); [/code]
-
Thread
Mega32L PINC Verständnis
Hi, wahrscheinlich eine simple Frage aber obwohl ich in meinem Programm DDRC = 0xFF; PORTC = =0xFF; alle PINS von PORTC auf High lege, verändert PIN4 (TDO) seinen Zustand nicht und bleibt Low. Versuche eine 8-Bit Ansteuerung eines LCD über den PORT zu regeln und habe mal versucht ein
DDRC = 0xFF; PORTC = =0xFF; (warum hier zweimal = ?) das könnte Probleme geben! Damit legst du fest: PortC ist Ausgang, UND an PortC werden überall 5V ausgegeben! Wenn du jetzt extern 5V anlegst, passiert da nix
-
Thread
Selbstbau Synth mit Midi
DDRC = 0xFF; uart_init(); sei(); while(1) { while(play_note) { PORTC = 0xFF; delay_us(dauer); PORTC = 0x00; delay_us(dauer); } } } [/c] Danke für Eure Hilfe!
Synthbastler schrieb im Beitrag #2873312: > while(play_note) > { > PORTC = 0xFF; > delay_us(dauer); > PORTC = 0x00; > delay_us(dauer); > } Mit diesem Ansatz wirst du nicht über einen Kanal hinwegkommen. Für mehrere Kanäle braucht man fast zwingend
-
Thread
ATmega328: INT0 geht nur, wenn zu Beginn HIGH
< PC5); // PC5 wird nicht gebraucht, kann als Debugpin benutzt werden PORTC |= (1 << PC5); // Init sei(); // Global Interrupts aktivieren EIMSK |= (1 << INT0); // Enable INT0 EICRA
Übertragung fertig ; Anz_LEDs_an = SPDR; // Übertragene Daten auslesen PORTC &= ~(1 << PC1); PORTC &= ~(1 << PC2); PORTC &= ~(1 << PC3); PORTC &= ~(1 << PC4); PORTC |= ((Anz_LEDs_an & 0x01)<< 1) | ((Anz_LEDs_an & 0x02)<< 1) | ((Anz_LEDs_an & 0x04)<< 1) | ((Anz_LEDs_an
-
Thread
Komme nicht weiter Bascom in C übersetzen
init_usart(); while(1) { c = USART_Receive(); switch( c ) { case 'A': PORTC |= (1<<DC6); break; case 'B': PORTC &= ~(1<<DC6); break; case 'C': PORTC |= (1<<DC7); break; case 'D': PORTC &= ~(1<
-
Thread
Schiebeoperation mit int16_t-Variable
pwm_cnt == 0) { PORTA = tmp; // set ports at begin of PWM PORTC = tmp>>8; PORTD = tmp>>16; pwm_cnt++; } else { PORTA &= tmp; // clear ports PORTC &= tmp>>8; PORTD &= tmp>>16;
= 0) { PORTA = tmp.ary[0]; // set ports at begin of PWM PORTC = tmp.ary[1]; PORTD = tmp.ary[2]; pwm_cnt++; } else { PORTA &= tmp.ary[0]; // clear ports PORTC &= tmp.ary[1]; PORTD
-
Thread
Probleme bei ansteuerung von LCD über verschiedene PORTs-Pin
na ja habe schon lange rum probiert. hier ist ein code abschnitt im Anhang am PORTC mit einer Lücke zwischen DA-Leitungen und RS-E-Leitungen
Hm, welcher Prozessor? PortC - da leuchtet bei mir immer das JTAG-Licht auf:-)
-
Thread
einzelne pins als eingänge auslesen
define taster_bit 1 // 0 bis 7 erlaubt #define taster_pin PINC #define taster_port PORTC #define taster_ddr DDRC Diese Definitionen mache ich für alle Pins des AVR, die auf meiner Platine eine spezielle Funktion haben und packe sie in die Datei hardware_soundso.h. Im Programm
Projekts aus dem Schaltplan erstellt) für alle I/O-Signale sowas: //Ausgänge #define LED_ON PORTC|=(1<<3) #define LED_OFF PORTC&=(unsigned char)(~(1<<3)) //Eingänge #define IN_KEY1 (PINC&(1<<6)) Dann schreibt sich das Einschalten einer LED einfach: LED_ON; bzw. die Abfrage auf Taste
-
Thread
Portbezeichnung übergeben
in meinem Programm den Portnamen an ein Unterprogramm übergeben. Geht das? Wie? z.B.: setPort(PORTC,0x02); Dieser Befehl würde dem PORTC den Wert 2 zuweisen. Aber wie würde hier die Argumentenliste für das Unterprogramm "setPort" aussehen? Vielen Dank
Programm den Portnamen an ein Unterprogramm > übergeben. Geht das? Wie? > > z.B.: > setPort(PORTC,0x02); > > Dieser Befehl würde dem PORTC den Wert 2 zuweisen. Aber wie würde hier > die Argumentenliste für das Unterprogramm "setPort" aussehen? > [C] void setPort( volatile usigned char
-
Thread
Programmierung von ATmega8-16PU macht Probleme
connected to the pin, and the pin can not be used as an I/O pin. If PC6 is used as a reset pin, DDC6, PORTC6 and PINC6 will all read 0. PCINT14: Pin Change Interrupt source 14. The PC6 pin can serve as an external interrupt source."
Hi > DDRB = 0xff; > // Alle LEDs an > PORTC |= (1 << 0); /* PIN aktivieren */ Wenn du zu Ausgabe PortC nimmst, solltest du auch *DDRC* auf Ausgang setzen. MfG Spess
-
Thread
ISR Timer Interrupt 1 funktioniert nicht richtig
schalten [/c] Damit werden die Tastenpins auf Output geschaltet; sie geben jetzt 'high' aus (denn nach PORTC hast Du 0xf geschrieben). Jetzt hast Du bei gedrückter Taste einen sauberen Kurzschluss des Ausgangs. Wozu die ganze In/Out-Umschalterei? Weiter habe ich nicht geschaut.
Ein-und Ausgängen... wir benutzen in unserer FH das MINIMexle mit einem ATmega88 und dort hängt an PortC sowohl die Taster als auch die Steuerleitungen fürs LCD. Gruß und danke an alle :)
-
Thread
Als Ausgang gesetzt als Eingang erkannt?
Datenbus DB4-DB7, das unterste Bit DB4 kann auf den Portbits 0..4 liegen // LCD DB4-DB7 <--> PORTC Bit PC0-PC3 #define LCD_DB PD0 // LCD Steuersignale RS und EN // LCD RS <--> PORTC Bit PC4 (RS: 0=Data, 1=Command) #define LCD_RS PD4 // LCD EN <--> PORTC
-
Thread
Bin ich blind? Bascom Code will nicht
crystal = 16000000 $hwstack = 128 $swstack = 64 $framesize = 32 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcd = 16 * 2 Cursor Off Ddrb.3 = 1 Swon Alias Portb.3 'the main
-
Thread
7 Segment Multiplexing Zähler
); sei(); while (1) { } } ISR (TIMER0_OVF_vect) { PORTC &= ~(1 << (y+4)); y ^= 1; if (y == 0) { seven_write(x%10); } else { seven_write(x/10%10); } PORTC |= (1 << (y+4)); } ISR (TIMER1_COMPA_vect) { x++;
} } // Timer 0 ISR, 488 Hz ISR (TIMER0_OVF_vect) { static uint8_t digit, cnt; PORTC = 0; // Stelle aus digit++; if (digit > 3) digit = 0; PORTD = data[digit]; PORTC = 1<<digit; // neue Stelle ein // 100ms Flag cnt++; if (cnt==49) { cnt = 0;
-
Thread
PIC 16F628 LCD-Display
input movlw B'11110000' iorwf TRISB, f bcf STATUS, RP0 BusyLoop bcf PORTC, LcdRs bsf PORTC, LcdRw ; Lesen bsf PORTC, LcdE nop movf PORTD, w movwf LcdStatus bcf PORTC, LcdE nop bsf PORTC, LcdE ; Enable nop bcf PORTC, LcdE btfsc LcdStatus
LcdRs ; Daten bsf PORTC, LcdE nop bcf PORTC, LcdE ; Disable LcdBus bcf PORTC, LcdRs ; bcf PORTA, 2 ; Test LED 2 on return end [/c]
-
Thread
externer Interrupt (PCINT1) atmega88 - Sprung nach 0x0000
PinChange-Interrupts PCINT8..15 zuständig ist. Es gibt drei PinChange-'Blöcke': PortB mit PCINT0..7 PortC mit PCINT8..15 PortD mit PCINT16..23 PortB ist Block 0, PortC ist 1 und PortD ist 2. Und dementsprechend ist auch die Bezeichnung der Register. Alles mit 0 gehört zu PortB. Und der Pin mit PCINT1
schrieb im Beitrag #1819690: > Es gibt drei PinChange-'Blöcke': > > PortB mit PCINT0..7 > > PortC mit PCINT8..15 > > PortD mit PCINT16..23 Danke nochmal!!!
-
Thread
8051 sbit?
man dem Pin auch einen "sprechenden" Namen verpassen: [C] #define LED0 PORTB.0 #define TASTER PORTC.7 [/C] Allerdings sind diese Schreibweisen (Makro-Erweiterungen) mit PORTx.PINNUMMER nicht ANSI-C-konform, sondern Compiler-spezifisch, was die Portabilität des Codes verhindert. Zur ANSI-C-konformen
Doch, das geht. C ist aber case-sensitiv, und es ist ein verdammt großer Unterschied, ob Du PORTC oder PortC schreibst. Außerdem muss natürlich die entsprechende Headerdatei eingebunden sein...
-
Thread
AVR und C++ - ein Versuch
Klassen sein? Du verwendest das PORT-Makro in den Klassen-Funktionen und wenn Du jetzt nen Pin von PortC verwenden willst, dann brauchst Du ne neue Klasse. Ja, so macht der Einsatz von C++ wirklich Sinn =:O
Bisher habe ich IO per #define definiert und über inline Funktionen bedient. #define LED3 (PORTC, 3) Schöner wäre natürlich: dInput button1(PORTC,1); dOutput led3(PORTC,3); Ja diese MCUCPP ist sehr schön gemacht. Danke für den Link.
-
Thread
TLC5940 mit Xmega
<asf.h> #include <avr/io.h> #include <stdint.h> #include <util/delay.h> #define GSCLK_PORT PORTC #define GSCLK_PIN 4 #define SIN_PORT PORTC #define SIN_PIN 5 #define SCLK_PORT PORTC #define SCLK_PIN 3 #define BLANK_PORT PORTC #define BLANK_PIN 2 #define DCPRG_PORT PORTC #define DCPRG_PIN
> #include <stdint.h> #include <util/delay.h> #include <avr/interrupt.h> #define GSCLK_PORT PORTC #define GSCLK_PIN 4 #define SIN_PORT PORTC #define SIN_PIN 5 #define SCLK_PORT PORTC #define SCLK_PIN 3 #define BLANK_PORT PORTC #define BLANK_PIN 2 #define DCPRG_PORT PORTC #define DCPRG_PIN
-
Thread
Probleme mit PCINT an ATmega644P
: [c] void init(void) { DDRC = 0xf8; // PC0, PC1, PC2 als Eingang, Rest als Ausgang PORTC= 0xf8; // Pullups für Eingägne an /** Taster-Interrupts **/ PCICR |= (1<<PCIE2); //Interrupt-Bank 2 Aktivieren PCIFR |= (1 << PCIF2); //interrupt-bank 2 aktivieren PCMSK2|= (1<<
Steffen K. schrieb: > PORTC= 0xf8; // Pullups für Eingägne an imo schaltest du da alle Ausgänge auf 1 und keine PullUps...kA ob das der Grund ist...