SaFteiNZz

Analog digital converter assembly

Apr 18th, 2020
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 KB | None | 0 0
  1. /*************************************************************************************
  2.  
  3. **************************************************************************************/
  4.  
  5. .cseg
  6. ldi r16, 0xff
  7. out ddrb, r16 ;Activar salida para encender los LED.
  8. out ddrd, r16 ;Puerto para ver el valor convertido.
  9. RCALL config_ADC ;Configurar el conversos ADC
  10.  
  11. loopGeneral:
  12. ;Disparo de la lectura
  13. LDS R17, ADCSRA ; -> ADCSRA: The ADC Control and Status register A
  14. ori r17, (1<<ADSC) ;Aciva el bit de la conversion ADC por software
  15. sts ADCSRA, R17 ;Dispara la Operacion ADC
  16. esperaADC:
  17. ;Espera activa hasta que la lectura termine
  18. clr r17
  19. lds r17, ADCSRA ;Carga ek registro ADCSRA para chequear si la conversion ha terminado
  20. sbrc r17, ADSC ;Si el bit ADSC esta activo, la conversion no ha terminado, entonces saltar RJMP
  21. rjmp esperaADC
  22.  
  23. ;Cargar el valor de la conversion
  24. LDS R16, ADCH ;En ADCH, tenemos el valor de la conversion con 8 bits.
  25. out portd, r16 ;Muestra con Led´s el valor leido por el puerto "d"
  26.  
  27. ;If (valor > 128)
  28. cpi r16, 0b10000000 ;Comparamos contra 128
  29. brpl encender ;Si es mayor, saltamos a encender
  30. ;Parte Then
  31. ldi r20, 0x00
  32. out portb, r20 ;Apagamos el puerto b
  33. rjmp seguir
  34. ;parte Else
  35. encender:
  36. ldi r20, 0xff
  37. out portb, r20 ;Encendemos el puerto b
  38. ;fin if
  39. seguir:
  40.  
  41. rjmp loopGeneral
  42.  
  43.  
  44. /*************************************************************************************
  45. Funcion Inicializa el ADC
  46. **************************************************************************************/
  47. config_ADC:
  48. push r16
  49. LDI R16, (1<<ADEN) ;ADC Enable
  50. ORI R16, (0<<ADATE) ;ADC Auto Trigger Enable
  51. ORI R16, (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0) ;ADPSx=3: ADC Prescaler Select Bits (ADPS2:0=11 -> 128)
  52. STS ADCSRA, R16 ; -> ADCSRA: The ADC Control and Status register A
  53. LDI R16, (0<<ADTS2)|(0<<ADTS1)|(1<<ADTS0) ;ADTSx=1: trigger source Analog Comparator
  54. STS ADCSRB, R16 ; -> ADCSRB: The ADC Control and Status register B
  55. LDI R16, (1<<MUX0) ;MUXx=1: input channel 1: MUX5:0=00001
  56. ORI R16, (0<<REFS1)|(1<<REFS0) ;AREF=1: internal 5V reference (REFS1:0=01)
  57. ORI R16, (1<<ADLAR) ;ADC 8 bits resolution
  58. STS ADMUX, R16 ; -> ADMUX: The ADC multiplexer Selection Register
  59. LDI R16, (1<<ADC1D) ;ADC disable digital input circuitry for channel 1 (saves energy)
  60. STS DIDR0, R16 ; -> DIDR0: Digital Input Disable Register
  61. LDI R16, (0<<PRADC) ;ADC disable the power reduction saving for the ADC circuitry (not necesary)
  62. STS PRR, R16 ; -> PRR: Power Reduction Register
  63. pop r16
  64. RET
Add Comment
Please, Sign In to add comment