-
Thread
Arduino Bit Shifting Problem
#include <hd44780ioClass/hd44780_pinIO.h> //Display PinSetup //const int rs = 12, en = 11, db4 = 10, db5 = 9, db6 = 8, db7 = 7; //Piazo Pin Setup const int buzzer = 2; int PowerOn = 0; hd44780_pinIO lcd(12, 11, 10, 9, 8, 7); const int LCDCols = 20; const int LCDRow = 4; #define LCD_COLS
Der M3 hat auch einen Barrel-Shifter. Der AVR nicht
-
Thread
Komparator Einstellung beim Attiny 841
AC0 hingegen besitzt einen eigenen Multiplexer. Zusammenfassend: Warum liest du nicht einfach das DB? Da steht das alles drinne...
Sorry, vergessen, arbeite mit AVR Studio in windows. Sollte sich vertragen
-
Artikel
AVR Bootloader FastBoot von Peter Dannegger
Beispiel-Makefiles. Diese Anleitung basiert auf fastboot_build29.tar.gz. Der Bootloader beinhaltet das Script "get_avr_arch.sh" in einer Version, die mit aktuellen avr-gcc-Versionen nicht klar kommt. Das äußert sich in folgender Fehlermeldung: get_avr_arch.sh: Could not find an architecture in avr-gcc's internal ld
SRAM_START' in .org" kommt. Das AVRStudio lässt sich unter Linux auch mit WINE installieren (die IDE des AVR Studio 4 geht allerdings nur mit ein paar Tricks aus der AppDB - ist für das Assemblieren des Bootloaders aber nicht nötig). Wenn "avrasm2.exe" und die zum AVR passende Include-Datei (beispielsweise
-
Thread
ARM-Assembler-Tutorial
programmiere das Kindchen, lies den Titel "... *ARM* ..." ! Nicht altes Kinderspielzeugs a la AVR. :-<<<
Perfekt. So eine "AVR vs. ARM"-Diskussion hat in diesem Thread über ARM-Assembler absolut gefehlt. Weiter so!
-
Thread
Kabelbaum Prüfgerät
K. schrieb im Beitrag #6696173: > Kennst Du Scada lel mein S5 Programm war grad mal 5kB groß + DB
2x Led, 2x Taster, 1x piezo . Ui ist für 64 Kanäle gemacht, funktioniert natürlich auch von 8 bis 128 wobei es dann aber einige Verschiebungen gibt.
-
Thread
BME680 etwas ATMega-freundlicher auslesen
dev->calib.t_fine = (int32_t) (var2 + var3); calc_temp = (int16_t) (((dev->calib.t_fine * 5) + 128) >> 8); return calc_temp; } /*! * @brief This internal API is used to calculate the pressure value. */ static uint32_t calc_pressure(uint32_t pres_adc, const struct bme680_dev *dev) {
Zumindest beim BME280 gabs dann ganz hinten im DB noch Rechenfunktionen in 32Bit. Sind die beim 680er verschwunden?
-
Thread
Frage zum ADC Modus
Christoph db1uq K. schrieb im Beitrag #5982503: > das ganze ist jetzt eher minimalistische Kunst Das dachte ich mir auch, als ich das gestern kurz überschlagen habe. ;-)
gibt keine Garantie oder gar Spezifikation, wieviele Bits es bei welcher Frequenz sind. Christoph db1uq K. schrieb im Beitrag #5982503: > Die Begrenzung liegt bei meiner Aufgabe eher in der Ausführungszeit der > Interruptroutine. Ja, klar. Viel Rechnerei kannst du mit einem AVR dann nicht mehr
-
Thread
HEX Editor AVR Controller
exakt über das Problem. Der Offset im Segent ist vorhanden. Meine DIY Software verkackt beim 128KB IntelHex file für den BluePill. Da muß ich nochmal in alten VisualStudio-Zeugs nachbessern. Waren beim ollen AVRTiny44 oder 89S8252 das noch unsichtbare bugs fällt es nun beim BluePill mit 128KB auf sobald man die ersten 64K überschreitet. Jetzt brauche ich ein 128kB file was ab 0x08000000 gespeichert wird.
-
Thread
Zeta SBC V2 Z80 mit Floppy Disk
www.retrobrewcomputers.org based on CP/M-3 BIOS V1.13 TR 950314 E: MDrive 768k H:-K: DOM Module 128 MB E> Wie man sieht kann ein Bankbios bis in die Gegend von 62Kbyte TPA anbeiten, hier auf einem Z280. Gruß, Holm
Von dem meisten Zeugs da unten habe ich noch nie etwas gehört. Bekannt sind mir nur 68HC11,68000, AVR, Blackfin, DSP16, Intel, MicroBlaze als Softcore und die MSP's, sowie V850 aus meiner Zeit bei Renesas vor 20 Jahren. Motorola 68HC11 A29K Adapteva Epiphany Atmel AVR Blackfin C4x CRIS D30V
-
Thread
Welches Linux als Windows7-Ersatz
mit Flashen von Controllern über > JTAG, etwa STM32? Open-OCD über Kommandozeile oder wie? Für AVR benutze ich avrdude und dazu die GUI AVR8-Burn-O-Mat (wie unter WIndows). Für STM32 nutze ich die in der System Workbench integrierte Funktion oder den STM32 Cube Programmer (kann GUI und Command-Line
> den Abfahrtszeiten kann man sogar übers Internet erreichen. Beispiel: https://iris.noncd.db.de/wbt/js/index.html?bhf=BL&&style=qran&typ=ab (Bahnhof "BL" - Berlin Lehrter Bahnhof ;)
-
Thread
Näherung für ArcusTangens?
libgcc eingebaut. Wer's ausprobieren möchte: https://sourceforge.net/projects/mobilechessboar/files/avr-gcc%20snapshots%20%28Win32%29/avr-gcc-10.0.0_2019-12-16_-mingw32.zip/download ist ein ZIP mit avr-gcc.exe für Windos. Es braucht nichts installiert werden, einfach ZIP auspacken und ./bin-Verzeichnis
1) ZIP runterladen und auspacken. 2) Patches aus ./patch auf die Quellen von GCC trunk bzw. avr-libc trunk anwenden. 3) Executables x-Flag setzen für: ./libgcc/config/avr/libf7/f7renames.sh (gcc) ./libgcc/config/avr/libf7/f7wraps.sh (gcc) ./devtools/mlib-gen.py (avr-libc) 4
-
Thread
AVR8ASM-Projekte
Hallo Bernd S., für LunaAVR verwenden wir schon seit Anfang an, nur eine Assembler Version. Da das interne FrameWork auf Assembler implementierte Bibliotheken (Interface und Module) basiert. https://avr.myluna.de/doku.php?
------------- ' System Settings '--------------------------------------- const F_CPU = 8000000 avr.device = atmega328p avr.clock = avr.F_CPU avr.stack = 42 '--------------------------------------- ' Macros '--------------------------------------- #define BV(n) as (1<<(n)) #define NBV
-
Thread
cannot read spec file 'device-specs/specs-atmega4808'
avr/lib/avr51/atmega1281 avr/lib/avr51/atmega1284 avr/lib/avr51/atmega1284p avr/lib/avr51/atmega128rfa1 avr/lib/avr51/atmega1284rfr2 avr/lib/avr51/atmega128rfr2 avr/lib/avr51/at90can128
avr/lib/avrxmega6/atxmega128b3 avr/lib/avrxmega6/atxmega128c3 avr/lib/avrxmega6/atxmega128d3 avr/lib/avrxmega6/atxmega128d4 avr/lib/avrxmega6/atxmega192a3 avr/lib/avrxmega6/atxmega192a3u
-
Thread
Atmega128 - Programm wird geladen, aber LED blinkt nicht?
Das Ganze lade ich mit folgendem Skript über einen AVRISP XPII auf den Mikrocontroller: avr-gcc -Wall -Os -DF_CPU=16000000UL -B 9600 -mmcu=atmega128 -c main.c -o main.o avr-gcc -Wall -Os -DF_CPU=16000000UL -B 9600 -mmcu=atmega128 -o main.elf main.o rm -f main.hex avr-objcopy -j .text -j
einen völlig falschen Controller compiliert worden ist. Heinrich W. schrieb im Beitrag #5907356: > avr-gcc -Wall -Os -DF_CPU=16000000UL -B 9600 -mmcu=atmega128 -c main.c > -o main.o
-
Thread
Raspberry Pi 4 vorgestellt
> Aber ja, ein paar 5V-tolerante Pins wären schon nett. Mach dich von der AVR denke frei. Seit mindestens 15Jahren wird nichts mehr fuer 5V entwickelt. Es wuerde mich nicht wundern wenn bald alles von 3.3V auf 2.5V oder 1.8V runtergeht Olaf
schrieb im Beitrag #6053544: > Ich nutze den RPI4 als Desktopersatz, was mich stört ist das es kein > AVR-Studio für den RPi gibt Programmieren in Lazarus / FreePascal und Brennen mit Burn-O-Mat / AVR-Dude. Funktioniert super.
-
Thread
I2C Slave mit dem Attiny 841
Hi, was Du vorher an I2C auf dem AVR Atmel kanntest, ist für den Attiny841 so nicht mehr gültig. Man muss nach dem Datenblatt ein I2C Client neu schreiben. Vielleicht gibt es auf github.com schon etwas.
Das hast du nicht drin. Geht das auch diese Datein? Wenn du wenigstens auch nur einmal kurz in's DB geschaut hättest, dann wüsstest du, dass die I2C-Hardware des 841 ausschließlich Slave sein kann...
-
Thread
STM32 und Linux - Einsteigerfragen
descr: unknown device bzw: # st-flash write main.bin 0x8000000 st-flash 1.5.1-28-gd040db5 2019-06-06T13:16:33 INFO common.c: Loading device parameters.... 2019-06-06T13:16:33 WARN common.c: Invalid flash type, please check device declaration Unknown memory region
für die Programmierung, mur ein USB Kabel. War seiner Zeit voraus weil die meisten da noch mit ihren AVR glücklich waren und das erst mbed Board mit LPC1768 relativ teuer war.
-
Thread
Attiny25 Interrupt wird (selten) ingnoriert
Timer/Counter1 Control Register Bit5:4 Set OC1A output =>PB1 ldi temp, 0b00111000 ;Bit3:0 CK/128 = 8MHz/128 = 62,5Khz out TCCR1,temp ; Timer/Counter Interrupt Mask Register ldi temp, (1<<TOIE0) ;TOIE0 = 1, Overflow Interrupt enable out TIMSK,temp ; MCUCR - MCU Control Register
des Vorteilers, noch bevor [avrasm] putii TCCR1,(1<<COM1A1)+(1<<COM1A0)+(1<<CS13) ; set OC1A, /128 [/avrasm] durchlaufen wurde, folglich wird OC1A gar nicht gesetzt. Dies wird verhindert, indem man den Vorteiler zurücksetzt (auf 0), dann hat man 128 Takte Zeit. Bis dieses Zurücksetzen aber im
-
Thread
Physikalischer CAN Bus mit Transceivern aber ohne CAN Controller
Harald schrieb im Beitrag #5858661: > Und kein Sleep-Modi Aus dem DB: Integrated PMU (Power Management Unit) to minimize power consumption during Sleep, Deep-sleep, and Deep power-down modes. Three reduced power modes: Sleep, Deep-sleep, and Deep power-down
die CAN-Hardware sorgt automatisch dafür, daß alles richtig ankommt. AVRs mit CAN sind z.B. AT90CAN128, ATmega64M1 und deren kleineren Brüder.
-
Thread
Frage zur Funktionsweise des Netzwerk-Adapters
wiki/PHY https://www.microsemi.com/product-directory/physical-layer/3583-10g-ethernet-phys Mit AVR oder Raspi wirds aber schon bei 1Gbit etwas anspruchsvoll.
max. mögliche), am besten das ganze zusammen mit einem der folgenden Methoden: 64b/66b encoding 128b/130b encoding 256b/257b encoding https://en.wikipedia.org/wiki/64b/66b_encoding#Technologies_that_use_256b/257b_encoding
-
Thread
Wird man als Entwickler ausgenutzt?
AVR schrieb im Beitrag #6121610: > Es gibt > fähige Entwickler, die niemals IGM Niveau erreichen werden. Es gibt halt > Situationen, wofür man nichts kann und nicht beeinflussen kann. Es gibt aber
DB und die Ursprungsdaten werden konform der DSGVO sauber gelöscht. Der Bewerber ist ab dort immer trackbar, sogar über Unternehmensgrenzen hinweg. Usertracker und Google arbeiten ja auch ähnlich und können
-
Thread
Nostalgie: Spieleentwicklung auf dem Atari ST
Megamax C (09/1986): http://www.stcarchiv.de/stc1986/09/megamax-c Turbo C 1.x (1988): https://ibb.co/Db3jdQr
bis auf den vorletzten Satz. Sorry :) PPS: Hier wenigstens noch ein paar Stichworte zum Goocklen. AVR, DVS, AU, WAV und RAW.
-
Thread
low-power Oszillator mit 74HC1G14 : Reinfall !
halte das beim anfangs gewählten 74HC1G14 nicht für realistisch. Einfach mal die Kurven in dessen DB anschauen. Auch so konnte ich bis jetzt keinen CMOS-Trigger finden, der über 1 oder 2 mA kommt.
halte das beim anfangs gewählten 74HC1G14 nicht für realistisch. > Einfach mal die Kurven in dessen DB anschauen. Jens, um deiner sachlichen Hartnäckigkeit willen: Obwohl ich Hochglanzwerbebroschüren hasse (weil sie nur die "heile Welt" zeigen) habe ich das eben getan: Erstbester Treffer "Nexperia Rev
-
Thread
Spannungsunterbrechung erkennen
wahrscheinlich stehen alle für diese Entscheidung nötigen Informationen da genauso drinne wie in den DBs der AVR... Man muss halt nur lesen und was mit den Informationen des DB anfangen können. Das ist alles...
werden. Zeitkonstante? > Spannungsanstieg? Genau das ist der Punkt. Rechne das einfach für die vom DB gegebenen Spezifikationen aus. Inbesondere für die 150µA mittlere Stromaufnahme und die 128 kHz Takt der von mir vorgeschlagenen Lösung. Wer, zum Teufel braucht da einen *ELKO*? Und wofür genau? Das
-
Thread
STM32G071 LQFP32 und der HSE
#5781126: > Irgendwie hab ich Bauchschmerzen dabei 4 UART mit dem RC zu betreiben. Ja, das sind die AVR-geschädigten :-) Nein im Ernst: Der LC ist genau genug, keine Sorge.
>> Irgendwie hab ich Bauchschmerzen dabei 4 UART mit dem RC zu betreiben. > > Ja, das sind die AVR-geschädigten :-) > > Nein im Ernst: Der LC ist genau genug, keine Sorge. Ja, ich gebe mich zu erkennen ;) AVR Altbestände werden bei Gefrickel noch verbaut, aber Neudesigns mach ich nurnoch mit
-
Thread
Neue Wanderkiste Kittler
Wo die Anzeigen Herkommen ? (Datenblatt War nicht auf > zutreiben) Aus irgend einem Posten. Nein DB gibt es keine. irgend wo hat mal jemand im Wanderkistenthread erklärt, wie die 7-Segmentanzeigen gemultiplext sind.
optischen Grayhill Encoder (unbenutzt) 20x Transistor BD139 15x Transistor BD138 1x Modul mit ATMega 128 PU (nur aufgelötet sonst unbenutzt) 1x Modul mit ATXMega 128A1 (nur aufgelötet sonst unbenutzt) Final noch ein Bild ohne aufgelegte IC Stangen vor dem Weiterversand der Wanderkiste. Gruß, Markus
-
Thread
SCN8049H Prozessor
schon damals CMOS-Speicher und wer persistenden Speicher > benötigte, verwendete diesen. PCF8571 128Byte I2C-Bus Ram. Da sieht die Jugend von heute mal wie schwer wir es damals hatten. Einen eigenen Baustein damit der Mikrocontroller 128Byte Speicher hatte. :-) Olaf
die Intel MC begreifen. Hab mir das Buch "Das 8051er Lehrbuch" gekauft und war geheilt. Bin beim AVR geblieben.
-
Thread
PWM mit ATtiny13 liefert SIN und COS
256] = { ... }; const uint8_t cos[256] = { ... }; main() { uint8_t i = 0; CLKPR = 128; CLKPR = 1; DDRB = 3; PORTB = 0x3c; OCR0A = 128; TCCR0A = 0xf3; TCCR0B = 1; for (;;) { OCR0A = sin[i]; OCR0B = cos[i]; i++;
etwas Funktionalität hinzufügen (2 unabhängige Frequenzen, die 2. eben als COS): [c] #include <avr/io.h> #include <avr/pgmspace.h> #include <stdint.h> #define F_CPU 9600000UL // Quarz mit 9.600.000 MHz #define TIMERRELOAD 256 // Nachladewert des Timers 0-255 #define AUFLOESUNG
-
Thread
Passt der Verstärker zu meinen Lautsprecher?
Verstärker und Lautsprecher entscheidend. Ich kann hier ev. noch die Denon Verstärker empfehlen. AVR-X2xxx Serie ist da ev. in deiner Preisklasse. Gibt es auch einige gebraucht. Die kleinen xxx stehen für 100, 200, 300, 400, 500. Da kommt jedes Jahr ein neuer raus. Gruß.
amplifier with a DF of 20. This will cause an audible peak-to-peak frequency response variation of ± 0.5 dB across the audio band." MfG
-
Thread
Grundbeschaltung ARM (z.B. STM) im Vergleich zu AVR
-Bit zu gehen. Also Segger J-Link und zum Beispiel STM. Funktioniert das genauso einfach wie beim AVR, besonders auf der Hardwareseite? Beim AVR schließt man (A)VCC und (A)GND and, eventuell noch Quarz oder Oszillator und die sechs Pole des ISP-Steckers und man hat ein einsatzbereites System. Funktioniert
zu gehen. Also > Segger J-Link und zum Beispiel STM. > Funktioniert das genauso einfach wie beim AVR, besonders auf der > Hardwareseite? > Beim AVR schließt man (A)VCC und (A)GND and, eventuell noch Quarz oder > Oszillator und die sechs Pole des ISP-Steckers und man hat ein > einsatzbereites System
-
Thread
7 segment cd4543 und 7 Segment Grundsatzfrage
machen das so. Und hier gibt es einen Artikel dazu noch: https://www.mikrocontroller.net/articles/AVR-Tutorial:_7-Segment-Anzeige#Schaltung https://www.mikrocontroller.net/articles/Datei:Tut_7_Seg_03.gif ciao gustav
vom 4543 liegt ja dann jeweils ca. 0,7V an. Mit invertieren meinte ich also die Wahreitstabelle im DB vom 4543. Ich hab die Schaltung mal zusammengeschustert und sie funktioniert gut.
-
Thread
Attiny85 PWM
grösser als TOP, passiert am PWM Pin nix, da der Vergleichswert nie erreicht wird. Beispiel: OCRA = 128 und OCRB = 64. Am Pin OC0B wird eine PWM mit 50% Tastgrad ausgegeben. OCRA = 128 und OCRB = 192: Am Pin OC0B passiert nichts, da der Wert 192 nie erreicht wird.
Klappt es mit einem anderen AVR8 (so denn einer, hoffentlich, vorhanden ist)?
-
Thread
Rust - ist das hier um zu bleiben?
unknown-linux-gnux32 x86_64-unknown-linux-musl x86_64-unknown-netbsd x86_64-unknown-redox [/pre] AVR soll auch unterstuetzt werden, sobald das AVR Backend fehlerfreier ist. Solange gibt es das avr-rust projekt. Der Buildprozess ist mit cargo super angenehm. Man hat eine gewisse Sicherheit was Rebuild-Sicherheit
Werkzeugen? Wie schwer tut man sich wenn z.B. der Chef man möchte doch z.B. von STM32 oder PIC/AVR auf ein Rust Entwicklungssystem umzusteigen? Wird PIC/AVR unterstützt? Gibt es Case Studies wie man ein existierendes erfolgreiches embedded Projekt (STM32/AVR/PIC) von C/C++ auf Rust umsetzt und
-
Thread
Welches Display für µC? möglichst viereihig mit IIC
kompatibel zu den üblichen HD44780-Displays. Ja genau. Allein das rechtfertigt den Preis. Habe das DB schon gespeichert. Wahrscheinlich bestelle ich das Teil. Veilleicht gibts das iwo billiger, aber wenn sich eine Firma die Mühe macht, auf deutsch zu dokumentieren, kann man das auch mal per Anerkennung
jede Lib ist dazu fähig, notfalls geht man weit zurück aus der Arduino Umgebung raus zu pur C für AVR, auch da gibt es LIBs.
-
Thread
ST7735 3,3 oder 5 Volt ?
selber (je nach Pin). Du verbaust echt einen Grafik-Treiber selber? Ansonsten zählt, was im Display-DB steht.
Danke für die hinweiße. im genauen geht es um: https://www.ebay.de/itm/1PCS-NEW-1-8-128X160-SPI-TFT-LCD-Display-Modul-SD-Card-f%C3%BCr-Arduino-AVR/162842242688?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649 Und da habe ich ganz vergessen zugucken ob 3,3 oder 5 Volt. Der
-
Thread
Die SSD1306 mag den MSP430 nicht (antwortet nicht).
- 56 kB RAM Options: 128 B - 4 kB
column & 32) /4 + (column & 64) /4 + (column & 64) /2 + (column & 128)/2 + (column & 128)/1 ; return returnValue; } void SendCharDouble(unsigned char character, unsigned char x, unsigned char y) { unsigned char obenlinks [7] = {0x40, 0x00, 0x7C, 0x12
-
Thread
Wieso Wert nicht gleich auf 0 setzen?
Habe ich hier auf der Seite gefunden.. https://github.com/dergraaf/avr-can-lib/blob/master/src/at90can.c
serieller IO ist es üblich, das Register gelesen und beschrieben werden müssen. Niemand würde, ohne das DB zu lesen, solch Registerzugriffe in der Reihenfolge vertauschen oder "optimieren". Ein Kommentar? Didaktisch OK. Je nach skills der Zielgruppe. Am Ende will man aber weder das DB im Code haben, noch
-
Thread
Z80 wie AVT nutzbar? Gesperrt
finde in dem Moment wo man mit Assembler drangeht, hat der Z80 nur Nachteile im Vergleich zu einem AVR. Allein die Geschwindigkeit, die der AVR erreicht...
Es geht um Z80 nicht AVR... Für AVR gibte s genug Pascal derivate..die gängigsten da wohl wären Mikroe PAscal und elab
-
Thread
Anfänger braucht Entscheidungshilfe
Hallo, Du kannst ja mal hier https://www.sprut.de/ oder hier http://www.avr-asm-tutorial.net/avr_de/index.html schauen. Beide lassen sich in Assembler und C programmieren. Es gibt auch noch Bascom. Meine Empfehlung wäre der AVR mit C Programmierung. MfG
im AVR Studio compilieren und dann mit fremder Software (avrdude) außerhalb des AVR Studios in den Mikrocontroller übertragen. Wer Debuggen möchte, braucht einen Atmel ICE. Hier würde ich aber vorher abklären
-
Thread
EEprom schneller schreiben
Guten Morgen, ich habe hier einen AT90Can128 und betreibe einen Can Open Slave drauf. Soweit so gut. Ich empfange per SDO Blocktransfer Parameter Blöcke. Die Blöcke sind 80 Byte groß. Diese Empfangenen Blöcke sollen wenn sich was verändert hat
werden. Das könnten wiederum z.B. den UART-Interrupt bei 115kBaud Daten verlieren lassen usw. Der AVR hat ja keine Prioritäten, um andere Interrupts zu unterbrechen. KISS, Keep It Short and Simple.
-
Thread
Schnelle Bitmaske in AVR-Assembler
pop ZH pop ZL .org (PC+$7f) & $ff80 ;damit's an einer 256 Byte-Grenze losgeht bitmask: .db 128,64,32,16,8,4,2,1 ;1 .db 128,64,32,16,8,4,2,1 ;2 . . . .db 128,64,32,16,8,4,2,1 ;32 ;die Tabelle kann ggf. optimiert werden, falls count niemals einen eingeschränkten Wertebereich überschreitet
überhaupt gar nicht pushen, wenn man ZL/ZH sowieso reserviert: [code] .dseg .org 0x100 BITMASK: .DB 128,64,32,16,8,4,2,1 .cseg mov zl,count andi zl,7 lpm data,z [/code] 5 Takte und damit schneller als die Lösung des Threaderstellers.
-
Thread
Scheduler für AVR
an das LCD static void lcd_out( u8 data ) { lcd_dataline_null(); if (data & 0x10) LCD_PORT_DB4 |= (1<<LCD_DB4); if (data & 0x20) LCD_PORT_DB5 |= (1<<LCD_DB5); if (data & 0x40) LCD_PORT_DB6 |= (1<<LCD_DB6); if (data & 0x80) LCD_PORT_DB7 |= (1<<LCD_DB7); lcd_enable_puls(); } //
LCD static void lcd_out( u8 data ) { lcd_dataline_null(); if (data & 0x10){ LCD_PORT_DB4 |= (1<<LCD_DB4); } if (data & 0x20){ LCD_PORT_DB5 |= (1<<LCD_DB5); } if (data & 0x40){ LCD_PORT_DB6 |= (1<<LCD_DB6); } if (data & 0x80){ LCD_PORT_DB7 |= (1<<LCD_DB7)