Het adres is heel belangrijk. Als uw adres is uitgeschakeld door een paar bytes, dan u deze bytes vanaf de voorkant of achterkant van uw tekenreeks verliest. Geen fouten gebeuren. Deze 16 * tmp5 – 1 ziet er OK. Het is niet OK. Fundamentele stempels zitten strikt aan juiste math. Fundamentele Stamps 2s toestaan haakjes als 16 * (tmp5-1). Met deze 16 * tmp5-1 is eigenlijk (16 * tmp5) – 1 en u zou het af door 1 adres. In dit geval verloor ik de eerste letter van de string die ik aan het bewerken was.
Wiskunde kan leuk zijn. De Basic Stamp-2s steunen negatieve getallen, maar je moet voorzichtig zijn met hen. Als u hebt twee variabelen aftellen en u hen tmp3 vergelijkt > = tmp4. Tmp3 0 bereikt als u aftrekken 1 zullen het negatieve en meer dan tmp4. Een debuginstructie zetten tmp3 en zien waar het gaat. Mijn doel is in dit geval tmp5. Mij gewijzigde op voor tmp4 > = tmp5 en laten tmp3 Ga naar 0. Vervolgens aangepast ik tmp5 door – 1 voor de 0 gebaseerde matrix van tekenreeksen. Nullen zijn niet goed voor math of vergelijken.
Het belangrijkste ding dat je nodig hebt voor een interactieve ding is memory. De goedkoopste en gemakkelijkste geheugen te gebruiken is een seriële E-prom. Wat is een E-prom? Het is een eclectisch programmeerbare en eclectisch uitwisbaar geheugen met een seriële interface. E-Proms houden hun geheugen wanneer de stroom is uitgeschakeld. E-Proms laat u opnieuw het programma van het geheugen. Meestal tien miljoen of zo cycli. Uw handleiding te lezen. U kunt vrijwel elk type van gegevens opslaan in een E-Prom. Ik wou dat ik had om te delen met vrienden. Ik zal werken op LCD-schermen en soort een domme terminal om te laten zien hoe gemakkelijk het is om uw ideeën verbinden met uw mensen.
Het codebestand is EPromEW6.txt. U moet het EPromEW6 wijzigen. bs2 voor het uit te voeren. Het Zip-bestand heeft het codebestand en foto's.
De meeste E-Proms zijn dat byte grootte geheugen matrices. De grootste gebruiker van geheugen is steken zoals de quinquennial "Hello World". Tekenreeksen zijn een matrix van bytes in het geheugen van de processor. Tekenreeksen zijn zeer geschikt voor E-Proms. In dit voorbeeld mijn seriële E-Prom is 2048/8 of 16 K met 128 16 Byte pagina's. Ja, 128 tekenreeksen. Zoals de meeste seriële apparaten hebben E-Proms een processor die is ingesteld om te schrijven en te lezen van de geheugen-matrix. U bepalen met opdrachten en input en output leidt. Timing is alles.
U moet een heleboel pinnen te gebruiken een seriële E-Prom wanneer u naar het geheugen schrijft. De pinnen: SO Bytes Output, SI Bytes Input, CK klok en CS Chip selecteren. Ik gebruik aparte pinnen voor SO & SI ter bescherming van mijn E-Prom. Opdrachten kunt u de E-Prom vertellen wat u wilt doen. Om te lezen van een bytewaarde u lagere CS en stuur een commando ' Read '. "ShiftOut epRead\8, erAddr\16." De \8 vertelt ShifOut voor het verzenden van 8 bits totale. Dus 32 100000 is is slechts 6 beetjes. De \8 maakt het 00100000 en dat is 8 bits. Dat is wat de E-Prom nodig heeft. Lezing is een continue stroom van Bytes, zolang u klok pulsen verstrekt. "ShiftIn myStr(tmp1)". U kunt een adres met de opdracht Lees. Elke pagina is 16 Bytes. Zo is het 32 pagina 1. Vergeet niet dat het E-Prom-geheugen gelijk is aan nul gebaseerd en tekenreeksen zijn nul beëindigd.
Schrijven is een beetje ingewikkelder. U houdt schrijven beschermen en Hold pinnen hoge stel u CS laag en versturen in een opdracht Write Enable. "SHIFTOUT epSi, epCk, MSBFIRST, [epWrtEN\8]". U breng CS pauze 5ms en vervolgens lager CS pauze 5ms. Dat treedt de opdracht in de E-Prom. Vervolgens Stuur je een commando ' Write '. "SHIFTOUT epWrite\8, erAddr\16." Schriftelijk moet u meestal alle 16 bytes schrijven in één opdracht en het correct beëindigen. In een lus "SHIFTOUT myStr(tmp1)." Toen ik 5ms pauzeren en verhogen mijn CS om te vertellen van de E-Prom om mijn gegevens te schrijven. U moet wachten of de E-Prom vastloopt. Als u de E-Prom opnieuw wilt lager u CS wachten 5ms vervolgens CS wachten 5ms verhogen dan verlagen van CS en blijven met uw commando's. Ik houd mijn CS laag met een 10K Ohm weerstand op grond.
De E-Prom heeft ook een pin schrijven beschermen. Met deze pin laag kan je niet schrijven naar de E-Prom. Het heeft ook een Hold-pin dat wanneer het slinkt de E-Prom uitgeschakeld is. U kunt schrijven een kwart, half of al het geheugen met statusvlaggen beschermen. Ik houd Schrijf beschermen en Hold verbonden met VDD.
Aanpakken is verplicht en gemakkelijk. Mijn adres is op 16 Byte grenzen, dus het is makkelijk. U kunt elke pagina 16 bytes van het geheugen dat u wilt en niets anders wordt beïnvloed. Echt werkgeheugen op 128 16 byte snaren. Vergeet niet dat het geheugen is nul gebaseerd en tekenreeksen zijn nul beëindigd. Tekenreeks 1 is eigenlijk reeks 0. Al mijn string nummering 1 gebaseerd is. Mijn programma zorgt voor de details. In mijn programma epAddr is de tekenreeks bewerkingspunt en myStrS is hoeveel snaren heb. Weergeven van de snaren begint bij 0 en loopt al myStrS nummering van elke tekenreeks. Aaneengeschakelde tekenreeksen alleen de eerste tekenreeks krijgt een nummer. Sub snaren alleen eerste een nummer krijgt.
Één ding over tekenreeks behandeling is dat de meeste systemen tekenreeksen met nul beëindigd gebruiken. Dat betekent dat de laatste Byte in "Hallo World0" een nul Byte is. Een 16 Byte-matrix heeft 15 tekens en een afsluitende nul. Ook zijn de meeste Byte-matrices nul gebaseerd. Dat is de eerste positie gelijk is aan nul en de laatste is 15. Voor steken om erkend te worden moet u ervoor zorgen dat is de nul op de juiste plaats. U kunt slechts één 16 byte-matrix gebruiken voor alles. Voor korte snaren gewoon verplaatsen naar de voorkant en hen beëindigen. De rest van de tekenreeks wordt genegeerd. Bijhouden van uw positie. Als u een tekenreeks naar de volgende tekenreeks zijn tekstoperatoren kunt u niet alle 16 bytes. Waarom? De uitvoer routine moet nog de eerste tekenreeks beëindigd.
Andere gegevens moet worden opgemaakt om te passen in een bytematrix. Een woord heeft 16 bits of twee Bytes. De Byte in een hoge en een lage Byte. Longs of tweepersoonskamers hebben 32 Bits of vier Bytes. Byte 3, Byte 2, Byte 1 en 0 Byte. U bouwt formateurs om te zorgen voor dit type gegevens. Deze Byte voor Byte in een order die u wilt opslaan. Zoals hoge Byte dan lage Byte. Laden ze terug de zelfde manier. Het geheugen van de meeste processors is 16 bit pagina's. Word formaat geheugen dat kan worden uitgesplitst in Bytes en op sommige naar de Nibs of Bits voor variabelen. Wanneer u opslaan van een Word-variabele hebt meestal u toegang tot haar Bytes als variabelen.
Sommige processors hebben goede string handling functies. Ik ben met behulp van een Parallax.com Basic Stamp 2 in dit voorbeeld. De opdrachten gebruikt zijn Debug, DebugIn, kanarie en SerOut. Debug- en serOut zijn dezelfde functie in de meeste opzichten die ze gewoon gaan naar verschillende plaatsen. Input string u een STR formatter die naar tekenreeksen zoekt. "DebugIn STR time\15\13" zoekt en input die string tot 15 tekens lang dat het laadt in een Byte-matrix tijd wanneer de gebruiker op Enter(13). Als de tekenreeks minder dan 15 tekens is worden worden de overige tekens gevuld met nullen. De reeks "Hallo" zou "Hello00000000000" in het geheugen. "Debug STR tijd" afdrukken "Hello". De eerste nul Hiermee beëindigt u de tekenreeks en het overige wordt genegeerd.
Getallen kan leuk zijn. De input formateurs zijn voor tekenreeksen. "DebugIn DEC tijd" kijkt naar de tekenreeks "hello123bye" en zet deze om in het nummer 123 en zet het in de variabele tijd. Het gaat voorbij aan de rest. Handig voor een heleboel interactieve dingen. Voor Bytes arrays gebruikt u controlekarakters zoals nul als een afsluitweerstand aan het einde van tekenreeksen. U maakt andere besturingstekens aan uw behoeften. Ik gebruik de '+' om aparte korte zingt en lange reeks deelnemen aan mijn output routines. Korte snaren kunnen worden samengesteld gewoonlijk aan de voorkant van de E-Prom. Vijftien tekens zijn nooit genoeg. U kunt allerlei soorten besturingselementen in output routines.
Mijn programma: de knop invoert opdrachtmodus. Voer een opdracht en druk op enter op het toetsenbord. U kunt niet houden deze kleine processoren die wacht op een invoer. Ze zijn gevoelig voor het crashen. U voert een actieve lus die wachten op een knop worden ingedrukt. Mijn programma slaat het laatste adres en de telling van de tekenreeks in de EEPROM van de processor en het omhoog laadt op start of opnieuw op te starten. Stel myStrs in op nul voor nieuwe snaren en 1 voor uw snaren worden geladen. Mijn programma is een snelle tekenreeks loader voor een E-Prom.
Mijn programma gebruikt de debug-terminal en een standaard knop. U op de knop om de modus van de opdracht. Typ uw input en druk op enter. De led moet knipperen wanneer een opdracht te wachten. Vergeet niet om de processors EEprom ingesteld wanneer u een sessie beëindigen.
Als u wilt bewerken uw koorden na een opnieuw op te starten met opdracht 60 eerst te laden uw adres en tekenreeks tellen in mijn programma. Opdracht 10 zal een nieuwe tekenreeks na de laatste tekenreeks invoeren. Command 40 bewerkingen een tekenreeks. Wanneer u klaar bent met uw snaren opdracht use 50 het adres en tekenreeks tellen naar de EEprom te schrijven. Gebruik de editor om myStrs naar nul voor nieuwe strijkers of 1 of hoger te laden uw koorden en re-vracht naar de programma.
De Arduino is gewoon te leuk. Uitstekende tekenreeks behandeling.
Picaxe systemen: Ze hebben geen matrices. Alleen de x2 delen hebben een ShiftOut en ShifIn commando's. De Kladblok is een tijdelijk-geheugengebied voor opslag van gegevens, zoals arrays. Alleen op de volgende Picaxe chips PICAXE - 28 X 1, 40 X 1, 20 X 2 delen hebben 128 bytes van de Kladblok (0-127) en PICAXE - 28 X 2, 40 X 2 delen hebben 1024 Kladblok bytes (0-1023). Toegang tot het gebruik van Kladblok: Set de aanwijzer is ptr = var, indirecte adressering is ' (post increment) en ' (postdecrement). Elke keer dat de ' variabelenaam wordt gebruikt met een opdracht die de waarde van de Kladblok-aanwijzer wordt automatisch verhoogd door een. Dit maakt het ideaal voor opslag van een één-dimensionale array van gegevens. Zie het voorbeeld in het handboek.
ShiftIN en ShiftOut: de spiin (shiftin ook geaccepteerd door de compiler)-opdracht is een 'bits-bang'-methode van SPI mededeling over alleen de onderdelen X1 en X2. Alle andere delen moeten gebruiken het steekproefprogramma ommezijde opgenomen om dit probleem is verholpen. Zie de opdracht 'hshin' voor een hardwareoplossing voor X1/X2 onderdelen. Of u kunt mijn doLights en checkLights van EasyLights.