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

Stap 5: Voorbeeld #2: CODE


Deze code is veel kleiner en eenvoudiger dan in het vorige voorbeeld, omdat dit keer we niet ADC gebruiken. Zoals u zien kunt, SEND_BYTE subroutine is ongewijzigd en vrij veel het zelfde ding.

 /* * Shift register demo #2 * ATTiny13A Running * * PIN ASSIGNMENT: * PB0 - Shift Register Clock * PB1 - Shift Register Serial Data * PB2 - Shift Register Latch(Store) * PB3 - Digital input(bit match) * PB4 - LED * PB5 - RST * */ .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 .def TIM = R20 ; Stores how many iterations of TOV0 have passed .def TMP = R21 .equ SRCK = 0 ; PB0 = Clock .equ SRDA = 1 ; PB1 = Serial Data .equ SRLC = 2 ; PB2 = Latch /* INTERRUPT VECTORS */ .org 0x0000 ; Reset interrupt rjmp RESET .org 0x0003 rjmp TC0_OV ; Timer0 Overflow interrupt /* * START!!! */ RESET: /* SETUP STACK */ ldi A, low(RAMEND) ; Set stack pointer out SPL, A /* SETUP PINS */ ldi A,0b0001_0111 ; Set output pins PB0..PB2(CLK,DATA,LATCH) out DDRB,A ; PB4 - LED output /* SETUP TIMER0 */ ldi A,0b0000_0101 ; Set Timer Prescaler 1/1024 out TCCR0B,A ; Interrupt every ~27ms ldi A,0b00000010 ; Enable Timer0 Overflow Interrupt out TIMSK0,A ; /* RESET REGISTERS */ ldi A,0x00 ; clear A ldi LED,0x10 ; Default blink speed(~1Hz) sei ; Enable interrupts /* Main loop */ MAIN: ldi A,1 ; Set the first bit ldi TMP,0 ; Temporary storage for new LED delay next: rcall SEND_BYTE ; Send A to Shift Reg. sbic PINB,3 ; Check for match or TMP,A ; Add it to result clc ; Clear carry rol A ; Rotate A breq check ; If A==0, check and start over rjmp next ; else get next bit check: ; Only assign non-zero values tst TMP ; TMP==0? breq MAIN ; skip mov LED,TMP ; else assign new LED delay rjmp MAIN /* * Sends 8-bit data from A register to Shift Register * (Same as in the prev. example) */ SEND_BYTE: ldi BCT,0b1000_0000 ; Set Bit counter next_bit: mov B,A ; Move data byte to temp and B,BCT ; Check bit breq zero ; Skip if 0 sbi PortB,SRDA ; Send Data rjmp shift ; shift right 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 /* Timer 0 overflow interrupt */ TC0_OV: inc TIM ; TIM++ cp TIM,LED ; TIM>LED? brlo early ; too early push TMP ; Save old TMP value in TIM, PINB ; Read current port state ldi TMP, 0x10 ; eor TIM,TMP ; Toggle PB4 out PORTB, TIM ; ldi TIM,0 ; Reset counter pop TMP ; Restore TMP early: 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