[ZLG-MCU] 有偿求助LPC938捕获问题

[复制链接]
2596|0
 楼主| chunyu-lee 发表于 2011-9-15 14:00 | 显示全部楼层 |阅读模式
LPC, ov, TI, hm, ST
chunyulee@foxmail.com  15204656110 这是我的邮箱和电话  谢谢!


  1. ;================================================================
  2. ;问题:测量的波形周期大于1ms
  3. ;采用外部晶振,2M divm=0; ccu频率四分频
  4. ;所以计数1为4us 一个周期计数差最少为250(0xfa),而实际试验时发现计数差会比245(0xf5)小



  5. ;-----------------------------------------------------------------
  6. DIVM EQU 95H
  7. TPCR2H EQU 0CBH
  8. TPCR2L EQU 0CAH


  9. P0M1 EQU 84H
  10. P0M2 EQU 85H
  11. P1M1 EQU 91H
  12. P1M2 EQU 92H




  13. P2M1 EQU 0A4H
  14. P2M2 EQU 0A5H

  15. IEN1 EQU 0E8H


  16. IEN2 EQU 0D5H
  17. TH2 EQU 0CDH
  18. TL2 EQU 0CCH ;CCU定时器计数器
  19. OCRAH EQU 0EFH ;比较寄存器
  20. OCRAL EQU 0EEH
  21. ICRAH EQU 0ABH ;捕捉寄存器
  22. ICRAL EQU 0AAH
  23. TIFR2 EQU 0E9H ;CCU中断标志寄存器
  24. TICR2 EQU 0C9H ;CCU中断控制寄存器
  25. TCR20 EQU 0C8H
  26. TCR21 EQU 0F9H ;
  27. CCCRA EQU 0EAH ;


  28. FInterFirst EQU 2 ;中断第一次





  29. ;=============================================================================
  30. ORG 0000H
  31. LJMP Start
  32. ORG 0003
  33. RETI
  34. ORG 002BH ;掉电检测 BOF
  35. RETI
  36. ORG 003BH ;KBI中断 KBF
  37. RETI
  38. ORG 005BH ;CCU中断 比较/捕获
  39. LJMP Lab0927

  40. ;--------------------------------------------------
  41. ;程序区
  42. ORG 0070H


  43. Start:

  44. MOV SP,#0D0H
  45. CALL RegIntial
  46. CLR 2BH.FInterFirst
  47. SETB P2.0 ;关闭LED

  48. SETB IEN1.4 ;使能ECCU
  49. SETB EA

  50. ORL TICR2,#01H
  51. ORL TICR2,#08H
  52. Stopsub:
  53. JMP StopSub




  54. ;========================================================================
  55. RegIntial:
  56. CLR EA

  57. MOV DIVM,#00H ;Fcclk=2M 2~4机器周期(指令周期) 1M~0.5M moto:约0.25M
  58. ;pclk=fcclk=1M
  59. MOV TPCR2H,#00
  60. MOV TPCR2L,#03H ;ccuclk=0.25M


  61. MOV P1M1,#29H
  62. MOV P1M2,#0DEH ;P1.0为输入,P1.5输入,其它为推挽输出
  63. MOV P1,#04H

  64. MOV P0M1,#3EH ;P0.1 p0.2 p0.3 p0.4 p0.5输入
  65. MOV P0M2,#00H
  66. MOV P0,#0FFH


  67. MOV P2M1,#80H ;P2.0 p2.4 p2.5 输出,p2.7输入,其它也设为输出
  68. MOV P2M2,#07FH ;p2.2 p2.3 双向口
  69. MOV P2,#0FFH


  70. MOV TICR2,#00H
  71. MOV TCR20,#01H
  72. MOV CCCRA,#01H
  73. SETB IEN1.4 ;使能ECCU
  74. SETB EA

  75. RET

  76. ;====================================================================
  77. ;中断子程序
  78. ;16 BIT timer
  79. Lab0927:
  80. PUSH ACC
  81. PUSH PSW
  82. MOV A,TIFR2
  83. JNB ACC.0,aaaINT
  84. ANL TIFR2,#0FEH
  85. CPL P2.0 ;通过看这个脚的波形,知道捕获中断什么时候进来了

  86. MOV A,ICRAL
  87. MOV 57H,A
  88. MOV A,ICRAH
  89. MOV 58H,A

  90. JNB 2BH.FInterFirst,cccINT
  91. MOV A,57H
  92. CLR C
  93. SUBB A,59H
  94. MOV 59H,A
  95. MOV A,58H
  96. SUBB A,5AH
  97. MOV 5AH,A ;计算出间隔值

  98. MOV A,59H
  99. CLR C
  100. SUBB A,#0F5H
  101. MOV 59H,A
  102. MOV A,5AH
  103. SUBB A,#00H ;间隔值与立即数0xf5比较
  104. MOV 5AH,A
  105. JC aa55
  106. jmp cccINT

  107. aa55:
  108. call ErrorSub ;不应该到此


  109. cccINT:
  110. SETB 2BH.FInterFirst
  111. MOV A,57H
  112. MOV 59H,A
  113. MOV A,58H
  114. MOV 5AH,A

  115. ;ccu ocra中断
  116. aaaINT:
  117. MOV A,TIFR2
  118. JNB ACC.3,INTE
  119. ANL TIFR2,#0F7H

  120. INTE:
  121. POP PSW
  122. POP ACC
  123. RETI

  124. ;=========================================================
  125. ;死循环,中断停止使能
  126. ErrorSub:

  127. setb p1.1
  128. clr ea
  129. clr p2.0 ;灯一直亮
  130. jmp ErrorSub






















  131. ;==================================================================
  132. END
  133. ;==================================================================
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

2

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部