Advertisement
Helium

Untitled

Jan 26th, 2017
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. $MODLP52
  2. org 0000H
  3. ljmp setup
  4.  
  5. $include(math32.inc)
  6.  
  7. CLK equ 22118400
  8. BAUD equ 115200
  9. T1LOAD equ (0x100-CLK/(16*BAUD))
  10. ADC_CE equ P2.0
  11. ADC_MOSI equ P2.1
  12. ADC_MISO equ P2.2
  13. ADC_SCLK equ P2.3
  14. DSEG at 30H
  15. result: ds 2
  16. bcd: ds 5
  17. x: ds 4
  18. y: ds 4
  19. BSEG
  20. mf: dbit 1
  21. CSEG
  22. InitSerialPort:
  23. mov R1, #222
  24. mov R0, #166
  25. djnz R0, $
  26. djnz R1, $-4
  27. clr TR1
  28. anl TMOD, #0x0f
  29. orl TMOD, #0x20
  30. orl PCON, #0x80
  31. mov TH1, #T1LOAD
  32. mov TL1, #T1LOAD
  33. setb TR1
  34. mov SCON, #0x52
  35. ret
  36. putChar:
  37. jnb TI, putchar
  38. clr TI
  39. mov SBUF, a
  40. ret
  41. putString:
  42. clr a
  43. movc a, @a+dptr
  44. jz putString_return
  45. lcall putChar
  46. inc dptr
  47. sjmp putString
  48. putString_return:
  49. ret
  50. SPIinit:
  51. setb ADC_MISO
  52. clr ADC_SCLK
  53. ret
  54. SPIcomm:
  55. push ACC
  56. mov R1, #0
  57. mov R2, #8
  58. SPIcomm_loop:
  59. mov a, R0
  60. rlc a
  61. mov R0, a
  62. mov ADC_MOSI, c
  63. setb ADC_SCLK
  64. mov c, ADC_MISO
  65. mov a, R1
  66. rlc a
  67. mov R1, a
  68. clr ADC_SCLK
  69. djnz R2, SPIcomm_loop
  70. pop ACC
  71. ret
  72.  
  73. ; main program
  74. setup:
  75. mov SP, #7FH
  76. mov PMOD, #0
  77. setb ADC_CE
  78. lcall SPIInit
  79. lcall InitSerialPort
  80. loop:
  81. clr ADC_CE
  82. mov R0, #0x01
  83. lcall SPIcomm
  84. mov R0, #0x80
  85. lcall SPIcomm
  86. mov a, R1
  87. anl a, #0x03
  88. mov result+1, a
  89. mov R0, #0x55
  90. lcall SPIcomm
  91. mov result, R1
  92. setb ADC_CE
  93. sleep(#50)
  94. mov x, result
  95. mov x+1, result+1
  96. mov x+2, #0x00
  97. mov x+3, #0x00
  98. Load_y(49500)
  99. lcall mul32
  100. Load_y(1023)
  101. lcall div32
  102. Load_y(27300)
  103. lcall sub32
  104. lcall hex2bcd
  105. putBCD(bcd+1)
  106. putBCD(bcd)
  107. mov a, #'\r'
  108. lcall putChar
  109. mov a, #'\n'
  110. lcall putChar
  111. ljmp loop
  112. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement