找回密码
 注册会员
查看: 692|回复: 0

带按键去抖的单片机汇编流水灯设计

[复制链接]
发表于 2010-7-5 14:57:22 | 显示全部楼层 |阅读模式
<p>带按键去抖的单片机汇编流水灯设计</p>
<p><img src="http://img.baidu.com/img/iknow/icn_point.gif"> 悬赏分:20 -</p>
<p>解决时间:2010-7-5 14:52</p>
<p>外部中断加的按键  每按一次变一种花样 程序如下  现在要加去抖  但是外部中断的去抖  加个简单的延时行吗   不行 帮编一个被  行的花也帮编一个吧</p>
<p>一下的程序不知道对不对  希望解答的人认真看眼</p>
<p>ORG 0000H</p>
<p>AJMP MAIN</p>
<p>ORG 0003H</p>
<p>AJMP EX0INT</p>
<p>MAIN: SETB EA</p>
<p>SETB EX0</p>
<p>SETB IT0</p>
<p>ACALL DISP</p>
<p>AJMP MAIN</p>
<p>EX0INT: INC R0</p>
<p>CJNE R0,#5,RTI</p>
<p>MOV R0,#1</p>
<p>RTI: RETI</p>
<p>DISP: MOV A, # 0FFH      ;左移前使灯都不亮</p>
<p>CLR C</p>
<p>LED10:    MOV R2, # 07H      ;左移8次</p>
<p>LOOP:  RLC A</p>
<p>MOV P2,A</p>
<p>CALL DELAY</p>
<p>DJNZ R2,LOOP</p>
<p>LED20:    MOV R2, # 07H       ;右移8次</p>
<p>LOOP1: RRC A</p>
<p>MOV P2,A</p>
<p>CALL DELAY</p>
<p>DJNZ R2,LOOP1</p>
<p>LED30:    MOV P2,#0FFH       ;全灭</p>
<p>CALL DELAY</p>
<p>MOV P2,# 0FFH</p>
<p>CALL  DELAY</p>
<p>LED40:  MOV P2, #00H        ;全亮</p>
<p>CALL DELAY</p>
<p>LED1:   CJNE R0,#1,LED2</p>
<p>AJMP LED10       ;R0=1,转花样1</p>
<p>LED2:  CJNE RO,#2,LED3</p>
<p>AJMP LED20       ;RO=2,转花样2</p>
<p>LED3:  CJNE RO,#3,LED4</p>
<p>AJMP LED30        ;RO=3,转花样3</p>
<p>LED4:  CJNE RO,#4,LED1</p>
<p>AJMP LED40        ;RO=4,转花样4</p>
<p>RET</p>
<p>DELAY:  MOV R6, #20        ;延时20ms</p>
<p>DLY1:  MOV R7, #250</p>
<p>DLY0:  NOP</p>
<p>NOP</p>
<p>DJNZ R7,DLY0</p>
<p>DJNZ R6,DLY1</p>
<p>END</p>
<p>问题补充:</p>
<p>程序看看对不对 呀</p>
<p>提问者: tongwu1234 - 一级</p>
<p>最佳答案</p>
<p>错了几个地方</p>
<p>1.LED1~LED4要放在LED10前面</p>
<p>2.DELAY子程序少了RET</p>
<p>3. LED10:    MOV R2, # 07H      ;左移8次</p>
<p>LOOP:  RLC A</p>
<p>MOV P2,A</p>
<p>CALL DELAY</p>
<p>DJNZ R2,LOOP</p>
<p>LED20:    MOV R2, # 07H       ;右移8次</p>
<p>像这样第一花样完后,就到第二花样了,不合题目要求</p>
<p>这样:</p>
<p>ORG 0000H</p>
<p>AJMP MAIN</p>
<p>ORG 0003H</p>
<p>AJMP EX0INT</p>
<p>MAIN: SETB EA</p>
<p>SETB EX0</p>
<p>SETB IT0</p>
<p>ACALL DISP</p>
<p>AJMP MAIN</p>
<p>EX0INT: JB 50H,RTI</p>
<p>SETB 50H</p>
<p>ACALL D10MS</p>
<p>INC R0</p>
<p>CJNE R0,#5,RTI</p>
<p>MOV R0,#1</p>
<p>RTI:  CLR 50H</p>
<p>RETI</p>
<p>DISP: MOV A, # 0FFH      ;左移前使灯都不亮</p>
<p>CLR C</p>
<p>LED1:   CJNE R0,#1,LED2</p>
<p>AJMP LED10       ;R0=1,转花样1</p>
<p>LED2:  CJNE R0,#2,LED3</p>
<p>AJMP LED20       ;RO=2,转花样2</p>
<p>LED3:  CJNE R0,#3,LED4</p>
<p>AJMP LED30        ;RO=3,转花样3</p>
<p>LED4:  CJNE R0,#4,LED1</p>
<p>AJMP LED40        ;RO=4,转花样4</p>
<p>RET</p>
<p>LED10:    MOV R2, # 09H      ;左移8次</p>
<p>LOOP:  RLC A</p>
<p>MOV P2,A</p>
<p>CALL DELAY</p>
<p>DJNZ R2,LOOP</p>
<p>AJMP DISP</p>
<p>LED20:    MOV R2, # 09H       ;右移8次</p>
<p>LOOP1: RRC A</p>
<p>MOV P2,A</p>
<p>CALL DELAY</p>
<p>DJNZ R2,LOOP1</p>
<p>AJMP DISP</p>
<p>LED30:    MOV P2,#0FFH      ;全灭</p>
<p>CALL DELAY</p>
<p>MOV P2,# 0FFH</p>
<p>CALL  DELAY</p>
<p>AJMP DISP</p>
<p>LED40:  MOV P2, #00H        ;全亮</p>
<p>CALL DELAY</p>
<p>AJMP DISP</p>
<p>D10MS:  MOV R5,#10</p>
<p>MOV R4,#250</p>
<p>DJNZ R4,$</p>
<p>DJNZ R5,$-4</p>
<p>RET</p>
<p>DELAY:  MOV R6, #200       ;延时20ms</p>
<p>DLY1:  MOV R7, #250</p>
<p>DLY0:  NOP</p>
<p>NOP</p>
<p>DJNZ R7,DLY0</p>
<p>DJNZ R6,DLY1</p>
<p>RET</p>
<p>END</p>
<p>0</p>
<p>回答者:</p>
<p>47okey - 八级   2010-7-5 14:16</p>
<p>我来评论>></p>
<p>提问者对于答案的评价:</p>
<p>谢谢 了  感谢</p>
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|文字版|手机版|小黑屋|襄阳城

GMT+8, 2025-7-27 19:59

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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