登录
首页 单片机论坛
回帖 发帖
正文

主题:哪位高手能帮忙改个程序?

点击:777 回复: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 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重新计时。电路如下图所示:
附件
10-11-16 15:45
好长时间不用汇编了,试着改了改,你试试。
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
你这个程序的整体思维可能有点问题:中断服务程序应该立即返回才对,不应在中断程序中不出来,否则,有悖中断的原则。
11-03-31 20:07

工控新闻

更多新闻资讯