找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机电子时钟设计汇编语言代码和proteus仿真

  [复制链接]
跳转到指定楼层
楼主
在附件里   电子时钟设计proteus仿真原理图:


单片机汇编语言源码:
  1. ORG 0000H
  2. AJMP MAIN
  3. ORG 000BH
  4. LJMP INTT0

  5. ORG 0030H
  6. MAIN:
  7. MOV SP,#60H ;确立堆栈区
  8. MOV PSW,#00H
  9. MOV R0,#20H   ;RAM区首地址
  10. MOV R7,#5FH ;RAM区单元个数

  11. QL:
  12. MOV @R0,#00H ;RAM清零        
  13. INC R0
  14. DJNZ R7,QL

  15. MOV IP,#02H ;IP初始化,优先定时器0
  16. MOV IE,#82H ;IE初始化
  17. MOV TMOD,#01H ;定时器0方式1工作
  18. LCALL PP ;调P.子程序

  19. NEXT:
  20. LCALL KEY ;按键检测子程序
  21. JB ACC.0,RUNF ;A键按下运行
  22. LCALL DISP ;调用显示子程序
  23. SJMP NEXT

  24. RUNF:
  25. LCALL OUTT ;调传送子程序
  26. LCALL TIME ;开电子钟
  27. JK:
  28. LCALL DISP
  29. LCALL KEY
  30. JZ JK
  31. LCALL ANKEY        ;调用键功能子程序
  32. LCALL DISP
  33. SJMP JK

  34. ;P点显示子程序
  35. PP:
  36. MOV 37H,#12 ;P点编码送寄存器
  37. MOV R0,#30H ;P点编码送寄存器
  38. MOV R7,#07H
  39. PPP:
  40. MOV @R0,#10  ;???
  41. INC R0
  42. DJNZ R7,PPP
  43. RET

  44. ;键扫描子程序
  45. KEY:
  46. LCALL KEYS ;调用键值处理子程序
  47. JZ EXIT ;没有键按下转到返回
  48. LCALL DISP
  49. LCALL DISP ;调用显示去抖动
  50. LCALL KEYS
  51. JZ EXIT
  52. MOV B,20H ;保存键值
  53. KEYSF:
  54. LCALL KEYS
  55. JZ KEYY ;键释放,转到恢复键值
  56. LCALL DISP ;调显示子程序延时
  57. AJMP KEYSF ;等到键释放

  58. KEYY:
  59. MOV A,B ;键值送20H单元保存??
  60. EXIT:RET

  61. KEYS:
  62. MOV P1,#0FFH ;先向P1口写1
  63. MOV A,P1 ;P1口值送A
  64. CPL A
  65. ANL A,#0FH ;保存P1口的低4位
  66. MOV 20H,A ;A值送20H保存
  67. RET

  68. ;键功能子程序
  69. ANKEY:
  70. CLR EA ;关中断
  71. CHECK:
  72. JB TR0,YXZ ;判断是否运行
  73. K0:
  74. CJNE A,#01H,K1
  75. AJMP RUN ;转运行
  76. K1:
  77. CJNE A,#02H,K2
  78. AJMP KEY1 ;转时调整
  79. K2:
  80. CJNE A,#40H,K3
  81. AJMP KEY2 ;转分调整
  82. K3:
  83. CJNE A,#08H,OUT          ;转
  84. AJMP KEY3 ;转秒调整

  85. YXZ:
  86. JB ACC.0,STOP
  87. AJMP OUT

  88. KEY1:
  89. MOV R0,#45H ;时调整
  90. LCALL ADD1 ;调加一子程序
  91. CLR C
  92. CJNE A,#24H,OUTT ;转传送显示数据子程序
  93. ACALL CLR0 ;调时间清理子程序
  94. AJMP OUTT
  95. KEY2:
  96. MOV R0,#43H ;分调整
  97. LCALL ADD1
  98. CLR C
  99. CJNE A,#60H,OUTT
  100. ACALL CLR0
  101. AJMP OUTT
  102. KEY3:
  103. MOV R0,#41H ;秒调整
  104. ACALL ADD1
  105. CLR C
  106. CJNE A,#60H,OUTT
  107. ACALL CLR0

  108. ;传送显示数据子程序
  109. OUTT:
  110. MOV 30H,40H ;秒显示单元40H-41H
  111. MOV 31H,41H
  112. MOV 32H,#11 ;"-"
  113. MOV 33H,42H ;分显示单元42H-43H
  114. MOV 34H,43H
  115. MOV 35H,#11 ;"-"
  116. MOV 36H,44H ;时显示单元44H-45H               
  117. MOV 37H,45H
  118. RET
  119. STOP:
  120. CLR TR0
  121. RET
  122. RUN:
  123. LCALL TIME ;调运行电子钟子程序
  124. OUT:
  125. SETB EA ;无键按下或完成功能跳出
  126. RET

  127. ;运行电子钟子程序                                                                        
  128. TIME:
  129. SETB EA
  130. MOV TL0,#0B0H  ;3CB0H
  131. MOV TH0,#3CH
  132. MOV R4,#20  ;50ms,20次循环
  133. SETB TR0 ;启动定时器0
  134. RET

  135. ;定时器0中断处理子程序
  136. INTT0:
  137. PUSH ACC
  138. PUSH PSW
  139. CLR ET0
  140. CLR TR0                                                                        
  141. MOV TL0,#0B0H  ;重新设置定时初值
  142. MOV TH0,#3CH
  143. SETB TR0
  144. DJNZ R4,OUTT0  ;1秒到
  145. ADDSS:
  146. MOV R4,#14H  ;20次计数
  147. MOV R0,#41H  ;秒十位
  148. ACALL ADD1
  149. CLR C
  150. CJNE A,#60H,ADDMM ;1分到
  151. ADDMM:
  152. JC OUTT0
  153. ACALL CLR0
  154. MOV R0,#43H
  155. ACALL ADD1
  156. CLR C
  157. CJNE A,#60H,ADDHH ;1小时到
  158. ADDHH:
  159. JC OUTT0
  160. ACALL CLR0
  161. MOV R0,#45H
  162. ACALL ADD1
  163. CLR C
  164. CJNE A,#24H,HOUR ;1天到
  165. HOUR:
  166. JC OUTT0
  167. ACALL CLR0

  168. OUTT0:
  169. MOV 30H,40H ;秒显示单元40H-41H
  170. MOV 31H,41H
  171. MOV 32H,#11 ;"-"
  172. MOV 33H,42H ;分显示单元42H-43H
  173. MOV 34H,43H
  174. MOV 35H,#11 ;"-"
  175. MOV 36H,44H ;时显示单元44H-45H               
  176. MOV 37H,45H
  177. POP PSW
  178. POP ACC
  179. SETB ET0
  180. RETI

  181. ;时间清理子程序
  182. CLR0:
  183. CLR A
  184. MOV @R0,A
  185. DEC R0
  186. MOV @R0,A
  187. RET

  188. ;加一子程序
  189. ADD1:
  190. MOV A ,@R0  ;取十位
  191. DEC R0
  192. SWAP A
  193. ORL A,@R0  ;组合十位与个位           
  194. ADD A,#01H  ;加1
  195. DA A ;十进制调整
  196. MOV R3,A  ;暂存
  197. ANL A,#0FH  ;屏蔽十位
  198. MOV @R0,A  ;放入个位单元
  199. MOV A,R3  ;取值
  200. INC R0
  201. SWAP A
  202. ANL A,#0FH  ;屏蔽个位
  203. MOV @R0,A  ;放入十位单元
  204. MOV A,R3  ;数值放入A中等待判断
  205. RET

  206. ;显示子程序
  207. DISP:
  208. MOV R1,#30H  ;显示缓冲存储单元首地址
  209. MOV R2,#80H  ;从右至左显示
  210. DISP1:
  211. MOV P2,R2  ;送位控
  212. MOV A,@R1
  213. MOV DPTR,#TAB
  214. MOVC A,@A+DPTR
  215. MOV P0,A  ;送段控
  216. ACALL DL  ;延时
  217. MOV A,R2  ;???
  218. JB ACC.0,DISP2          ;从右至左8位LED显示一遍
  219. RR A
  220. INC R1
  221. MOV R2,A
  222. AJMP DISP1
  223. DISP2:RET
  224. TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0CH

  225. ;显示延时子程序
  226. DL:
  227. MOV R6,#14H  
  228. DL1:
  229. MOV R7,#19H
  230. DL2:
  231. DJNZ R7,DL2
  232. DJNZ R6,DL1
  233. RET
  234. END
