Advertisement
sombruxo

Untitled

May 19th, 2025
587
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MIX Assembler 3.09 KB | Source Code | 0 0
  1. ;Tabla ASCII:
  2. ; https://fsymbols.com/images/ascii.png
  3.  
  4.  
  5. .EQU Clock = 16000000 ;processor’s clock frequency, Hz
  6. .EQU Baud = 9600 ;desired serial port baud rate (bits per second)
  7. .EQU UBRRvalue = Clock/(Baud*16) -1 ;calculates value to be put in UBRR0H:L
  8.  
  9. ldi r16, 0b11111111
  10. out ddrb, r16
  11. RCALL config_ADC ;Configurar el conversor ADC
  12. rcall init_USART0
  13. conv:
  14.     LDS r17, ADCSRA
  15.     ORI r17, (1<< ADSC)
  16.     STS ADCSRA, r17         ;Disparo la conversion AC to Digital
  17.     bit:
  18.         LDS r20, ADCSRA    
  19.         SBRC r20, ADSC      ;Espero que termine la conversion.
  20.         rjmp bit       
  21.     LDS r21, ADCH           ;Leo el valor de la conversion.
  22.     STS UDR0, r21  ;transmits the [modified] byte
  23.     rcall delay100ms
  24.     if:
  25.         cpi r21, 140
  26.         brlo conv
  27.     then:
  28.         ldi r16, 0xff
  29.         out portb, r16
  30.         rcall delay100ms
  31.         ldi r16, 0x00
  32.         out portb, r16
  33.  
  34.     rcall delay1s
  35.  
  36. rjmp conv
  37.  
  38.  
  39. config_ADC:
  40.     push r16
  41.     LDI R16, (1<<ADEN)
  42.     ;ADC Enable
  43.     ORI R16, (0<<ADATE)
  44.     ;ADC Auto Trigger Enable
  45.     ORI R16, (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0)
  46.     ;ADPSx=3: ADC Prescaler Select Bits (ADPS2:0=111 -> 128)
  47.     STS ADCSRA, R16
  48.     ;_> ADOSRA: The ADC Control and Status register A
  49.     LDI R16, (0<<ADTS2) | (0<<ADTS1) | (1<<ADTS0)
  50.     ;ADTSx-1: trigger source Analog Comparator
  51.     STS ADCSRB, R16
  52.     ;-> ADCSRB: The ADC Control and Status register B
  53.     LDI R16, (2<<MUX0)
  54.     ;MUXx-1: input channel 1: MUX5:0-00001
  55.     ORI R16, (0<<REFS1) | (1<<REFS0)
  56.     ;AREF-1: internal 5V reference (REF$1:0-01)
  57.     ORI R16, (1<<ADLAR)
  58.     ;ADC 8 bits resolution
  59.     STS ADMUX, R16
  60.     ; -> ADMUX: The ADC multiplexer Selection Register
  61.     LDI R16, (1<<ADC1D)
  62.     ;ADC disable digital input circuitry for channel 1 (saves energy)
  63.     STS DIDR0, R16
  64.     ; -> DIDRO: Digital Input Disable Register
  65.     LDI R16, (0<<PRADC)
  66.     ;ADC disable the power reduction saving for the ADC circuitry (not necesary)
  67.     STS PRR, R16
  68.     ;-> PRR: Power Reduction Register
  69.     pop r16
  70. RET
  71.  
  72. ;------- initialize USART0 as 9600baud, asynchronous, 8 data bits, 1 stop bit, no parity -----
  73. init_USART0:
  74.     PUSH R16
  75.     LDI R16, LOW(UBRRvalue)
  76.     STS UBRR0L, R16   ;load the low byte
  77.     LDI R16, HIGH(UBRRvalue)
  78.     STS UBRR0H, R16   ;load the low byte
  79.     ; enable receive and transmit, enable USART0 interrupts (UDR empty, Tx finished, Rx finished)
  80.     LDI R16, (0<<RXEN0)|(1<<TXEN0)|(0<<UDRIE0)|(0<<TXCIE0)|(0<<RXCIE0)
  81.     STS UCSR0B, R16 ;set control register UCSR0B with the corresponding bits
  82.     ; configure USART 0 as asynchronous, set frame format: 8 data bits, 1 stop bit, no parity
  83.     LDI R16, (0<<UMSEL00) |(1<<UCSZ01)|(1<<UCSZ00) |(0<<USBS0)|(0<<UPM01)|(0<<UPM00)
  84.     STS UCSR0C, R16 ;set control register UCSR0C with the corresponding bits
  85.     POP R16
  86.     RET
  87.  
  88. delay1s:
  89. ; 1s at 16.0 MHz
  90.     push r18
  91.     push r19
  92.     push r20
  93.     ldi  r18, 82
  94.     ldi  r19, 43
  95.     ldi  r20, 0
  96. L1s: dec  r20
  97.     brne L1s
  98.     dec  r19
  99.     brne L1s
  100.     dec  r18
  101.     brne L1s
  102.     lpm
  103.     pop r20
  104.     pop r19
  105.     pop r18
  106.     nop
  107. ret
  108.  
  109. delay100ms:
  110. ; 1s at 16.0 MHz
  111.     push r18
  112.     push r19
  113.     push r20
  114.     ldi  r18, 9
  115.     ldi  r19, 30
  116.     ldi  r20, 229
  117. L100ms: dec  r20
  118.     brne L100ms
  119.     dec  r19
  120.     brne L100ms
  121.     dec  r18
  122.     brne L100ms
  123.     nop
  124.     pop r20
  125.     pop r19
  126.     pop r18
  127.     nop
  128. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement