Advertisement
Guest User

Untitled

a guest
Oct 6th, 2012
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // what is this code supposed to do?:
  2. // - setup dptr to point to the sample buffer
  3. // - wait for bit 2 on port B to become 0 (fixed trigger for now)
  4. // - activate time 1
  5. // - wait until timer 1 overflow bit is set and store a sample
  6. // - do this 16*0x100 times
  7. // - exit
  8.  
  9. // TIMER SETUP
  10. // timer 1 ticks a 1 us ->
  11. TH1 = 0xff - 2; // set timer 1 reload value
  12. TL1 = 0xff - 2; // set timer 1 value
  13.  
  14. __sbit __at (0xB0+7) TF1;
  15.  
  16. // DATA ACQUISITION
  17. __asm
  18. // load sample ptr
  19. mov dpl, #0 //#(samples & 0xff) // is a 256 byte boundary so it is actually 0
  20. mov dph, #(_samples >> 8)
  21. mov r0, #0
  22. mov r1, #0
  23.  
  24. // wait for trigger condition
  25. 00001$:
  26. mov A, _IOB
  27. anl A, 0x02
  28. cjne A, 0, 00001$
  29.  
  30. // trigger condition is met, start timer
  31. orl _TCON, #0x40
  32.  
  33. // put sample into buffer
  34. 00002$:
  35. mov A, _IOB
  36. movx @DPTR, A // store samples
  37. inc DPTR
  38. // movx @R0, A
  39. inc R0
  40. // cjne dpl, #0, 00003$
  41. cjne R0, #0, 00003$
  42. inc r1
  43. // inc dph
  44. cjne r1, #16, 00003$
  45. sjmp 00004$
  46.  
  47. 00003$:
  48. // jbc _TCON.7, 0002$
  49. jbc TF1, 0002$
  50. sjmp 00003$
  51.  
  52. 00004$:
  53.  
  54. __endasm;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement