找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机数码管加减程序 汇编语言

[复制链接]
跳转到指定楼层
楼主
ID:83710 发表于 2015-6-23 22:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ORG 0000H
ajmp main
org 000bh
AJMP PDF   ;TR0中断入口                                            
org 0030h
MAIN:clr  f0   ;触发标志位 ****************************************
MOV DPTR,#TAB01
MOV 32H,#10H;预设定
MOV 31H,#60H;预设定
MOV 30H,#003H;预设定;
MOV R1,#32H;设定指针与R0配合,很重要值不能改;而且是工作是的指针,最重要
MOV TMOD,#01H;定时器设定
MOV TH0,#0BH  
MOV TL0,#0DCH  
mov r7,#20h  
SETB ea
setb et0 ;开中断 ****************** ***************************************
STA:MOV R0,#30H; ***************************** 以下是显示程序
mov p2,#80h;显示字
hgfd:jb f0,s;判是否触发
cvbn:mov 40h,r1
mov a,r0
cjne a,40h,kz ;进行比较R1和R0相等时便是设定状态可以通过加减修改30H,31H,32H,
jnb p3.4,INCr1
JNB P3.5,DECR1
JNB P1.5,INCR0 ;按键检测,在设定状态有效工做状态无效
JNB P1.6,DECR0
JNB P1.7,CFKS
S:CJNE R0,#31H,XX ;显示31H是要加小数点
MOV A,@R0
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A   ; ;显示高BCD
MOV A,P2
RL A
MOV P2,A
LCALL YS
MOV DPTR,#TAB
MOV A,@R0
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A  ;显示低BCD
MOV A,P2
RL A
MOV P2,A
MOV DPTR,#TAB01
AJMP ER ;............................................
DECR0:AJMP ECR0
INCR0:AJMP NCR0
CFKS:AJMP FKS    ;中转战因为程序太长
DECR1:AJMP ECR1
INCR1:AJMP NCR1
XX: MOV A,@R0;.30H,32H显示   
ANL A,#0FH           
MOVC A,@A+DPTR
MOV P0,A  
MOV A,P2
RL A
MOV P2,A
LCALL YS
MOV A,@R0
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A
MOV A,P2
RL A
MOV P2,A
ER:LCALL  YS  ;延时可设定
jb f0,kdm ;判设定还是工作状态
ajmp sta  ;若是设定状态则返回
kdm:JB ACC.5,STA;吃大亏了和下面的DJNZ R7,S矛盾改STA的位置就行
kz:INC R0 ;显示用指针
js:AJMP hgfd ;**************以上是显示程序*****************************.
  
PDF:DJNZ R7,PT01 ;*********以下是中断和工作减一 程序*******************
BN:CJNE R1,#32H,KJ
AJMP HG
KJ:CJNE R1,#31H,SF
AJMP FS
SF:CJNE R1,#30H,BN
AJMP XW
HG:MOV A,32H
CJNE A,#00H,V  ;判32
CLR P1.0
DEC R1
FS:MOV A,31H
CJNE A,#00H,DDJY;判31
CLR P1.3
DEC R1
XW:MOV A,30H
CJNE A,#00H,V ;判30
CLR P1.4
MOV R1,#32H
CLR TR0
AJMP STA;............................
V: MOV A,@R1
ANL A,#0FH
CJNE A,#00h,k
MOV A,@R1
swap a
anl a,#0fh
CJNE A,#00H,h
MOV @R1,#00H
MOV R7,#20H  ;设定
CLR TR0
reti
K:MOV A,@R1
DEC A
MOV @R1,A
MOV R7,#20H  ;设定
reti
h: dec A
SWAP A
add A,#09H
mov @R1,A
MOV R7,#20H  ;设定
PT01:reti;...................................................................
SWG:AJMP S
DDJY: MOV A,@R1
ANL A,#0FH
CJNE A,#00h,XA
MOV A,@R1
swap a
anl a,#0fh
CJNE A,#00H,CQ
MOV R7,#20H   ;设定
reti
XA:MOV A,@R1
DEC A
MOV @R1,A
MOV R7,#01H ;设定
reti
CQ: dec A
SWAP A
add A,#09H
mov @R1,A
MOV R7,#01H ;设定
RETI ;****************************8以上是中断和工作减一 程序***********
NCR1:MOV R5,#099H ;*************以下是工作在设定状态时的按键选单元****
Z:MOV R6,#0FFH     
X:NOP         
DJNZ R6,X
DJNZ R5,Z;去抖动
JB P3.4,SWG
MOV A,R1
CJNE A,#32H,TQ
MOV R1,#32H
AJMP STA
TQ:INC R1
AJMP STA ;********************
ECr1: mov r5,#99h ;******************************
cv:mov r6,#0FFh
os:nop
djnz r6,os
djnz r5,cv
JB P3.5,SWG;注意这里要重复检查
mov a,r1
cjne a,#30h,QT
mov r1,#30h
ajmp sta
QT:DEC R1
AJMP STA;**************以上是工作在设定状态时的按键选单元********************************
NCR0:MOV R5,#0F9H;************以下是单元加减键*************************
ZCP:MOV R6,#0FFH
XMQ:NOP
DJNZ R6,XMQ
DJNZ R5,ZCP;去抖动
MOV A,@R1
ANL A,#0FH
CJNE A,#09h,DAMQ
MOV A,@R1
swap a
anl a,#0fh
CJNE A,#09H,FUL
MOV @R1,#99H
AJMP S
DAMQ:MOV A,@R0
INC A
MOV @R1,A
AJMP S
FUL: INC A
SWAP A
mov @R1,a
AJMP S;******************************************
ECR0:MOV R5,#0F9H;***************************************
Zh:MOV R6,#0FFH
Xj:NOP
DJNZ R6,Xj
DJNZ R5,Zh;去抖动
MOV A,@R1
ANL A,#0FH
CJNE A,#00h,kWS
MOV A,@R1
swap a
anl a,#0fh
CJNE A,#00H,hIV
MOV @R1,#00H
AJMP S
KWS:MOV A,@R1
DEC A
MOV @R1,A
AJMP S
hIV: dec A
SWAP A
add A,#09H
mov @R1,A
AJMP S;*****************以上是单元加减键****************************
FKS:SETB F0
SETB TR0
MOV R1,#32H;工作重装!
AJMP STA ;**
ys:mov r3,#05h ;******************************
l:mov r4,#056h
lo:nop
djnz r4,lo   
djnz r3,l
ret ; ***************************************
TAB01: DB  03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H  
TAB: DB 02H,9EH,24H,0CH,98H,48H,40H,1EH,00H,08H
END

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

使用道具 举报

沙发
ID:83710 发表于 2015-6-23 22:07 | 只看该作者
改进版:


  1. ORG 0000H
  2. ajmp main
  3. org 000bh
  4. AJMP PDF                                             
  5. org 0030h
  6. main:MOV DPTR,#TAB01
  7. MOV 32H,#10H;设定
  8. MOV 31H,#60H;设定
  9. MOV 30H,#10H;设定;
  10. MOV R1,#32H;..................................................................
  11. MOV TMOD,#01H
  12. MOV TH0,#0BH
  13. MOV TL0,#0DCH
  14. mov r7,#20h
  15. SETB ea
  16. setb et0
  17. setb tr0;*******************************************

  18. STA:MOV R0,#30H;.....................................................
  19. mov p2,#80h  
  20. S:CJNE R0,#31H,XX
  21. MOV A,@R0
  22. ANL A,#0FH
  23. MOVC A,@A+DPTR
  24. MOV P0,A
  25. MOV A,P2
  26. RL A
  27. MOV P2,A
  28. LCALL YS
  29. MOV DPTR,#TAB
  30. MOV A,@R0
  31. SWAP A
  32. ANL A,#0FH
  33. MOVC A,@A+DPTR
  34. MOV P0,A
  35. MOV A,P2
  36. RL A
  37. MOV P2,A
  38. MOV DPTR,#TAB01
  39. AJMP ER ;............................................

  40. XX: MOV A,@R0;.........................   
  41. ANL A,#0FH           
  42. MOVC A,@A+DPTR
  43. MOV P0,A
  44. MOV A,P2
  45. RL A
  46. MOV P2,A
  47. LCALL YS
  48. MOV A,@R0
  49. SWAP A
  50. ANL A,#0FH
  51. MOVC A,@A+DPTR
  52. MOV P0,A
  53. MOV A,P2
  54. RL A
  55. MOV P2,A
  56. ER:LCALL  YS
  57. JB ACC.5,STA

  58. INC R0

  59. AJMP S ;.........................................................
  60. PDF:DJNZ R7,PT01
  61. BN:CJNE R1,#32H,KJ
  62. AJMP HG
  63. KJ:CJNE R1,#31H,SF
  64. AJMP FS
  65. SF:CJNE R1,#30H,BN
  66. AJMP XW
  67. HG:MOV A,32H
  68. CJNE A,#00H,V  ;判32
  69. CLR P1.0
  70. DEC R1
  71. FS:MOV A,31H
  72. CJNE A,#00H,DDJY;判31
  73. CLR P1.3
  74. DEC R1
  75. XW:MOV A,30H
  76. CJNE A,#00H,V ;判30
  77. CLR P1.4
  78. MOV R1,#32H
  79. CLR TR0
  80. AJMP STA;................................................................
  81. V: MOV A,@R1
  82. ANL A,#0FH
  83. CJNE A,#00h,k
  84. MOV A,@R1
  85. swap a
  86. anl a,#0fh
  87. CJNE A,#00H,h
  88. MOV @R1,#00H
  89. MOV R7,#20H
  90. CLR TR0
  91. reti
  92. K:MOV A,@R1
  93. DEC A
  94. MOV @R1,A
  95. MOV R7,#20H
  96. reti
  97. h: dec A
  98. SWAP A
  99. add A,#09H
  100. mov @R1,A
  101. MOV R7,#20H
  102. PT01:reti;...................................................................

  103. DDJY: MOV A,@R1
  104. ANL A,#0FH
  105. CJNE A,#00h,XA
  106. MOV A,@R1
  107. swap a
  108. anl a,#0fh
  109. CJNE A,#00H,CQ
  110. MOV R7,#20H
  111. reti
  112. XA:MOV A,@R1
  113. DEC A
  114. MOV @R1,A
  115. MOV R7,#01H
  116. reti
  117. CQ: dec A
  118. SWAP A
  119. add A,#09H
  120. mov @R1,A
  121. MOV R7,#01H
  122. RETI


  123. ys:mov r3,#05h
  124. l:mov r4,#02h
  125. lo:nop
  126. djnz r4,lo
  127. djnz r3,l
  128. ret
  129. TAB01: DB  03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H  

  130. TAB: DB 02H,9EH,24H,0CH,98H,48H,40H,1EH,00H,08H

  131. END
复制代码
回复

使用道具 举报

板凳
ID:84465 发表于 2015-7-2 14:02 | 只看该作者
我正在学习数码管操作,楼主有这个加减程序的电路图吗
回复

使用道具 举报

地板
ID:74784 发表于 2015-7-12 09:53 | 只看该作者
玩汇编的
没有电路图配合
等于零
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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