-
Datei
Fan.c
volatile unsigned int EndTime = 0; // ICR-Wert bei 2.High-Flanke speichern volatile unsigned char JobFlag = FALSE; // Job Flag volatile signed long int Erg = 0; volatile signed long int Wert = 0; ISR( TIM0_CAPT_vect ) { static unsigned char ErsteFlanke = TRUE; if( JobFlag ) return; if( ErsteFlanke ) {
in „Attiny10 Problem AVR Studio 6“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
Fan.c
volatile unsigned int EndTime = 0; // ICR-Wert bei 2.High-Flanke speichern volatile unsigned char JobFlag = FALSE; // Job Flag volatile signed long int Erg = 0; volatile signed long int Wert = 0; ISR( TIM0_CAPT_vect ) { static unsigned char ErsteFlanke = TRUE; if( JobFlag ) return; if( ErsteFlanke ) {
in „Frequenz eines Rechtecksignal manipulieren“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
camserv1.asm
justup2: rcall justdn2 ;weiter wie bei Down justdn: ;Justage-Taster 2 gedrückt cbr tdfl,1<<tas2 ;Jobflag löschen sbrc tas,tas1 ;beide Justage-Taster gedrückt? - nein... rjmp save ;ja, Daten im EEP sichern... sbrs tas,tas0 ;Auslöser betätigt? - ja... dec rpos ;nein, Ruheposition vermindern sbrc tas,tas0
in „Servoansteuerung mit AVR - unerwarteter Aussschlag“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
adc_vs_isr.c
sizeof((arr__)[0]) //Job-flags-bitfeld typedef struct{ uint8_t adc_complete:1; uint8_t unused:7; } jobflags; // Globe Variablen uint8_t adc_channels[] = {0,1,2,3}; //diese Kanaele werden gemessen uint16_t adc_results[ELEMENTS_OF(adc_channels)]; jobflags jobs; // nur eine DEBUG funktion!!!! void delay_10ms
in „AD-Wandler Free Running - Mega8“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
test2.1.txt
pwu ;Max-Wert für Begrenzung der Änderung rcall lcd_init ;LCD initialisieren cbr flags,1<<aktuLCD ;Jobflag löschen, wird ja jetzt erledigt sei ldi flags,1<<aktuLCD ;erstes Schreiben des LCDs anmelden ldi avt,avt0 ;Anzeige-Vorteiler auf Startwert setzen Haupt: ;Hauptschleife, Auswertung der Tastenflags ;und Jobflags die in der ISR gesetzt wurden und verändern ;der PWM-Werte der 8 Kanäle. sleep ;Schlafmodus, Wecken erfolgt durch Timer-Int. sbrc flags,aktuLCD ;muss LCD aktualisiert werden? - nein... rcall gibaus
in „MENÜ-STEUERUNG“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
rm01.asm
Drücken einer ;Taste entstanden sind. Sie werden in 'tfl' übernommen, gelten dort als eine ;Art Jobflags, dienen der Mainloop also zum bedingten Verzweigen in SUBs, ;die auf den Tastendruck reagieren und das Jobflag löschen. or tfl,wl ;und zugehörige Bits setzen (gelöscht wird nach Abarbeitung) ;Nun
in „Bitwackeln mit USB to Seriell Wandler (Schnelligkeit)“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
GlobalDefinitions.h
{ unsigned int Timer3_interrupt : 1; //Global systick interrupt pending unsigned int ColorSensor_Jobflag : 1; //Jobflag for Backlight, strobe set in Timer3 ISR unsigned int CDC_PackageReceived : 1; //CDC: package has been received unsigned int ADC_Interrupt : 1; //ADC unsigned int RTCC_Interrupt : 1;
in „interner RTC oder externer“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
HEBLINK1.ASM
neuimp ;neuer Impuls eingetroffen? - ja... rjmp mainloop1 ;nein, weg hier... cbr flags,1<<neuimp ;Jobflag löschen, Job wird ja nun erledigt cpi ib,ibmin ;Impuls kürzer als erlaubt? brcs mainloop1 ;ja, ungültig, weg hier... cpi ib,ibmax+1 ;Impuls länger als erlaubt? brcc mainloop1 ;ja, ungültig, weg hier
in „Attiny 15+Assembler-Problem“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
HEBLINK1.ASM
neuimp ;neuer Impuls eingetroffen? - ja... rjmp mainloop1 ;nein, weg hier... cbr flags,1<<neuimp ;Jobflag löschen, Job wird ja nun erledigt cpi ib,ibmin ;Impuls kürzer als erlaubt? brcs mainloop1 ;ja, ungültig, weg hier... cpi ib,ibmax+1 ;Impuls länger als erlaubt? brcc mainloop1 ;ja, ungültig, weg hier
in „Anfängerfrage zu AVR Tiny12“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
HEBLINK1.ASM
neuimp ;neuer Impuls eingetroffen? - ja... rjmp mainloop1 ;nein, weg hier... cbr flags,1<<neuimp ;Jobflag löschen, Job wird ja nun erledigt cpi ib,ibmin ;Impuls kürzer als erlaubt? brcs mainloop1 ;ja, ungültig, weg hier... cpi ib,ibmax+1 ;Impuls länger als erlaubt? brcc mainloop1 ;ja, ungültig, weg hier
in „Hilfe bei Programmierung von Tiny 13“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
DTMF01.asm
das decodierte DTMF-Signal ein und entprellt es ;wird alle 10ms aufgerufen cbr flags,1<<entprell ;Jobflag löschen in wl,dtmfpin ;DTMF_Port einlesen andi wl,0b01111100 ;nur die relevanten Bits berücksichtigen clr tmp ;erstmal alle Bits aus, dann verwirrte Bits entwirren bst wl,bit0 ;Bit 0 bld tmp,0 ;kopieren
in „mit Atmega48 MT 8870 auwerten“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
8pwm1.asm
;Anzeige-Vorteiler auf Startwert setzen Haupt: ;Hauptschleife, Auswertung der Tastenflags ;und Jobflags die in der ISR gesetzt wurden und verändern ;der PWM-Werte der 8 Kanäle. sleep ;Schlafmodus, Wecken erfolgt durch Timer-Int. sbrc flags,aktuLCD ;muss LCD aktualisiert werden? - nein... rcall gibaus
in „LCD DISPLAY 4x20“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
FB_Wolf.asm
Interrupt pennen rjmp mainloop ;nochmal... machaus: ;Relais wieder ausschalten cbr flags,1<<zovf ;Jobflag löschen ldi yl,low(dauerz) ;Y-Pointer auf Adresse des ldi yh,high(dauerz) ;ersten Ausschalt-Timers ldi zl,low(reltab*2) ;Pointer auf ldi zh,high(reltab*2) ;Relais-Bitmuster machaus00: lpm r0,z+ ;Bitmuster
in „8-Kanal IR-Fernbedienungs-Bausatz IRK8“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
8pwm1.asm
;Anzeige-Vorteiler auf Startwert setzen Haupt: ;Hauptschleife, Auswertung der Tastenflags ;und Jobflags die in der ISR gesetzt wurden und verändern ;der PWM-Werte der 8 Kanäle. sleep ;Schlafmodus, Wecken erfolgt durch Timer-Int. sbrc flags,aktuLCD ;muss LCD aktualisiert werden? - nein... rcall gibaus
in „Led´s mit überblenden PWM“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
eieruhr1.asm
multiplex: ;Job der Mainloop, steuert Multiplex für ;Anzeige und Tastenabfrage cbr flags,1<<neumux ;Jobflag löschen cpi mux,10 ;Tastenabfrage? (Multiplexwert 10) brne multiplex1 ;nein, weiter... ;Tastenabfrage ldi wl,segmsk ;alle Segmente der Anzeige out segport,wl ;ausschalten sbi einerport,einerbit ;Einer-Digit-Treiber
in „Taster Entprellen (gleichzeitige Abfrage)“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
eieruhr1.asm
multiplex: ;Job der Mainloop, steuert Multiplex für ;Anzeige und Tastenabfrage cbr flags,1<<neumux ;Jobflag löschen cpi mux,10 ;Tastenabfrage? (Multiplexwert 10) brne multiplex1 ;nein, weiter... ;Tastenabfrage ldi wl,segmsk ;alle Segmente der Anzeige out segport,wl ;ausschalten sbi einerport,einerbit ;Einer-Digit-Treiber
in „7 Segmentanzeige falsch eingekauft, reagiert nur auf low.“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
eieruhr1.asm
multiplex: ;Job der Mainloop, steuert Multiplex für ;Anzeige und Tastenabfrage cbr flags,1<<neumux ;Jobflag löschen cpi mux,10 ;Tastenabfrage? (Multiplexwert 10) brne multiplex1 ;nein, weiter... ;Tastenabfrage ldi wl,segmsk ;alle Segmente der Anzeige out segport,wl ;ausschalten sbi einerport,einerbit ;Einer-Digit-Treiber
in „Assembler-Kode Optimierung“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
test2.2.asm
print '*' print '*' print '*' print '*' sei Haupt: ;Hauptschleife, Auswertung der Tastenflags ;und Jobflags die in der ISR gesetzt wurden und verändern ;der PWM-Werte der 8 Kanäle. sleep ;Schlafmodus, Wecken erfolgt durch Timer-Int. sbrc flags,aktuLCD ;muss LCD aktualisiert werden? - nein... rcall gibaus
in „MENÜ-STEUERUNG“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
test2.3.asm
print '*' print '*' print '*' print '*' sei Haupt: ;Hauptschleife, Auswertung der Tastenflags ;und Jobflags die in der ISR gesetzt wurden und verändern ;der PWM-Werte der 8 Kanäle. sleep ;Schlafmodus, Wecken erfolgt durch Timer-Int. sbrc flags,aktuLCD ;muss LCD aktualisiert werden? - nein... rcall gibaus
in „MENÜ-STEUERUNG“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
8515FZM1.asm
clr schuss ;Schusszähler löschen clr key_reg ;Tastenentprellzähler löschen clr flags ;Mainloop-Jobflags löschen ;Timer0 initialisieren ldi wl,256-tzu ;Timer-Zählumfang mov tsw,wl ;vorbereiten out tcnt0,tsw ;und setzen ldi wl,2 ;Vorteiler 1:8 out tccr0,wl ;für Timer0 ;Timer1 initialisieren ldi wl,icpf
in „Timer1: Compare-mode spinnt“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
IR12roll.asm
Timeout löschen rjmp mainloop ;fertig... neutelda: ;neues Telegramm eingetroffen cbr flags,1<<neu ;Jobflag löschen ldi zl,low(tastab*2) ;Z-Pointer auf Beginn der Tabelle mit ldi zh,high(tastab*2) ;eigenen Tastenwerten im Flash mov wl,cmd ;empfangenen Wert holen andi wl,63 ;Toggle-Bit löschen add zl,wl
in „8-Kanal IR-Fernbedienungs-Bausatz IRK8“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
TEST2.4.asm
M01 ret m3: locate 3,19 printf M02 ret ;Haupt: ;Hauptschleife, Auswertung der Tastenflags ;und Jobflags die in der ISR gesetzt wurden und verändern ;der PWM-Werte der 8 Kanäle. ; sleep ;Schlafmodus, Wecken erfolgt durch Timer-Int. ;sbrc flags,aktuLCD ;muss LCD aktualisiert werden? - nein... ;rcall gibaus
in „MENÜ-STEUERUNG“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
DREHGEBER.txt
Mainloop-Jobs zum Zuge kommen, ehe der ;Controller am Ende der Mainloop in den Sleep fällt. Das zugehörige ;Jobflag (Synchronisation mittels Timer) wird in der Routine 'lcd_update' ;gelöscht. in wl,dgp ;Drehgeber einlesen andi wl,dgmsk ;nur Drehgeber-Bits (Bit 3:2) swap wl ;nach oben (Bit 7:6) or drg,wl ;neuen
in „Problem beim DREHGEBER“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
Entprellen_H_Luxx.txt
Entprell-Algorithmus geklaut bei Peter Dannegger... ;die Tasten liegen auf den untern 4 Bits cbr flags,1<<upsync;Jobflag löschen (Routine läuft als Mainloop-Job) in tmp,tap ;Tastenport einlesen (gedrückt=L) com tmp ;invertieren (gedrückt=H) andi tmp,alltast ;ungenutzte Bits ausblenden eor tmp,tas ;nur Änderungen werden
in „Universelle Tastenabfrage nach PeDa in AVR Assembler“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
Entprellen_Lux.asm
Entprell-Algorithmus geklaut bei Peter Dannegger... ;die Tasten liegen auf den untern 4 Bits ;cbr flags,1<<upsync;Jobflag löschen (Routine läuft als Mainloop-Job) in tmp,tap ;Tastenport einlesen (gedrückt=L) com tmp ;invertieren (gedrückt=H) andi tmp,alltast ;ungenutzte Bits ausblenden eor tmp,tas ;nur Änderungen werden
in „Universelle Tastenabfrage nach PeDa in AVR Assembler“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
termstat.asm
pennen rjmp mainloop ;nochmal... neusekunde: ;UP, eine Sekunde ist vergangen cbr flags,1<<neusek ;Jobflag löschen ;Temperatur ermitteln (Umrechnung in °C mittels Tabelle) out tccr0b,null ;Alarmton erstmal aus clr zh ;Pointer erstmal auf 0 mov zl,adcw ;und ADC-Wert subi zl,100 ;untere 100 Werte sind nicht
in „Pollin LCD1602 keine Anzeige“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
termstat.asm
pennen rjmp mainloop ;nochmal... neusekunde: ;UP, eine Sekunde ist vergangen cbr flags,1<<neusek ;Jobflag löschen ;Temperatur ermitteln (Umrechnung in °C mittels Tabelle) out tccr0b,null ;Alarmton erstmal aus clr zh ;Pointer erstmal auf 0 mov zl,adcw ;und ADC-Wert subi zl,100 ;untere 100 Werte sind nicht
in „PWM zur Tonausgabe auf einem Lautsprecher Mega8“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
dogxl_hardware.c
/* this is a low priority Task for transfering large amounts of data with a software SPI * if a jobflag is set, the transfer is stalled * therefore, the system is never blocked for longer than it takes to transfer 8 bits (a few µs) * this should be called, if all other jobs has been completed * on completion
in „PIC 32 EA DOG XL 160/7 Ansteuerung“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
main.asm
Daten abholen ;-------------------------------------------------- sub_fmess: cbr jobs,1<<f_mess ;Jobflag löschen rcall fuellmess ;Abfrage der Messwerte sbr jobs,1<<esp ;Weiter mit Einschalten des ESP ret ; Füllstandsmessung ausführen (durch Einschalten der Spannung) ; Messwerte per RS232 empfangen und
in „ATMega328 + Si7021 + I2C (Assembler)“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
Drehimpusgeber_V3.asm
rcall drehgeber rjmp Programm_XXX drehgeber: ;Drehgeber-Entprellung und -Abfrage cbr Flag,1<<neu_ms ;Jobflag löschen push r16 push r17 push r18 push r24 push r25 lds r24, CNT_DGB lds r25, CNT_DGB +1 in r16,GEBER_PIN ;Drehgeber einlesen | PHASE A an P2 | PHASE B an P3 lsl r16 ;Drehgeber einlesen | PHASE A
-
Datei
LCD_4x27.inc
Sicherung ;der (jetzt freien) temporären Register (ZH, ZL, WH, WL) verzichtet. cbr vflags,1<<upsync ;Jobflag löschen ldi zh,high(vlcd) ;Z-Pointer auf lds zl,rpos ;Ausgabeposition sbrc vflags,zeiwe ;Zeilenwechsel gewesen? - nein, jetzt prüfen... rjmp lcd_u_nixzw ;ja, jetzt nicht prüfen... lcd_upd1: cpi zl
in „Busy Flag von LCD abfragen“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
LCD_4x27.inc
-------------- lcd_update: ;UP, sendet ein Zeichen aus dem VLCD an das LCD cbr vflags,1<<upsync ;Jobflag löschen ldi zh,high(vlcd) ;Z-Pointer auf lds zl,rpos ;Ausgabeposition sbrc vflags,zeiwe ;Zeilenwechsel gewesen? - nein, jetzt prüfen... rjmp lcd_u_nixzw ;ja, jetzt nicht prüfen... lcd_upd1: cpi zl
in „Makro locate (ASM)“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
LCD_2x16.inc
lcd_update: ;UP, sendet ein Zeichen aus dem VLCD an das LCD push zl push zh cbr vflags,1<<upsync ;Jobflag löschen ldi zh,high(vlcd) ;Z-Pointer auf lds zl,rpos ;Ausgabeposition sbrc vflags,zeiwe ;Zeilenwechsel gewesen? - nein, jetzt prüfen... rjmp lcd_u_nixzw ;ja, jetzt nicht prüfen... lcd_upd1: cpi zl
in „Makro locate (ASM)“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
LCD_2x16.inc
lcd_update: ;UP, sendet ein Zeichen aus dem VLCD an das LCD push zl push zh cbr vflags,1<<upsync ;Jobflag löschen ldi zh,high(vlcd) ;Z-Pointer auf lds zl,rpos ;Ausgabeposition sbrc vflags,zeiwe ;Zeilenwechsel gewesen? - nein, jetzt prüfen... rjmp lcd_u_nixzw ;ja, jetzt nicht prüfen... lcd_upd1: cpi zl
in „Pollin LCD1602 keine Anzeige“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
vLCD8x24.inc
timer0swku ;erstmal kurze Pause einplanen out tcnt0,tmp ;und in Timer schreiben cbr vflags,1<<upsync ;Jobflag löschen ldi zh,high(vlcd) ;Z-Pointer auf lds zl,rpos ;Ausgabeposition sbrc vflags,zeiwe ;Zeilenwechsel gewesen? - nein, jetzt prüfen... rjmp lcd_u_nixzw ;ja, jetzt nicht prüfen... lcd_upd1: ldi tmp
in „atmega 8 als schnitstelle“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
IR60u_02.asm
rjmp mainloop ;fertig... job_neues_byte: ;es ist ein neues Byte eingetroffen cbr flags,1<<neubyte ;Jobflag entwerten ldi yl,low(toz-1) ;Pointer vor Timeout-Zähler ldi yh,high(toz-1) ;im SRAM ldi zl,low(bimu*2-5) ;Pointer 5 vor Bitmustertabelle ldi zh,high(bimu*2-5) ;im Flash lds wl,cmd ;Byte holen bst
in „Quellcode für den Pollin Fernsteuer Bausatz“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
Drehzahlmessung.cpp
speichern volatile double Erg = 0.0; // Ergebnis der Rechnung volatile unsigned char UpdateDisplay; // Jobflag ISR (Timer1_CAPT_vect) //Interrupt für Timer/Counter1 Capture-Event { static unsigned char ErsteFlanke = TRUE; // = 1 /*****************************************************************************
in „Drehzahlmessung über Capture_Interrupt Probleme?“ · Mikrocontroller und Digitale Elektronik ·
-
Datei
IR8_V12_SAA3008.asm
rjmp mainloop ;fertig... job_neues_byte: ;es ist ein neues Byte eingetroffen cbr flags,1<<neubyte ;Jobflag entwerten ldi yl,low(toz-1) ;Pointer vor Timeout-Zähler ldi yh,high(toz-1) ;im SRAM ldi zl,low(bimu*2-5) ;Pointer 5 vor Bitmustertabelle ldi zh,high(bimu*2-5) ;im Flash lds wl,cmd ;Byte holen bst
in „Quellcode für den Pollin Fernsteuer Bausatz“ · Mikrocontroller und Digitale Elektronik ·