您现在所在的是:

单片机论坛

回帖:4个,阅读:2422 [上一页] [1] [下一页]
924
zhanglijun
文章数:7
年度积分:50
历史总积分:924
注册时间:2004/2/3
发站内信
发表于:2004/2/21 11:15:00
#0楼
我是新手,在做学校布置的课题,遇到难题,请前辈们不吝指教!

具体情况是这样的:

要求:有4个按键A、B、C、D,4个7段电子显示管, A键选择 电机运转 的状态:高速正转、高速反转、低速正转、低速反转、每步角度正转、每步角度反转, B键 转速加,C键 转速减,D键确定。同时显示管要显示当前状态和转速。 A键按下不放的话,每1s转换一个状态,B C 键按住不放要有连加 连减 的功能.

我还在设计显示模块,就遇到问题了,我的程序如下:ORG 0000H
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INPUT
ORG 000BH
AJMP TIMER  
ORG 0100H

     HPB EQU 30H
     LPB EQU 31H
     HNB EQU 32H
     LNB EQU 33H
     RPB EQU 34H
     RNB EQU 35H
     SPEEDL EQU 36H
     SPEEDH EQU 37H
     RADS  EQU 38H
      ;40H-43H单元 用于显示
MAIN: MOV SP,#70H          
     ACALL INIT
M1:  ACALL DISPLY2
     SJMP M1
   
INIT: MOV DPTR,#0BF00H
     MOV A,#03H
     MOVX @DPTR,A    
     MOV TMOD,#01H
     MOV TL0,#3CH
     MOV TH0,#0F6H
     CLR IT0       ;外部中断0 设置为电平触发方式。
     CLR 01H
         
     MOV R7,#0FEH
     MOV R4,#00H  
     MOV R0,#SPEEDL
     MOV @R0,#0
     MOV R0,#SPEEDH
     MOV @R0,#0
     MOV R0,#RADS
     MOV @R0,#0
     
     MOV R0,#30H   ;HPB--RNB  放进 字母偏移量
     MOV A,#0AH
 M2: MOV @R0,A
     INC A
     INC R0
     CJNE A,#10H,M2
     
     MOV R0,#40H  ;40H-41H单元清0
     MOV A,#3      
 M3: MOV @R0,#0H  
     INC R0    
     DEC A    
     JNZ M3
     
     MOV A,#10H   ;40H-41H单元装入初始显示FREE偏移量
     MOV R0,#40H
 M4: MOV @R0,A
     INC A
     INC R0
     CJNE A,#14H,M4
     SETB TR0
     SETB ET0
     SETB EX0
     SETB EA
     RET    
       
TIMER:MOV TL0,#3CH      ;计时5ms
      MOV TH0,#0F6H
      SETB 01H
      RETI

; INPUT:                ;按键 服务程序,R4记录状态1-6
;      CLR EX0
     
;      MOV A,R7
;       JB ACC.0,K1
     
;      INC R4
;       MOV A,R4  
;      MOV R0,#040H  
;   HP:CJNE A,#01H,LP      
;      MOV @R0,HPB
;      SJMP BBB      
   
;   LP:CJNE A,#02H,HN
;      MOV @R0,LPB
;      SJMP BBB    
;    
;    HN:CJNE A,#03H,LN
;       MOV @R0,HNB
;       SJMP BBB
   
;   LN:CJNE A,#04H,RP
 ;     MOV @R0,LNB
;      SJMP BBB
   
 ;  RP:CJNE A,#05H,RN
 ;     MOV @R0,RPB
 ;     SJMP BBB  
   
 ;  RN:CJNE A,#06H,AAA
 ;     MOV @R0,RNB
 ;     SJMP BBB    
;   AAA:MOV R4,#01H
;       MOV A,R4
;       SJMP HP
       
 ;  BBB:ACALL DISPLY2
 ;      SJMP $    
                         
;  K1:JB ACC.1,K2
;     MOV R0,#SPEEDL
;     INC @R0
   
 ;    
  ;    SJMP K0
 ; K2:JB ACC.2,K3
 ;    MOV R0,#SPEEDL
 ;    DEC @R0
     
       
;      SJMP K0
;  K3:
   
   
 ; K0:      
 ;      ACALL DELAY1S
 ;      SETB EX0
 ;      RETI


; DELAY1S:
;      PUSH PSW
;      SETB RS0
;      MOV R0,#0C8H
     
;   W1:JNB 01H,W1
;      CLR 01H
;      DEC R0
;      JNZ W1
;      CLR RS0
;      POP PSW
;      RET

TABLE0: DB 3FH, 6FH, 5BH, 4FH, 66H, 6DH, 7DH, 7H, 7FH, 6FH;数字,00H-09H
        DB 76H,38H;高低正转0AH,0BH
        DB 0F6H,0B8H;高低反转0CH,0DH
        DB 77H,0F7H;角度正反转 0EH,0FH
        DB 71H,77H,79H,79H;FREE:10H,11H,12H,13H

DISPLY2:
        MOV R0,#40H
      ; MOV R5,#0
 L9:   JNB 01H,L9
         CLR 01H
      ; INC R5
      ; CJNE R5,#100,L10
      ; SETB EX0
      ; MOV R5,#0
       
 L10:   MOV DPTR,#TABLE0
       
        MOV A,@R0
        MOVC A,@A+DPTR
        MOV DPTR,#0BF01H
        MOVX @DPTR,A
        INC R0
       
        MOV DPTR,#0BF02H
        MOV A,R7
        MOVX @DPTR,A
        RL A
        MOV R7,A
        CJNE A,#0EFH,L9
       
        MOV R7,#0FEH
        MOV R0,#40H      
       
        RET        
        END

上面的程序 在单步运行的时候,没有任何问题,但如果连续运行,机器就没有反应了.我反复试了好久,实在不知该怎么办了..
2049
godspeed 版主
文章数:428
年度积分:50
历史总积分:2049
注册时间:2001/10/16
发站内信
发表于:2004/2/23 15:11:00
#1楼
你的程序没有注释,叫人怎么帮你啊?
我爱你
但我不会告诉你
我怕告诉你之后我会死掉
我不怕死
但我怕死后
没有人象我一样爱你!
924
zhanglijun
文章数:7
年度积分:50
历史总积分:924
注册时间:2004/2/3
发站内信
发表于:2004/2/23 22:07:00
#2楼
o,,没养成编程的好习惯。。。(已经搞定了。。。谢谢!)
938
振威科技
文章数:52
年度积分:50
历史总积分:938
注册时间:2004/3/2
发站内信
发表于:2004/3/2 17:01:00
#3楼
建议你以后用C编程表情
873
biblodger
文章数:35
年度积分:50
历史总积分:873
注册时间:2004/3/25
发站内信
发表于:2004/4/6 8:24:00
#4楼
检查一下按键程序,也许对按键的扫描不对,你的程序太多了,没仔细看,但我想问题也许在于没连续扫描按键程序段。
也可以在扫描的地方加一个看门狗,防止扫描的返回值超出预设值导致程序跑飞了。

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

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

78.0005