Obtenir des broches d’e/s plus sur ATTiny avec Shift Registers (5 / 6 étapes)

Étape 5: Exemple #2: CODE

Ce code est beaucoup plus petit et plus simple que l’exemple précédent, parce que cette fois nous n’utilisons pas ADC. Comme vous pouvez le voir, la sous-routine SEND_BYTE est identique et à peu près la même chose.

 /* * 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 

Articles Liés

Brasage des Sockets et des broches d’en-tête sur ligne droite

Brasage des Sockets et des broches d’en-tête sur ligne droite

souder douilles et broches d'en-tête sur directement à chaque fois.  Commencez par souder baisse de seulement deux points sur une rangée de broches d'en-tête ou une prise de courant ic, un de chaque côté.  Puis vérifier l'alignement du socket/épingle
Comment obtenir des marchandises sèches dans un récipient avec un entonnoir

Comment obtenir des marchandises sèches dans un récipient avec un entonnoir

Marchandises sèches comme la farine ou de poudre à laver sont mieux stockées dans un récipient en plastique, mais il peut être difficile de les convaincre d'aller. Surtout si ils ont formé des grumeaux.Utilisez une brochette dans l'entonnoir et tourn
Comment obtenir des prix plus bas sur des éléments de faux/bootleg dans Chinatown

Comment obtenir des prix plus bas sur des éléments de faux/bootleg dans Chinatown

8 étapes pour obtenir des prix plus bas sur bootleg des éléments dans le Chinatown de LA ville.Étape 1 :Allez dans un magasin un peu sommaire dans le Chinatown Downtown LA que vous connaissez vend des Articles de faux/bootleg (essentiellement presque
Obtenir des prix Stock sur Raspberry Pi (avec Python)

Obtenir des prix Stock sur Raspberry Pi (avec Python)

Je travaille sur quelques nouveaux projets portant sur l'obtention de données boursières sur le web, qui vont être enregistrée et affiché via mon Raspberry Pi. Je voulais partager la configuration sur la façon de le faire à l'aide de Python.Ce court
Comment obtenir des cheveux aux couleurs Pastel sur un Budget

Comment obtenir des cheveux aux couleurs Pastel sur un Budget

Sauf si vous avez été caché sous un rocher pour les deux dernières années, vous êtes pleinement conscients que les cheveux aux couleurs pastel est une des plus chaudes tendances beauté dès maintenant. Nicole Richie, Kelly Osbourne, Hilary Duff, Kaley
Comment obtenir des Homebrew sur votre Wii

Comment obtenir des Homebrew sur votre Wii

Dans ce instructable, je va vous apprendre comment obtenir le Homebrew channel sur votre Wii. Le Homebrew channel est une façon pour les utilisateurs de la Wii jouer à des jeux non officiels. Des exemples seraient plus récent Super Mario Bros et Supe
Comment obtenir des oiseaux flappy gratuits sur Android sans ordinateur

Comment obtenir des oiseaux flappy gratuits sur Android sans ordinateur

Dans ce impénétrable, je vais vous montrer comment obtenir des oiseaux flappy gratuitement et sans ordinateur.Étape 1: Aptoide Tout d'abord, vous devrez obtenir aptoide. Aptoide est un app store qui vous permet d'ajouter d'autres app stores à lui-mêm
Comment obtenir des graphiques mieux/plus récent pour Final Fantasy 7

Comment obtenir des graphiques mieux/plus récent pour Final Fantasy 7

Final Fantasy VII est un de ces jeux que vous aimez à jouer même si les graphismes sont toutes dépassées. Mais que se passe-t-il si vous pourriez jouer le même FF7 vieux que vous connaissez et aimez avec des graphismes améliorés ? C'est vrai, Merci a
Comment obtenir des habillages personnalisés gratuitement sur Minecraft Pocket Edition !

Comment obtenir des habillages personnalisés gratuitement sur Minecraft Pocket Edition !

Ne veux pas payer pour obtenir des peaux fraîches ? Avoir un compte Minecraft PC et souhaitez utiliser la peau de votre PC ? N'ayez pas peur ! Dans cette introduction, je vous apprendre comment faire pour télécharger un habillage personnalisé MCPE, a
La ~ ~ SIMPLE ~ ~ moyen d’obtenir des peaux sur MCPE

La ~ ~ SIMPLE ~ ~ moyen d’obtenir des peaux sur MCPE

Nous sommes tous ~ ~ Eh bien, la plupart d'entre nous ~ ~ savoir comment obtenir des peaux sur MCPE ou Minecraft Pocket Edition, à l'aide d'iExplorer ou que ce soit. Mais, qui prend une éternité à faire ! Et, après cela, il est très difficile et ne f
Comment obtenir des jeux GBA sur IOS 7

Comment obtenir des jeux GBA sur IOS 7

cela vous montrera comment obtenir des jeux GBA sur un iPhone non jailbreakéÉtape 1: coolrom.com allez à coolrom.com et cliquez sur émulateurs. ensuite cliquez sur non-jailbreaké. Ensuite cliquez sur GBA.Etape 2: fixer une date retour veille Étape 3:
Comment obtenir des déodorants sur vos vêtements!!

Comment obtenir des déodorants sur vos vêtements!!

Cet Instructable va vous montrer une façon rapide et facile pour obtenir des déodorants sur vos vêtementsEtape 1: Prenez une feuille sèche1. Prenez une feuille sècheUne feuille inutilisée dans la sécheuse fonctionne de façon optimaleSi vous ne pouvez
Comment faire pour télécharger des photos depuis Google Plus sur Mobile App

Comment faire pour télécharger des photos depuis Google Plus sur Mobile App

Télécharger Google Photos et profitez-en sur votre appareilÉtape 1 :Tutoriel vidéo simple comment faire pour télécharger des photos depuis Google Plus sur Mobile App
Obtenir des vidéos d’youtube sur PSP

Obtenir des vidéos d’youtube sur PSP

mon premier instructable vous indiquant comment obtenir des vidéos d'youtube sur votre psp. Qui est l'un des secrets mieux gardés sur internet!!Étape 1: Téléchargement des programmes nessessary Pour télécharger des vidéos et de les mettre sur votre p