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

Étape 3: Exemple #1: Code

Le code est écrit en Assemblée d’AVR. Si vous travaillez avec les contrôleurs comme ATTiny - c’est un must ! Il semble effrayant, mais en réalité c’est beaucoup plus simple et plus facile que C.

Une autre raison pour l’utilisation de langage d’assemblage, c’est que ce code doit seulement 148 octets d’espace après la compilation, tandis que les IDE Arduino produit 644 octets de sortie binaire pour le même code (n’ont pas testé en AVR GCC), donc si vous souhaitez étendre les fonctionnalités de votre petit projet, vous avez moins de 400 octets pour travailler avec...

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

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