Guest User

Untitled

a guest
Jun 28th, 2018
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .include "m8def.inc"
  2.  
  3. .def DATA = r17
  4.  
  5. .org 0
  6.     rjmp  MAIN                                      ; Reset Handler
  7.  
  8. WAIT:
  9.     ldi zh,high(60000) ;
  10.     ldi zl,low(60000)
  11. W_LOOP:
  12.     sbiw zl,1
  13.     brne W_LOOP
  14.     ret
  15.  
  16. TWI_INIT:
  17.     ldi   r16, (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)
  18.     out   TWCR, r16                                 ; Enable and transmit START
  19.    
  20. WAIT1:
  21.     in    r16, TWCR
  22.     sbrs  r16, TWINT
  23.     rjmp  WAIT1                                     ; Wait for START to be transmitted
  24.  
  25.     in    r16, TWSR
  26.     andi  r16, 0xF8
  27.     cpi   r16, 0x08
  28.     brne  ERROR                                     ; Check Status
  29.  
  30.     ldi   r16, 0x02                                 ; Slave address
  31.     out   TWDR, r16
  32.     ldi   r16, (1<<TWINT)|(1<<TWEN)
  33.     out   TWCR, r16                                 ; Re-Enable and send request to slave
  34.     ret                                             ; Återvänd
  35.  
  36. SEND:
  37.     in    r16, TWCR
  38.     sbrs  r16, TWINT
  39.     rjmp  SEND                                      ; VÄNTA FIFAN                                        
  40.  
  41.     out   TWDR, DATA
  42.     ldi   r16, (1<<TWINT) | (1<<TWEN)
  43.     out   TWCR, r16                                 ; Re-Enable and send data
  44.     ret
  45.  
  46. STOP:
  47.     rcall WAIT
  48.     ldi   r16, (1<<TWINT)|(1<<TWEN)|(1<<TWSTO)
  49.     out   TWCR, r16                                 ; Re-Enable and transmit STOP
  50.     ret
  51.  
  52. MAIN:
  53.     ldi r16, low(RAMEND)
  54.     out spl, r16
  55.     ldi r16, high(RAMEND)
  56.     out sph, r16
  57.    
  58.     rcall WAIT
  59.     rcall WAIT
  60.     rcall WAIT
  61.     rcall WAIT
  62.  
  63.     rcall TWI_INIT
  64.  
  65.     ldi DATA, 'Y'
  66.     rcall SEND
  67.     ldi DATA, ' '
  68.     rcall SEND
  69.     ldi DATA, 'u'
  70.     rcall SEND
  71.     ldi DATA, ' '
  72.     rcall SEND
  73.     ldi DATA, 'm'
  74.     rcall SEND
  75.     ldi DATA, 'a'
  76.     rcall SEND
  77.     ldi DATA, 'd'
  78.     rcall SEND
  79.     ldi DATA, '?'
  80.     rcall SEND
  81.     ldi DATA, '!'
  82.     rcall SEND
  83.  
  84.     rcall STOP
  85.  
  86.  
  87. INF:
  88.     rjmp INF
  89.  
  90.  
  91. ERROR:
  92.     ldi r16, 0x11
  93.     out portb, r16
  94.     rjmp  ERROR
Add Comment
Please, Sign In to add comment