Steeds meer I/O pinnen op ATTiny met Shift registreert (3 / 6 stap)

Stap 3: Voorbeeld #1: Code


De code is geschreven in de vergadering van de AVR. Als u met controllers zoals ATTiny werkt - is het een must! Het ziet er eng, maar in werkelijkheid is het veel eenvoudiger en gemakkelijker dan C.

Een andere reden voor het gebruik van assembler is dat deze code alleen 148 bytes ruimte na compilatie, moet terwijl de Arduino IDE produceert 644 bytes van binaire uitvoer voor dezelfde code (nog niet getest in AVR GCC), dus als u wilt om uit te breiden de functionaliteit van uw kleine project, hebt u minder dan 400 bytes om te werken met...

 /* * Shift register demo #1 * * ATTiny13A Running * ADC running * * PIN ASSIGNMENT: * PB0 - Shift Register Clock * PB1 - Shift Register Serial Data * PB2 - Shift Register Latch(Store) * PB3 - ADC3 (Potentiometer input) * PB4 - [NOT USED] * PB5 - RESET */ .include "tn13Adef.inc" .def A = R16 ; g.p. variable and/or function argument .def B = R17 ; Used in SEND_BYTE and ADC_START as temporary storage .def LED = R18 ; stores current LED output .def BCT = R19 ; Bit counter for SEND_BYTE .equ SRCK = 0 ; PB0 = Clock .equ SRDA = 1 ; PB1 = Serial Data .equ SRLC = 2 ; PB2 = Latch /* INTERRUPT VECTORS */ .org 0x0000 rjmp RESET ; Reset interrupt .org 0x0003 rjmp TC0_OV ; Timer1 interrupt /* * START!!! */ RESET: /* SETUP STACK */ ldi A, low(RAMEND) ; Set stack pointer out SPL, A /* SETUP PINS */ ldi A,0b0000_0111 ; Set output pins PB0..PB2 out DDRB,A /* SETUP TIMER1 */ ldi A,0b0000_0101 ; Set Timer Prescaler (1024) out TCCR0B,A ; This will cause Timer Interrupt every ~27ms ldi A,0b00000010 ; Enable Timer0 Overflow Interrupt out TIMSK0,A /* SETUP ADC3 */ ldi A,0 out ADCSRB,A ; Disable autotrigger(Free running) ldi A,0b00001000 ; Disable Digital Input on PB3(ADC3) out DIDR0,A ldi A,0b00000011 out ADMUX,A ; Source:ADC3, Align:RIGHT, Reference:VCC. ldi A,0b10000110 out ADCSRA,A ; Enable ADC with prescale 1/64 /* RESET REGISTERS */ ldi A,0x00 ; clear A ldi LED,0xFF ; Set all LED's to OFF(1-off, 0-on) rcall SEND_BYTE ; Clear display sei ; Enable interrupts /* Main loop */ MAIN: rjmp MAIN /* * Sends 8-bit data from LED register to Shift Register */ SEND_BYTE: ldi BCT,0b1000_0000 ; Set Bit counter next_bit: mov B,LED ; Move data byte to temp and B,BCT ; Check bit breq zero ; Set Data to 0 sbi PortB,SRDA ; Set Data to 1 rjmp shift ; shift zero: cbi PortB,SRDA shift: sbi PortB,SRCK ; CLK up nop cbi PortB,SRCK ; CLK down clc ; Clear Carry flag ror BCT ; Shift bit counter brne next_bit ; Next iteration sbi PortB,SRLC ; When done, Latch nop cbi PortB,SRLC ret ; Done /* Start ADC conversion. Saves result to A */ ADC_START: sbi ADCSRA,ADSC ; Start ADC conversion adc_wait: sbic ADCSRA,ADSC ; Check conversion status rjmp adc_wait ; Skip jump if completed in A,ADCL ; Get low bits in B,ADCH ; Get high bits lsr B ; Shift 2 bits to the right ror A ; through Carry lsr B ror A ret /* Timer 0 overflow interrupt */ TC0_OV: rcall ADC_START ; start ADC0 Conversion /* Compare Input, Set output */ cpi A,0xC8 ; A>=200? brlo gt_160 ldi LED,0b11100000 rjmp sr_write gt_160: ; A>=160? cpi A,0xA0 brlo gt_120 ldi LED,0b11110000 rjmp sr_write gt_120: ; A>=120? cpi A,0x78 brlo gt_80 ldi LED,0b11111000 rjmp sr_write gt_80: ; A>=80? cpi A,0x50 brlo gt_40 ldi LED,0b11111100 rjmp sr_write gt_40: ; A>=40? cpi A,0x28 brlo lt_40 ldi LED,0b11111110 rjmp sr_write lt_40: ; A<40 ldi LED,0b11111111 sr_write: rcall SEND_BYTE ; Send byte to shift reg. reti ; return 

Gerelateerde Artikelen

4 x 4 x 4 LED kubus upgrade met Shift registreert (74hc595)

4 x 4 x 4 LED kubus upgrade met Shift registreert (74hc595)

dit project begon met een zak van LED's die ik had verwijderd uit zaklampen, converteren naar UV zaklampen. Ik wist dat ik zou vinden iets leuk om te gebruiken met, maar het was maanden voordat ik wat bedacht te doen met hen. Toen ik zag een LED kubu
Multiplexing 7 Segment verschijnt met Arduino en Shift registreert

Multiplexing 7 Segment verschijnt met Arduino en Shift registreert

In dit instructable, ik zal onderwijzen de basisprincipes van multiplex 7 segment displays met behulp van een Arduino en een paar van shift registers. Dit project is geschikt voor het weergeven van de numerieke gegevens of als u wilt bepalen van een
Arduino aangedreven 7 seg LED display met behulp van Shift registreert - ik maakte het op TechShop

Arduino aangedreven 7 seg LED display met behulp van Shift registreert - ik maakte het op TechShop

zeven gesegmenteerde displays zijn groot. Ze zijn vrij eenvoudig, niet veel macht, en hebben een heleboel flexibiliteit als het gaat om het weergeven van nummers. Maar afgezien van 14 pinnen net om het te draaien is zo'n pijn. Als slechts er een mani
Multiplexing van vier 7-segment displays met behulp van Shift registreert Arduino

Multiplexing van vier 7-segment displays met behulp van Shift registreert Arduino

Hallo iedereenIk ontwierp een eenvoudige manier om het multiplexen van vier 7-Segment displays met behulp van Shift registreert en een ArduinoLaten we het 7 segment display multiplexStap 1: Stap-1: laten we ontwerpen Neem vier 7-segment displays en h
Auto broeikasgassen - steeds meer voedsel, uitbreiding van het seizoen en slagen met Tropicals

Auto broeikasgassen - steeds meer voedsel, uitbreiding van het seizoen en slagen met Tropicals

Wij zijn net als de meeste mensen die in oude volkstaal huizen of in een klein appartement wonen, zeer beperkt op de vensterruimte. Ons huis was meer dan 300 jaar geleden, toen glas geen optie, was dus elke kamer slechts één venster waarrond heeft te
Hoe om te reizen de wereld en nog steeds mobiel bericht voor 3¢ per dag met behulp van een oude iPhone

Hoe om te reizen de wereld en nog steeds mobiel bericht voor 3¢ per dag met behulp van een oude iPhone

Dit instructable zal lopen u stapsgewijs door het nemen van een oude iPhone, SIM chips omwisselen en maken een wereldwijde telefoon welk kunt cellulaire dienst in meer dan 150 landen voor het verzenden van SMS-berichten met behulp van de volgende app
Seriële monitor ATtiny met behulp van de arduino walkthrough

Seriële monitor ATtiny met behulp van de arduino walkthrough

Allllllllllright dudes en dudets. Hier is whats up, we gonna attiny en arduino beste vrienden maken.Als u ooit hebt gewerkt met capacitieve switches weet u hoeveel het maakt je wilt je gezicht in een muur breken... Nu veronderstellen u hebben geen ma
Een ATtiny met Arduino Program

Een ATtiny met Arduino Program

volgt zijn aanwijzingen voor het programmeren van de ATtiny microcontrollers met behulp van de Arduino IDE. In gewoon Engels is dit hoe te programmeren 8-pins Atmel chips zoals u normaal een Arduino. Dit is cool, omdat de ATtiny klein is, en - goed -
Steeds meer uit uw goedkope software voor analoge borduurwerk

Steeds meer uit uw goedkope software voor analoge borduurwerk

enkele jaren geleden kocht ik sommige analoge software voor mijn Husqvarna Designer ik.  Heb ik niet kopen van de top van de lijn-software, maar wat ik heb gekocht (4D borduurwerk Extra) niet werk zo goed als ik dacht dat het zou moeten.  Ik verwacht
Steeds meer spanning op Power Supply

Steeds meer spanning op Power Supply

in dit instructable zullen we meer dan 12v uit atx of een wallwart met behulp van wallwarts en/of atx psuKEN OP UR EIGEN RISICO IK ZAL NIET VERANTWOORDELIJK VOOR DINGEN BREKEN.Voor chat en techbookStap 1: Bedrading het omhoog Draad elke voeding zoals
Programmering van een Attiny met Arduino IDE

Programmering van een Attiny met Arduino IDE

Attinys zijn een geweldige manier om te krimpen uw arduino project. Ik heb onlangs geprobeerd om deze grote instructies te volgen op de website van High Low Tech, maar het ziet eruit als zijn verouderd. Ze hebben enkele tutorials en als je niet een A
Het wegwerken van "Vampire Power" en steeds meer efficiënt-Earthjustice Verenigde Staten van efficiëntie Contest Entry

Het wegwerken van "Vampire Power" en steeds meer efficiënt-Earthjustice Verenigde Staten van efficiëntie Contest Entry

u mag niet weten, maar al uw aangesloten in apparaten, uitgeschakeld of niet, zijn met macht als we spreken. Dit is wat wij noemen "vampier power". Denk aan het als uw nooit gebruikte videorecorder op de muur, of dat je als een geschenk aangeslo
Aloë vera! meer dan alleen een plant! (met behulp van een plant te weren slakken!)

Aloë vera! meer dan alleen een plant! (met behulp van een plant te weren slakken!)

Want to keep snails away? wilt vriendelijk voor het milieu worden? kijk dan niet verder!Stap 1: Wat u nodig hebt. zal u een lepel, een kom, water en natuurlijk Aloë Vera.Stap 2: Aan de slag Halen de aloëVera 3 kleine spears moeten doen.  Om te houden
Steeds meer papieren handdoek uit dat automatische papier handdoek dispenser

Steeds meer papieren handdoek uit dat automatische papier handdoek dispenser

leren hoe je meer dan alleen een klein beetje van papieren handdoek uit een automatische papier handdoek dispenser.Ik weet dat dit op de Georgia Pacific enMotion werkt, maar het ook op anderen werken kan.Stap 1: Dingen die nodig zijn u zal moeten wor