Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Reverse bits seems to work OK. Put val into r16 and rcall reverseBits
- .include "tn85def.inc" ;usi2f: Previous worked OK. But need to (a) reverse bits and (b) cut into nice lead
- ; byte and remaining 2bits ina following byte.
- again:
- ldi r16, low(RAMEND)
- out SPL, r16
- ldi r16,high(RAMEND)
- out SPH, r16
- ldi r17,17
- ldi r18,18
- ldi r16,$a6
- rcall reverseBits
- ag1:
- rjmp ag1
- ldi r16,$ff
- out DDRB,r16
- out PORTB,r16
- ldi r17,(1<<USIWM0)|(0<<USICS0) ;need this otherwise msb not initially joined to D0
- out USICR,r17
- ldi r16,$a4
- rcall SPITransfer_Fast2
- ldi r16,$bf
- rcall SPITransfer_Fast2
- ;rcall SPITransfer
- here:
- rcall oneSec
- rcall oneSec
- rcall oneSec
- rjmp again
- ;-----------------------------------
- SPITransfer_Fast2:
- out USIDR,r16
- ;fin2:
- ;rjmp fin2
- ;ldi r16,(1<<USIWM0)|(0<<USICS0)|(1<<USITC)
- ldi r17,(1<<USIWM0)|(0<<USICS0)|(1<<USITC)|(1<<USICLK)
- ldi r18,8
- upt2:
- ;out USICR,r16 ; MSB
- rcall oneBitTime
- ;rcall oneSec
- ;rjmp upt2
- out USICR,r17
- up3:
- ;rjmp up3
- dec r18
- brne upt2
- ret
- ;---------------------------------------
- halfBitTime: ;better name for this delay. Half of 1/600
- ;myDelay1200:
- ;ldi r21,13 ; 13 works for m328 at 16Mhz
- push r20
- push r21
- ldi r21,7 ;try 7 for tiny85 at 8Hmz
- ldi r20,130 ;r20,21 at 130,7 give 833uS. Good for 600baud at 8Mhz
- starthbt:
- inc r20
- nop
- brne starthbt
- dec r21
- brne starthbt
- pop r21
- pop r20
- ret
- ;--------------------------------------------------
- oneBitTime:
- rcall halfBitTime
- rcall halfBitTime
- ret
- ;---------------------------------
- delay100ms: ;handy; delay for about 0.1 sec = 100 ms
- ;header endif_1,10,"delay100ms"
- ;delay100ms:
- ;.ifdef testing
- ; ldi r16,1
- ;.else
- push r16
- ldi r16,60
- .;endif
- upd100:
- rcall oneBitTime
- dec r16
- brne upd100
- pop r16
- ret ;after about a tenth of a second
- ;------------------------
- oneSec:
- ;jmp finsec ;take out when not simulating
- push r17
- ldi r17,5
- upones:
- rcall delay100ms
- dec r17
- brne upones
- pop r17
- finsec:
- ret
- ;-----------------------------------
- reverseBits: ;r16 gets reversed
- push r17
- push r18
- ldi r18,8
- ;ldi r16,$a6
- ldi r17,0
- uprb:
- lsl r16
- ror r17
- dec r18
- brne uprb
- uprb2:
- mov r16,r17
- pop r18
- pop r17
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement