您现在所在的是:

单片机论坛

回帖:1个,阅读:737 [上一页] [1] [下一页]
700
xilans48
文章数:17
年度积分:50
历史总积分:700
注册时间:2010/10/31
发站内信
发表于:2010/11/16 15:45:36
#0楼
哪位高手能帮忙改个程序?
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP LOP
ORG 0013H
AJMP LOP1
MAIN:MOV P1,#3FH
    MOV P2,#3FH
MOV IP,#0E4H
SETB EA
SETB EX0
SETB EX1
AJMP $
LOP:MOV R2,#6H
MOV P1,#3FH
MOV R3,#0H
MOV R4,#1H
LOOP2:MOV R1,#0AH
     MOV DPTR,#TAB
LOOP:MOV A,R3
    MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY
INC DPTR
DJNZ R1,LOOP
MOV DPTR,#TAB1
LOOP1:MOV A,R4
     MOVC A,@A+DPTR
 MOV P1,A
 INC DPTR
 INC R4
 DJNZ R2,LOOP2
 MOV P1,#7DH
 MOV P2,#3FH
 LCALL DELAY
 AJMP LOP
 RETI
LOP1:AJMP $
    RETI
DELAY : MOV R5,#10                      
DEY1:MOV R6,#200
DEY2:MOV R7,#250
DEY3:DJNZ R7,$
    DJNZ R6,DEY2
DJNZ R5,DEY1
RET
TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
TAB1:DB 3FH,06H,5BH,4FH,66H,6DH
END
我想更改此程序功能从59倒计时到0,按下开关1中断停止,按下开关2重新计时。电路如下图所示:
附件
758
hDragon
文章数:19
年度积分:50
历史总积分:758
注册时间:2011/3/30
发站内信
发表于:2011/3/31 20:07:31
#1楼
试试这个程序
好长时间不用汇编了,试着改了改,你试试。
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP LOP
ORG 0013H
AJMP LOP1
MAIN:
 MOV P1,#3FH
 MOV P2,#3FH
 MOV IP,#0E4H
 SETB EA
 SETB EX0
 SETB EX1
 AJMP $

LOP:
 MOV R2,#6H
 
 ;MOV P1,#3FH
 MOV P1,#6DH  ;Display 59
 MOV P2,#6FH

 MOV R3,#09H  ;Reload
 MOV R4,#05H
LOOP2:
 MOV R1,#0AH  ;Maybe R1 should reload 9
 MOV DPTR,#TAB
LOOP:
 MOV A,R3
 MOVC A,@A+DPTR
 MOV P2,A
 LCALL DELAY

 ;INC DPTR
 DEC R3
   
 DJNZ R1,LOOP
 MOV DPTR,#TAB1
LOOP1:
 MOV A,R4
 MOVC A,@A+DPTR
 MOV P1,A
 ;INC DPTR     Delete this line

 ;INC R4
 DEC R4
     
 DJNZ R2,LOOP2
 MOV P1,#3FH  ;Reload
 MOV P2,#3FH
 LCALL DELAY
 AJMP LOP
 RETI

LOP1:
  AJMP $
  RETI

DELAY :
  MOV R5,#10                      
DEY1:
  MOV R6,#200
DEY2:
  MOV R7,#250
DEY3:
  DJNZ R7,$
  DJNZ R6,DEY2
  DJNZ R5,DEY1
  RET

TAB:
  DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
TAB1:
  DB 3FH,06H,5BH,4FH,66H,6DH

  END

你这个程序的整体思维可能有点问题:中断服务程序应该立即返回才对,不应在中断程序中不出来,否则,有悖中断的原则。

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

31.2002