复制代码


下载:
电子时钟.rar (25.83 KB, 下载次数: 336)
第一个按钮是开始停止按钮,在停止状态下 按后面3个按钮可以调整时间,谢谢16楼回帖,修正了一些问题:
经过网友指导修改过的电子时钟.7z (31.3 KB, 下载次数: 21)

评分

参与人数 3黑币 +15 收起 理由
13930687476 + 5 很给力!
asrfdaf + 5 共享资料的黑币奖励!
龙腾四海 + 5 赞一个!

查看全部评分

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

使用道具 举报

沙发
ID:207295 发表于 2017-6-3 09:09 | 只看该作者
多谢分享,好资料,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:208777 发表于 2017-6-7 22:23 | 只看该作者
楼主可以把图上每个按键的功能注释一下么?
回复

使用道具 举报

地板
ID:184584 发表于 2017-6-9 20:09 | 只看该作者
您好,请问您有两个按键的嘛??
回复

使用道具 举报

5#
ID:161488 发表于 2017-7-14 20:59 | 只看该作者
r3对应的按键不起作用
回复

使用道具 举报

6#
ID:246817 发表于 2017-11-9 13:51 | 只看该作者
为什么不能正常跑
回复

使用道具 举报

7#
ID:358553 发表于 2018-6-25 18:22 | 只看该作者
为什么我的不能显示

