返回列表 发帖

汇编编写的模拟串口通信程序

T2作为波特率控制
UART_RXD 是硬中断0或1口,如果能进入中断,说明该线有一个起始位产生,进入中断后调
用下面的接收程序。退出硬中断之前还需要将硬中断标志重新复位。
UART_TXD 是任何其它IO即可。
  1. UART_SEND:
  2. PUSH IE
  3. PUSH DPH
  4. PUSH DPL
  5. PUSH PSW
  6. PUSH 00H
  7. PUSH ACC
  8. CLR EA
  9. SETB UART_TXD ;START BIT

  10. MOV R0,A
  11. CLR TR2 ;TR2置1,计数器2启动,时间计数启动。
  12. MOV A,RCAP2L;计数器2重新装载值
  13. MOV TL2,A ;置计数器2初值 ;T2需要重新装载
  14. MOV A,DPH
  15. MOV A,RCAP2H
  16. MOV TH2,A
  17. MOV A,R0

  18. SETB TR2 ;TR2置1,计数器
  19. JNB TF2,$
  20. CLR TF2
  21. JNB TF2,$
  22. CLR TF2

  23. CLR UART_TXD ;START BIT
  24. JNB TF2,$
  25. CLR TF2
  26. JNB TF2,$
  27. CLR TF2

  28. MOV R0,#08H
  29. UART_SEND_LOOP:
  30. RRC A
  31. MOV UART_TXD,C ;8 BIT
  32. JNB TF2,$
  33. CLR TF2
  34. JNB TF2,$
  35. CLR TF2
  36. DJNZ R0,UART_SEND_LOOP

  37. SETB UART_TXD ;END BIT
  38. JNB TF2,$
  39. CLR TF2
  40. JNB TF2,$
  41. CLR TF2

  42. POP ACC
  43. POP 00H
  44. POP PSW
  45. POP DPL
  46. POP DPH
  47. POP IE
  48. RET

  49. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  50. UART_REC:
  51. PUSH IE
  52. PUSH DPH
  53. PUSH DPL
  54. CLR EA

  55. CLR TR2 ;TR2置1,计数器2启动,时间计数启动。
  56. MOV A,RCAP2L;计数器2重新装载值
  57. MOV TL2,A ;置计数器2初值 ;T2需要重新装载
  58. MOV A,DPH
  59. MOV A,RCAP2H
  60. MOV TH2,A

  61. JB UART_RXD,$ ;REC
  62. SETB TR2 ;TR2置1,计数器2启动,时间计数启动。
  63. JNB TF2,$
  64. CLR TF2 ;0.5 BIT

  65. JNB TF2,$
  66. CLR TF2 ;1 BIT

  67. JNB TF2,$
  68. CLR TF2 ;1.5 BIT
  69. MOV C,UART_RXD
  70. MOV ACC.0,C

  71. JNB TF2,$
  72. CLR TF2

  73. JNB TF2,$
  74. CLR TF2 ;2.5
  75. MOV C,UART_RXD
  76. MOV ACC.1,C

  77. JNB TF2,$
  78. CLR TF2

  79. JNB TF2,$
  80. CLR TF2 ;3.5
  81. MOV C,UART_RXD
  82. MOV ACC.2,C

  83. JNB TF2,$
  84. CLR TF2

  85. JNB TF2,$
  86. CLR TF2 ;4.5
  87. MOV C,UART_RXD
  88. MOV ACC.3,C

  89. JNB TF2,$
  90. CLR TF2

  91. JNB TF2,$
  92. CLR TF2 ;5.5
  93. MOV C,UART_RXD
  94. MOV ACC.4,C

  95. JNB TF2,$
  96. CLR TF2

  97. JNB TF2,$
  98. CLR TF2 ;6.5
  99. MOV C,UART_RXD
  100. MOV ACC.5,C

  101. JNB TF2,$
  102. CLR TF2

  103. JNB TF2,$
  104. CLR TF2 ;7.5
  105. MOV C,UART_RXD
  106. MOV ACC.6,C

  107. JNB TF2,$
  108. CLR TF2

  109. JNB TF2,$
  110. CLR TF2 ;8.5
  111. MOV C,UART_RXD
  112. MOV ACC.7,C

  113. JNB TF2,$
  114. CLR TF2 ;9.5
  115. JNB UART_RXD,$ ;等待停止位,并重新复位计数器
  116. SETB UART_RXD

  117. POP DPL
  118. POP DPH
  119. POP IE
  120. RET
复制代码
一心一意做事,一心一意做人,做站如做人。关于网站上的事务你可以直接联系我:13320088060。

返回列表

最新关注 关闭


关于论坛注册,最新修改,请网友们注意

由于最近大量垃圾信息出现在我们的论坛,为了营造一个良好的氛围,目前论坛只开发邀请注册,你可以点击以下链接自动邀请注册(如果有人使用了点击下一个试一试) ...


查看
珩源工控论坛热诚欢迎您联系我们进行合作!

Powered by Discuz! 7.2© 2001-2009 Comsenz Inc.

珩源工控论坛 ( 桂ICP备19004328号) |论坛统计|WAP| 客服中心-www.hymcu.com
  

GMT+8, 2024-3-29 22:27, Processed in 1.049374 second(s), 5 queries, Gzip enabled.