Conseguir más pins de I/O en ATTiny con cambio de registros (5 / 6 paso)

Paso 5: Ejemplo #2: código

Este código es mucho más pequeño y más sencillo que el ejemplo anterior, porque esta vez no estamos utilizando el ADC. Como se puede ver, subrutina SEND_BYTE no ha cambiado y bastante mucho la misma cosa.

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

Artículos Relacionados

Bicho muerto prototipos y electrónica libre

Bicho muerto prototipos y electrónica libre

Prototipos de bicho muerto y forma libre electrónica son una manera de construir circuitos electrónicos, de trabajo soldando directamente a las partes, o a través de alambres en vez de la forma tradicional de usar una placa de circuito impreso (PCB).
Mini estación meteorológica con Attiny85

Mini estación meteorológica con Attiny85

En un reciente Indigod0g instructivo describe una mini estación meteorológica que funciona bastante bien, usando dos Arduinos. Tal vez no todo el mundo quiere sacrificar 2 Arduinos para obtener lecturas de temperatura y humedad y comentó que debería
Reloj del mundo en alemán usando Arduino

Reloj del mundo en alemán usando Arduino

Mientras que en Alemania el año pasado, vi un mundo reloj en una tienda similar a este en una tienda que estaba a un precio de 900€. He leído varios instructables en línea sobre cómo crear un reloj mundial así que decidí darle un tiro. Quiero agradec
Hacer una matriz de 8 x 10 L.E.D

Hacer una matriz de 8 x 10 L.E.D

actualización 1: he añadido juego del código para CONWAY de la vidaACTUALIZACIÓN 2: AHORA PUEDE GUARDAR ALGUNOS PINES DE ARDUINO CON LA AYUDA DEL REGISTRO DE CAMBIO DE 1.En este instructable le mostraré cómo crear una matriz de 8 bastante lujo por 10
Diversión con foto montaje - Episodio 21

Diversión con foto montaje - Episodio 21

No soy un viajero del mundo pero he estado en varios lugares que difieren radicalmente en temperatura y humedad. No importa lo que alguien dice, "calor seco" no significa nada cuando el termómetro está por encima de 110 grados. Asimismo,-40 grad
4 x 4 x 4 actualización de cubo de LED con cambio de registros (74hc595)

4 x 4 x 4 actualización de cubo de LED con cambio de registros (74hc595)

este proyecto se inició con una bolsa de LEDs que había extraído de las linternas, para convertir a linternas UV. Sabía que encontraría algo divertido para utilizar con, pero fue meses antes de que me di cuenta de que hacer con ellos. Cuando vi un cu
Diversión con foto montaje - episodio 2

Diversión con foto montaje - episodio 2

Bueno el episodio 1 fue todo un éxito porque realmente alguien que no me miró. Así que aquí vamos con el episodio 2. En este Instructable buscamos algunos datos reales de entrada para enviar a la pantalla de LCD de 1602 que construyó en el episodio 1
Diversión con foto montaje - episodio 24

Diversión con foto montaje - episodio 24

Cuando yo estaba colocado en el extranjero a principios de 1970 había dos cosas buen precio disponibles que más militares chicos gustaron: equipo de música y alcohol. No, no es sobre una destilería casera powered PIC este Instructable. Lo siento. El
Sustituir halógenos de baja tensión Bi-Pin con LEDs

Sustituir halógenos de baja tensión Bi-Pin con LEDs

este instructivo detalla cómo adaptar fácilmente una lámpara halógena bi-pin de baja tensión (12V) con una "Bombilla" que se utilice menos energía de alta potencia (< 10W), duración (50.000 horas) y aproximadamente la misma potencia (~ 300 lú
9-Charlieplexor (9-pines para 72 LEDs)

9-Charlieplexor (9-pines para 72 LEDs)

Este Instructable muestra cómo cablear una 9-Charlieplexor. (Formalmente se trata de un "circuito de Charlieplexing con 9 nodos" capaz de controlar 72 LEDs o menos.) Un método general podría tomarse de este diseño para Charlieplexors más grande.
Desmitificador de 4 pines direccionables LEDS RGB

Desmitificador de 4 pines direccionables LEDS RGB

Si has visto mi anterior Instructable sobre LEDs RGB, tienes una muy buena base en la habilidad de poner tres fuentes luminosas distintas en un solo paquete en sus estructuras.Tiempo de marchas en, y también lo hace la tecnología! Una de las novedade
Arduino 16 LEDs con dos registros de desplazamiento 74HC595 (pins ilimitados)

Arduino 16 LEDs con dos registros de desplazamiento 74HC595 (pins ilimitados)

Este es mi primer instructivo, espero que te guste. He estado jugando con LEDs para un tiempo y me di cuenta de que estoy bastante limitada con los pines de Arduino y no se pueden hacer grandes proyectos que requiere una gran cantidad de pines. Se tr
3 Arduino Pins to 24+ Output Pins

3 Arduino Pins to 24+ Output Pins

¿Acaben los pines de salida para tu Arduino? Bien esta es la solución para usted! En este tutorial muestro el hardware y el código necesario para el control de múltiplos de 8 número de salidas, utilizando sólo 3 de sus pines de Arduino. La idea princ
DIY Party Chick Pin

DIY Party Chick Pin

Aprender cómo hacer un sombrero de fiesta pequeña. Luego hacen un dulce poco partido Chick perno de DIY en pocos simples pasos en esta entrega de hacer, con Madge! Hacemos que sea fácil hacer fabulosas!Paso 1: Vea el Video!Paso 2: Se necesita:Se nece