找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1621|回复: 0
打印 上一主题 下一主题
收起左侧

我的48V电池组在线单个电池充电程序(汇编)

[复制链接]
跳转到指定楼层
楼主
ID:242464 发表于 2017-10-24 16:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我前些时间用汇编语言编写的48V电池组在线单个电池充电程序。请各指教。
下载:
充电器.doc (22 KB, 下载次数: 12)

  1. ; 中断入口程序 ;;
  2. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  3. ORG 0000H              ;程序执行开始地址
  4. LJMP START             ;跳到标号START执行
  5. ORG 0003H              ;外中断0中断程序入口
  6. RETI                   ;外中断0中断返回
  7. ORG 0013H              ;外中断1中断程序入口
  8. RETI                   ;外中断1中断返回
  9. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  10. ;; 主 程 序 ;;
  11. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  12. START:
  13. MOV R0,#70H           ;清70H-7AH共11个内存单元
  14. MOV R7,#0BH ;
  15. MOV  A,#00H            ;清P1口
  16. MOV  P1,A
  17. MOV  A,#0FFH            ;P3口置高电平
  18. MOV  P3,A
  19. LCALL YS3S
  20. CLEARDISP:
  21. MOV @R0,#00H ;
  22. INC R0 ;
  23. DJNZ R7,CLEARDISP ;
  24. MOV 20H,#00H           ;清20H(标志用)
  25. START1:
  26. MOV  A,#20H             ;J4吸动启动48V充电回路
  27. MOV  P1,A
  28. LCALL YS3S
  29. MOV  A,70H
  30. CJNE A ,#0FFH,JS       ; 判断充电是否结束 (70H中的数不等于FF则转JS)
  31. AJMP   WC
  32. JS:
  33. JB P3.3,JS1        ;P3.3口为1时程序往下继续
  34. LCALL  DGDCCD      ;P3.3口为0时调用单个电池充电程序(DGDCCD)
  35. JS1:
  36. JB P3.7,JS2        ;P3.7口为1时程序往下继续
  37. LCALL  XZCDFS      ;P3.7口为0时调用选择电池充电方式程序(XZCDFS)
  38. JS2:
  39. SJMP START1            ;P3.3,P3.7口均为1时跳回START1 继续等待
  40. ;延时3秒钟子程序,F=12MHz
  41. YS3s:
  42. MOV  R3,#28
  43. MOV  R2,#253
  44. MOV  R1,#219
  45. LOOP1:
  46. DJNZ R1,$
  47. DJNZ R2, LOOP1
  48. DJNZ R3, LOOP1
  49. NOP
  50. RET
  51. ;延时1秒钟子程序,F=12MHz
  52. YS1s:
  53. MOV  R3,#9
  54. MOV  R2,#253
  55. MOV  R1,#219
  56. LOOP2:
  57. DJNZ R1,$
  58. DJNZ R2, LOOP2
  59. DJNZ R3, LOOP2
  60. NOP
  61. RET
  62. DGDCCD:                 ;单个电池充电程序
  63. LCALL YS3s
  64. JB P3.3,TC              ;P3.3不为"0"退出子程序回到主程序继续等待 P3.3为“1”转移到TC
  65. CLR  P1.5               ;释放J4的48V充电回路
  66. MOV  R4,#3
  67. DD:                     ;单个电池充电程序(DGDCCD)
  68. LCALL YS1s
  69. SETB P1.7               ;点亮1灯
  70. SETB P1.6               ;J5吸动启动18V充电回路对第一个电池充电
  71. LCALL YS3s
  72. JB P3.4,DD              ;P3.4 不为"0" 继续等待
  73. LCALL YS3s
  74. LCALL YS3s
  75. JB P3.4,DD              ;P3.4 不为"0" 继续等待
  76. SETB P1.2               ;J1吸动对第二个电池充电
  77. CLR  P1.7               ;熄灭1灯
  78. DD1:
  79. LCALL YS1s
  80. JB P3.4,DD1              ;P3.4 不为"0" 继续等待
  81. LCALL YS3s
  82. LCALL YS3s
  83. JB P3.4,DD1              ;P3.4 不为"0" 继续等待
  84. CLR  P1.2               ;释放J1
  85. LCALL YS1s
  86. SETB P1.3               ;J2吸动对第三个电池充电
  87. DD2:
  88. LCALL YS1s
  89. JB P3.4 ,DD2             ;P3.4 不为"0" 继续等待
  90. LCALL YS3S
  91. LCALL YS3s
  92. JB P3.4 ,DD2             ;P3.4 不为"0" 继续等待
  93. CLR  P1.3               ;释放J2
  94. LCALL YS1s
  95. SETB P1.4               ;J3吸动对第四个电池充电
  96. DD3:
  97. LCALL YS1s
  98. JB P3.4 ,DD3            ;P3.4 不为"0" 继续等待
  99. LCALL YS3S
  100. LCALL YS3s
  101. JB P3.4 ,DD3             ;P3.4 不为"0" 继续等待
  102. CLR  P1.4               ;释放J3
  103. LCALL YS1s
  104. CLR  P1.6               ;释放J5 充电全部结束
  105. DJNZ R4, DD

  106. MOV 70H ,#0FFH          ;设置充电结束标记
  107. TC:
  108. RET
  109. XZCDFS:                 ;选择电池充电方式程序
  110. LCALL YS3s
  111. JB P3.7,TC1              ;P3.7不为"0"退出子程序回到主程序继续等待
  112. SS:

  113. LCALL YS1s
  114. CLR P3.0                 ;点亮常规充电灯
  115. JNB P3.7 , CS
  116. JB P3.5 ,SS           ;P3.5 不为"0" 继续等待(电池未充满继续)
  117. LCALL YS3s
  118. JB P3.5 ,SS           ;P3.5 不为"0" 继续等待(电池未充满继续)
  119. SJMP SS0
  120. CS:                    ;测试各单个电池电压
  121. LCALL YS3s
  122. JB P3.7,SS             ;P3.7不为"0"继续等待
  123. ;CLR P3.0               ;关常规充电灯
  124. CLR P3.1               ;点亮测试各单个电池电压灯
  125. LCALL YS1s
  126. JB P3.7,SS             ;P3.7不为"0"继续等待
  127. SETB P1.7              ;1 灯点亮测量第一个电池
  128. SS1:
  129. LCALL YS3s
  130. JB P3.7,SS1             ;P3.7不为"0"继续等待
  131. LCALL YS1s
  132. CLR  P1.7
  133. SETB P1.2               ;测量第二个电池
  134. SS2:
  135. LCALL YS3s
  136. JB P3.7,SS2             ;P3.7不为"0"继续等待
  137. LCALL YS1s
  138. CLR  P1.2
  139. SETB P1.3               ;测量第三个电池
  140. SS3:
  141. LCALL YS3s
  142. JB P3.7,SS3             ;P3.7不为"0"继续等待
  143. LCALL YS1s
  144. CLR  P1.3
  145. SETB P1.4              ;测量第四个电池
  146. SS4:
  147. LCALL YS3s
  148. JB P3.7,SS4             ;P3.7不为"0"继续等待
  149. LCALL YS1s
  150. CLR  P1.4
  151. SETB P3.1
  152. AJMP DD                  ;返回单个电池充电程序
  153. SS0:
  154. CLR  P1.5               ;释放J4
  155. LCALL YS1s
  156. CLR  P1.6               ;释放J5 充电全部结束
  157. MOV 70H ,#0FFH          ;设置充电结束标记
  158. TC1:
  159. RET
  160. WC:
  161. END

复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表