jp.png (16.91 KB, 下载次数: 78)

jp.png
回复

使用道具 举报

8#
ID:224811 发表于 2018-7-9 20:55 | 只看该作者
谢谢分享
回复

使用道具 举报

9#
ID:295874 发表于 2018-7-18 17:15 | 只看该作者
其中一个按键不好使用,不知道是不是故意没有用到。
回复

使用道具 举报

10#
ID:365673 发表于 2018-8-1 13:05 | 只看该作者

多谢楼主棒棒的分享
回复

使用道具 举报

11#
ID:429437 发表于 2018-11-26 15:01 | 只看该作者
谢谢楼主分享,但是R3对应的按键按下去之后没有作用
回复

使用道具 举报

12#
ID:430813 发表于 2018-11-26 15:36 | 只看该作者
很给力
回复

使用道具 举报

13#
ID:430813 发表于 2018-11-26 15:37 | 只看该作者
很给力  很赞
回复

使用道具 举报

14#
ID:337883 发表于 2018-12-3 21:45 | 只看该作者
为啥这个显示不了啊
回复

使用道具 举报

15#
ID:438030 发表于 2018-12-5 21:38 | 只看该作者
为什么不能调“时”位呢
回复

使用道具 举报

16#
ID:323313 发表于 2018-12-9 20:38 | 只看该作者
liyongan_1985 发表于 2018-7-18 17:15
其中一个按键不好使用,不知道是不是故意没有用到。

作者程序写错了,90行的40H改为04H
回复

使用道具 举报

17#
ID:447973 发表于 2018-12-17 15:53 | 只看该作者
运行不了
回复

使用道具 举报

18#
ID:458568 发表于 2018-12-30 15:19 | 只看该作者
为何我的中间两个按键没反应 在线等  挺急的
回复

使用道具 举报

19#
ID:548729 发表于 2019-5-27 21:53 | 只看该作者
液晶显示器选哪种啊
回复

使用道具 举报

20#
ID:99987 发表于 2019-5-29 11:05 | 只看该作者
非常不错!很好,靠谱。有熟悉汇编的,小问题可以调整。
回复

使用道具 举报

21#
ID:550610 发表于 2019-5-30 12:03 | 只看该作者
斯可瑞木 发表于 2018-12-9 20:38
作者程序写错了,90行的40H改为04H

厉害厉害
回复

使用道具 举报

22#
ID:662249 发表于 2019-12-23 11:37 | 只看该作者
funcdl 发表于 2018-11-26 15:01
谢谢楼主分享,但是R3对应的按键按下去之后没有作用

90行的40H改为04H
回复

使用道具 举报

23#
ID:662249 发表于 2019-12-25 16:23 | 只看该作者
问问基于这个原理图的基础上定时功能怎么做
回复

使用道具 举报

24#
ID:1032257 发表于 2022-6-5 10:17 来自手机 | 只看该作者
有没有大佬教添加整点报时功能也就是加个蜂鸣器
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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