|
<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>
|
|