99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

51編寫程序按鍵的問題

大俠們教教我




    謝謝了
全部回復(29)
正序查看
倒序查看
yxdz
LV.7
2
2008-04-04 16:11
大俠你們知道嗎
0
回復
yxdz
LV.7
3
2008-04-05 13:14
@yxdz
大俠你們知道嗎
還在等啊
0
回復
yxdz
LV.7
4
2008-04-05 19:19
@yxdz
還在等啊
嗚嗚
0
回復
yxdz
LV.7
5
2008-04-06 08:33
@yxdz
還在等啊
哦,現在正遇清明小長假    可能大俠們都旅游了,希望你們回來幫我看看啊
0
回復
2008-04-06 13:49
@yxdz
哦,現在正遇清明小長假    可能大俠們都旅游了,希望你們回來幫我看看啊
真暈,你這個思路有點亂.

先申明,我也不是DX,只是比你先學幾天.

不同的掃描方法應做成不同的子程序.在初始化后主程序里通過掃錨按鍵來判定調用哪一組子程序.這樣明白了嗎?
0
回復
2008-04-06 14:00
@yxdz
哦,現在正遇清明小長假    可能大俠們都旅游了,希望你們回來幫我看看啊
如果你想實時控制,可以用定時中斷去掃描按鍵.
0
回復
chirituzi
LV.1
8
2008-04-12 16:50
你可以按鍵用中斷來實現,每一個功能模塊里加幾條條件轉移指令
例如主程序起始(f0是51單片機里面的psw中用戶可以用程序自己定義的標志位)
setb f0 ;軟件標志位置1, 功能1里面在適當的位置加幾條(jnb f0,功能2)判轉移語句,f0為0則跳轉至功能2,為1則順序執行下一條,功能2里面在適當的位置加幾條(jb f0,功能3)語句,功能3里的判轉移語句和功能1里的相同,功能4里的和功能2里的判轉移語句相同,依次類推,修改一下出口參數就可以了
例如按鍵定義為中斷0 則按鍵按下后去執行中斷0的程序
中斷0的程序為:
wint0: cpl f0  ;(取反f0)
         nop
        reti
大概程序可以設計成這樣:
org 0000h
ajmp:main
org 0003h  ;外中斷0入口地址
ljmp wint0
  .
  .
  .
  .
org  0030h
main:
定義中斷0,開中斷,開中斷0
gongneng1:
這里是功能1程序區
適當的位置加幾條條件判轉移指令可以自己隨意安排
   jnb f0,gongneng2    ;自己愿意加幾條就加幾條
   .
    .
    .
ajmp gongneng1
gongneng2:
這里是功能2程序區
適當的位置加幾條條件判轉移指令可以自己隨意安排
   .
   .
jb f0,gongneng3
   .
ajmp gongneng2
gongneng3:
這里是功能3程序區
適當的位置加幾條條件判轉移指令可以自己隨意安排
   .
   .
jnb f0,gongneng4
   .  
ajmp gongneng3
gongneng4:
這里是功能4程序區
適當的位置加幾條條件判轉移指令可以自己隨意安排
   .
jb f0,gongneng5  
   .
ajmp gongneng4

wint0:
     cpl f0
     nop
     reti

end
朋友這樣應該可以了,不行的話加我qq:63892347
郵箱: chirituzi@126.com
0
回復
yxdz
LV.7
9
2008-04-12 20:57
@chirituzi
你可以按鍵用中斷來實現,每一個功能模塊里加幾條條件轉移指令例如主程序起始(f0是51單片機里面的psw中用戶可以用程序自己定義的標志位)setbf0;軟件標志位置1,功能1里面在適當的位置加幾條(jnbf0,功能2)判轉移語句,f0為0則跳轉至功能2,為1則順序執行下一條,功能2里面在適當的位置加幾條(jbf0,功能3)語句,功能3里的判轉移語句和功能1里的相同,功能4里的和功能2里的判轉移語句相同,依次類推,修改一下出口參數就可以了例如按鍵定義為中斷0則按鍵按下后去執行中斷0的程序中斷0的程序為:wint0:cplf0  ;(取反f0)        nop        reti大概程序可以設計成這樣:org0000hajmp:mainorg0003h  ;外中斷0入口地址ljmpwint0  .  .  .  .org  0030hmain:定義中斷0,開中斷,開中斷0gongneng1:這里是功能1程序區適當的位置加幾條條件判轉移指令可以自己隨意安排  jnbf0,gongneng2    ;自己愿意加幾條就加幾條  .    .    .ajmpgongneng1gongneng2:這里是功能2程序區適當的位置加幾條條件判轉移指令可以自己隨意安排  .  .jbf0,gongneng3  .ajmpgongneng2gongneng3:這里是功能3程序區適當的位置加幾條條件判轉移指令可以自己隨意安排  .  .jnbf0,gongneng4  .  ajmpgongneng3gongneng4:這里是功能4程序區適當的位置加幾條條件判轉移指令可以自己隨意安排  .jbf0,gongneng5    .ajmpgongneng4wint0:    cplf0    nop    retiend朋友這樣應該可以了,不行的話加我qq:63892347郵箱:chirituzi@126.com
首先  十分十分感謝  chirituzi  老兄不嫌麻煩而又很詳細的解釋!!!

  謝謝你給的郵箱號和你的QQ號.現在暫時不好意思打擾你,     我先自己按照你的方法下苦功的去練練,如果我撐不住差不多要趴下了,那就再次打擾老兄你了!

     我的一個認識的朋友他用義隆EM78PS53編燈跳    每個功能的程序跟我用51編的差不多,我看過他的成品燈,按鍵按下去立刻會切換  ,他說他用掃描方式,(由于商業機密,他說的是不是真的我不知道)我想,他能做,我想我是也能用掃描方式去做 由于我所有的IO口都要做輸出口,留邊上一個做按鈕布線很方便,而用中斷的話要在中間,PCB布板線條很繞彎,就想用掃描方式了.          如果掃描方式不能實時控制,那就我就改PCB  用中斷了,只要功能會切換什么比什么都好.

       寫了多了點,讓各位老兄看暈了
0
回復
zj47988302
LV.4
10
2008-04-13 10:44
@yxdz
首先  十分十分感謝  chirituzi  老兄不嫌麻煩而又很詳細的解釋!!!  謝謝你給的郵箱號和你的QQ號.現在暫時不好意思打擾你,    我先自己按照你的方法下苦功的去練練,如果我撐不住差不多要趴下了,那就再次打擾老兄你了!    我的一個認識的朋友他用義隆EM78PS53編燈跳    每個功能的程序跟我用51編的差不多,我看過他的成品燈,按鍵按下去立刻會切換  ,他說他用掃描方式,(由于商業機密,他說的是不是真的我不知道)我想,他能做,我想我是也能用掃描方式去做由于我所有的IO口都要做輸出口,留邊上一個做按鈕布線很方便,而用中斷的話要在中間,PCB布板線條很繞彎,就想用掃描方式了.          如果掃描方式不能實時控制,那就我就改PCB  用中斷了,只要功能會切換什么比什么都好.      寫了多了點,讓各位老兄看暈了
這還能有什么商業機密啊.

不用外中斷,那就用定時中斷,每10MS掃描一次.這個速度對閃燈來講已經足夠了.
0
回復
chirituzi
LV.1
11
2008-04-14 09:49
@yxdz
首先  十分十分感謝  chirituzi  老兄不嫌麻煩而又很詳細的解釋!!!  謝謝你給的郵箱號和你的QQ號.現在暫時不好意思打擾你,    我先自己按照你的方法下苦功的去練練,如果我撐不住差不多要趴下了,那就再次打擾老兄你了!    我的一個認識的朋友他用義隆EM78PS53編燈跳    每個功能的程序跟我用51編的差不多,我看過他的成品燈,按鍵按下去立刻會切換  ,他說他用掃描方式,(由于商業機密,他說的是不是真的我不知道)我想,他能做,我想我是也能用掃描方式去做由于我所有的IO口都要做輸出口,留邊上一個做按鈕布線很方便,而用中斷的話要在中間,PCB布板線條很繞彎,就想用掃描方式了.          如果掃描方式不能實時控制,那就我就改PCB  用中斷了,只要功能會切換什么比什么都好.      寫了多了點,讓各位老兄看暈了
希望你早日把程序做好!呵呵
0
回復
njyd
LV.8
12
2008-04-19 22:01
  返回不很容易嗎?
  子程序返回指令:RET就是返回到調用子程序的下面一句.前提是要用CALL調用子程序.

  CALL AAA  (如果距離遠用LCALL)
  Axxx

  ....

AAA:YYY  ;子程序
   ZZZ
   ....
   RET
這RET就返回到Axxx

下一個
  LCALL AAA
  Bxxx
  ....
這一回調用AAA后就返回Bxxx
0
回復
yxdz
LV.7
13
2008-04-20 13:41
@njyd
  返回不很容易嗎?  子程序返回指令:RET就是返回到調用子程序的下面一句.前提是要用CALL調用子程序.  CALLAAA  (如果距離遠用LCALL)  Axxx  ....AAA:YYY  ;子程序  ZZZ  ....  RET這RET就返回到Axxx下一個  LCALLAAA  Bxxx  ....這一回調用AAA后就返回Bxxx
謝謝這位老兄的參與 ,返回我知道用那些指令,但是我們這里是討論實時控制,我想老兄你仔細分析第一貼就明白樓主的想要解決 的問題了
0
回復
njyd
LV.8
14
2008-04-24 22:24
@yxdz
謝謝這位老兄的參與,返回我知道用那些指令,但是我們這里是討論實時控制,我想老兄你仔細分析第一貼就明白樓主的想要解決的問題了
你圖中說的是用轉移指令,返回原地當然困難.

  用CALL指令調用子程序,如果無鍵就用RET返回,如果有鍵就先做兩個空出棧動作:
   POP    ACC
     POP    ACC
以去掉堆棧中的返回地址(這個很重要,否則堆棧會越來越大),再用轉移指令jmp轉到你要去的功能N.
0
回復
yxdz
LV.7
15
2008-04-26 19:52
@njyd
你圖中說的是用轉移指令,返回原地當然困難.  用CALL指令調用子程序,如果無鍵就用RET返回,如果有鍵就先做兩個空出棧動作:  POP    ACC    POP    ACC以去掉堆棧中的返回地址(這個很重要,否則堆棧會越來越大),再用轉移指令jmp轉到你要去的功能N.
謝謝老兄的指點,我去練習看看  
             謝謝
0
回復
yxdz
LV.7
16
2008-04-27 20:39
@yxdz
謝謝老兄的指點,我去練習看看              謝謝
哦,又麻煩各位老兄幫我看看.程序是這樣工作的,如果不要按下按鈕每個功能都是重復幾下就自動轉到下一個功能去,但是按下按鈕后就暫停了. 我的源程序是這樣的如下 ,麻煩各位老兄幫我看我哪里不對了呢, 謝謝

                   ORG         0000H  
                AJMP        AAQQ
                ORG         0030H            
AAQQ:           MOV    R1,#1
                JMP    MAINAA
    
ANA:             MOV   P3,#0FFH  ;按鍵掃描子程序
                 MOV   A,#0FFH
                 MOV   P3,A
         MOV   A,P3
CJNE  A,#0FFH,AWW
                 jmp     A7
AWW:             ACALL       DEL10MS
                 CJNE   A,#0FFH,AW
JMP     A7
                
AW:              POP   ACC
                 POP   ACC
                 INC   R1
A1:              CJNE  R1,#2,A3
                
                 LJMP   MAIN2       ;轉功能2
A3:              CJNE  R2,#3,A4
                 LJMP   MAIN3       ;轉功能3
A4:              CJNE  R2,#4,A5
                 LJMP   DISA        ;轉功能4
A5:              CJNE  R2,#5,A6
            
                 LJMP    DIS11      ; 轉功能5
A6:              CJNE  R2,#6,A7
                 MOV   R1,#1
                
                 LJMP    DIS1        ;轉功能6
A7:              RET                
    
MAINAA:              MOV   R0,#0    
        
                                
MAINA:           MOV         P1,#7FH  ;功能一(漲潮退潮)
                ACALL       DEL
                call        ana
                MOV         P1,#3FH
              
                ACALL       DEL
                MOV         P1,#1FH
              
                ACALL       DEL
                call        ana
                MOV         P1,#0FH
                
                ACALL       DEL
                MOV         P1,#7H
              
                ACALL       DEL
                call        ana
                MOV         P1,#3H
            
                ACALL       DEL
                MOV         P1,#1H
              
                ACALL       DEL
                call        ana
                MOV         P1,#00H
              
                ACALL       DEL
                                                                                    MOV         P0,#0FEH
              
                ACALL       DEL
                call        ana
                
                MOV         P0,#0FCH
              
                ACALL       DEL
              
                MOV         P0,#0F8H
              
                ACALL       DEL
                call        ana
              
                MOV         P0,#0F0H
              
                ACALL       DEL
              
                MOV         P0,#0E0H
                
                ACALL       DEL
                call        ana
              
                MOV         P0,#0C0H
              
                ACALL       DEL
              
                MOV         P0,#80H
              
                ACALL       DEL
                call        ana
                
                MOV         P0,#00H
              
                ACALL       DEL
                                         
                MOV         P2,#7FH
              
                ACALL       DEL
                
               call        ana
                MOV         P2,#3FH
                
                ACALL       DEL
              
                MOV         P2,#1FH
                
                ACALL       DEL
                call        ana
              
                MOV         P2,#0FH
                
                ACALL       DEL
              
                MOV         P2,#7H
              
                ACALL       DEL
                call        ana
                
                MOV         P2,#3H
              
                ACALL       DEL
              
                MOV         P2,#1H
              
                ACALL       DEL
                call        ana
              
                MOV         P2,#00H
                
                ACALL       DEL;                    
              
                ACALL       DEL
                call        ana
                            
                MOV         P2,#01H
                
                ACALL       DEL
              
                MOV         P2,#3H
              
                ACALL       DEL
                call        ana
                
                MOV         P2,#7H
              
                ACALL       DEL
                
                MOV         P2,#0FH
              
                ACALL       DEL
                call        ana
                
                MOV         P2,#1FH
                
                ACALL       DEL
                
                MOV         P2,#3FH
                
                ACALL       DEL
                call        ana
                
                MOV         P2,#7FH
                
                ACALL       DEL
                
                MOV         P2,#0FFH
              
                ACALL       DEL
                call        ana
                                
              
                ACALL       DEL
              
                MOV         P0,#80H
                
                ACALL       DEL
                
                call        ana
                MOV         P0,#0C0H
                
                ACALL       DEL
              
                MOV         P0,#0E0H
                
                ACALL       DEL
                call        ana
            
                MOV         P0,#0F0H
              
                ACALL       DEL
              
                MOV         P0,#0F8H
                
                ACALL       DEL
                call        ana
              
                MOV         P0,#0FCH
                
                ACALL       DEL
                
                MOV         P0,#0FEH
              
                ACALL       DEL
                call        ana
              
              
                MOV         P0,#0FFH
                ACALL       DEL;        
                MOV         P1,#00H
              
                ACALL       DEL
                call        ana
                MOV         P1,#1H
              
                ACALL       DEL
                MOV         P1,#3H
              
                ACALL       DEL
                call        ana
                MOV         P1,#7H
                
                ACALL       DEL
                MOV         P1,#0FH
                
                ACALL       DEL
                call        ana
                MOV         P1,#1FH
                
                ACALL       DEL
                MOV         P1,#3FH
              
                ACALL       DEL
                call        ana
                MOV         P1,#7FH
                MOV         P2,#0FFH
                
                MOV         P0,#0FFH
             ACALL       DEL
                MOV         P1,#0FFH
        MOV         P2,#0FFH
            
        MOV         P0,#0FFH
                ACALL       DELA
INC      R0
call     ANA

CJNE        R1,#2,Q1
AJMP        MAINA
Q1:             CJNE        R0,#6,QQ
JMP       MAIN22
QQ:            AJMP   MAINA                

MAIN22:        MOV         R0,#0   ;第二功能(同時亮滅)
MAIN2:         MOV         P1,#00H   MOV         P2,#00H

MOV         P0,#00H
ACALL       DELA
                Lcall        ana
MOV         P1,#0FFH
MOV         P2,#0FFH

MOV         P0,#0FFH
ACALL       DELA
                Lcall        ana
              
                INC         R0
  
                CJNE        R1,#3,Q2
                JMP        MAIN2
Q2:         CJNE        R0,#26,MAIN2
            

              
                MOV         R0,#0
MAIN3: MOV         P1,#00H  ;第三功能(交替亮滅)
MOV         P2,#00H

MOV         P0,#0FFH
ACALL       DELAA

                call        ana                  


        MOV         P0,#00H
                MOV         P1,#0FFH
MOV         P2,#0FFH
ACALL       DELAA
                

                CALL       ANA
  
                CJNE       R1,#4,Q3
                JMP       MAIN3
Q3:             CJNE        R0,#16,MAIN3
              
                            
MOV         R0,#0
              
MOV         P1,#0FFH
MOV         P2,#0FFH

MOV         P0,#0FFH
                ACALL       DELA
                Lcall        ana

DISA:       MOV       P1,#6DH     ;第四功能(隔燈追逐)
          
            MOV       P2,#0DBH
            MOV       P0,#0B6H
            ACALL     DEL
            Lcall        ana
            MOV       P1,#0B6H
          
            MOV       P2,#06DH
            MOV       P0,#06DH
            ACALL     DEL
           Lcall        ana
            MOV       P1,#0DBH
          
            MOV       P2,#0B6H
            MOV       P0,#0DBH
            
    ACALL     DELA
    Lcall        ana
    MOV       P1,#0FFH
    MOV       P2,#0FFH

    INC       R0
            call        ana
            CJNE     R1,#5,Q4
            LJMP     DISA


Q4: CJNE      R0,#15,DISA
NOP

MOV       P1,#0FFH
MOV       P2,#0FFH

MOV       P0,#0FFH
                                MOV       R0,#0
DIS11:       MOV       P1,#0FEH;  第五功能(單燈繞圈----慢)
            ACALL     DEL
            MOV       P1,#0FDH
            ACALL     DEL
            Lcall        ana
            MOV       P1,#0FBH
            ACALL     DEL
            MOV       P1,#0F7H
            ACALL     DEL
            Lcall        ana
            MOV       P1,#0EFH
            ACALL     DEL
            MOV       P1,#0DFH
            ACALL     DEL
    Lcall        ana
            MOV       P1,#0BFH
            ACALL     DEL
            MOV       P1,#7FH
            ACALL     DEL
    Lcall        ana
    MOV       P1,#0FFH

DIS21:      
            MOV       P2,#0FEH
            ACALL     DEL
            MOV       P2,#0FDH
            ACALL     DEL
            Lcall        ana
            MOV       P2,#0FBH
            ACALL     DEL
            MOV       P2,#0F7H
            ACALL     DEL
Lcall        ana
            MOV       P2,#0EFH
            ACALL     DEL
            MOV       P2,#0DFH
            ACALL     DEL
Lcall        ana
            MOV       P2,#0BFH
            ACALL     DEL
            MOV       P2,#7FH
            ACALL     DEL
Lcall        ana
DIS01:       MOV       P2,#0FFH
            MOV       P0,#7FH
            ACALL     DEL
            MOV       P0,#0BFH
            ACALL     DEL
Lcall        ana
            MOV       P0,#0DFH
            ACALL     DEL
            MOV       P0,#0EFH
            ACALL     DEL
Lcall        ana
            MOV       P0,#0F7H
            ACALL     DEL
            MOV       P0,#0FBH
            ACALL     DEL
Lcall        ana
            MOV       P0,#0FDH
            ACALL     DEL
            MOV       P0,#0FEH
            ACALL     DEL
Lcall        ana
            MOV       P0,#0FFH
ACALL     DELA
INC       R0
Lcall        ana
CJNE      R1,#6,QQQ
QA: AJMP      DIS11
QQQ: CJNE      R0,#12,QA



            MOV       R0,#0
DIS1:       MOV       P1,#0FEH;   第六功能(單燈繞圈----快)
            ACALL     DELQ
            MOV       P1,#0FDH
            ACALL     DELQ

call        ana
            MOV       P1,#0FBH
            ACALL     DELQ
            MOV       P1,#0F7H
            ACALL     DELQ
call        ana
            MOV       P1,#0EFH
            ACALL     DELQ
            MOV       P1,#0DFH
            ACALL     DELQ
call        ana
            MOV       P1,#0BFH
            ACALL     DELQ
            MOV       P1,#7FH
            ACALL     DELQ
call        ana

DIS2:       MOV       P1,#0FFH
            MOV       P2,#0FEH
            ACALL     DELQ
call        ana
            MOV       P2,#0FDH
            ACALL     DELQ
            MOV       P2,#0FBH
            ACALL     DELQ
call        ana
            MOV       P2,#0F7H
            ACALL     DELQ
            MOV       P2,#0EFH
            ACALL     DELQ
call        ana
            MOV       P2,#0DFH
            ACALL     DELQ
            MOV       P2,#0BFH
            ACALL     DELQ
call        ana
            MOV       P2,#7FH
            ACALL     DELQ
call        ana
DIS0:       MOV       P2,#0FFH
            MOV       P0,#7FH
            ACALL     DELQ
            MOV       P0,#0BFH
            ACALL     DELQ
call        ana
            MOV       P0,#0DFH
            ACALL     DELQ
            MOV       P0,#0EFH
            ACALL     DELQ
call        ana
            MOV       P0,#0F7H
            ACALL     DELQ
            MOV       P0,#0FBH
            ACALL     DELQ
call        ana
            MOV       P0,#0FDH
            ACALL     DELQ
            MOV       P0,#0FEH
            ACALL     DELQ
call        ana
            MOV       P0,#0FFH
ACALL     DELA
INC       R0
call        ana
CJNE      R1,#7,QQQQQ

GD:             JMP      DIS1
            
QQQQQ:    CJNE      R0,#15,GD


             AJMP           MAINAA


DELA:           MOV         R7,#01H    ;以下是延時子程序
DELA1:          MOV         R6,#0AFH
DELA2:          MOV         R5,#0FFH
DELA3:          DJNZ        R5,DELA3
                DJNZ        R6,DELA2
             DJNZ        R7,DELA1
                
             RET
DEL:            MOV         R7,#01H
DEL1:           MOV         R6,#0AFH
DEL2:           MOV         R5,#0FFH
DEL3:           DJNZ        R5,DEL3
                DJNZ        R6,DEL2
                DJNZ        R7,DEL1
                RET            
DELAA:           MOV         R7,#02H
DELAA1:          MOV         R6,#0AFH
DELAA2:          MOV         R5,#0FFH
DELAA3:          DJNZ        R5,DELAA3
                DJNZ        R6,DELAA2
             DJNZ        R7,DELAA1
                INC         R0
             RET
DELAAA:           MOV         R7,#2FH
DELAA1A:          MOV         R6,#0FFH
DELAA2A:          MOV         R5,#0FFH
DELAA3A:          DJNZ        R5,DELAA3A
                DJNZ        R6,DELAA2A
             DJNZ        R7,DELAA1A
                INC         R0
             RET
DELQ:            MOV         R7,#01H
DEL1Q:           MOV         R6,#1FH
DEL2Q:           MOV         R5,#9FH
DEL3Q:           DJNZ        R5,DEL3Q
                DJNZ        R6,DEL2Q
                DJNZ        R7,DEL1Q
               RET
DEL10MS:        MOV         R7,#0FFH
DEL11:           MOV         R6,#0FFH
DEL22:           DJNZ         R6,DEL22

                DJNZ        R7,DEL10MS
              
                RET  

               END
0
回復
yt2005
LV.2
17
2008-04-28 16:44
@yxdz
哦,又麻煩各位老兄幫我看看.程序是這樣工作的,如果不要按下按鈕每個功能都是重復幾下就自動轉到下一個功能去,但是按下按鈕后就暫停了.我的源程序是這樣的如下,麻煩各位老兄幫我看我哪里不對了呢,謝謝                  ORG        0000H                  AJMP        AAQQ                ORG        0030H            AAQQ:          MOV    R1,#1                JMP    MAINAA    ANA:            MOV  P3,#0FFH  ;按鍵掃描子程序                MOV  A,#0FFH                MOV  P3,A        MOV  A,P3CJNE  A,#0FFH,AWW                jmp    A7AWW:            ACALL      DEL10MS                CJNE  A,#0FFH,AWJMP    A7                AW:              POP  ACC                POP  ACC                INC  R1A1:              CJNE  R1,#2,A3                                LJMP  MAIN2      ;轉功能2A3:              CJNE  R2,#3,A4                LJMP  MAIN3      ;轉功能3A4:              CJNE  R2,#4,A5                LJMP  DISA        ;轉功能4A5:              CJNE  R2,#5,A6                            LJMP    DIS11      ;轉功能5A6:              CJNE  R2,#6,A7                MOV  R1,#1                                LJMP    DIS1        ;轉功能6A7:              RET                    MAINAA:              MOV  R0,#0                                            MAINA:          MOV        P1,#7FH  ;功能一(漲潮退潮)                ACALL      DEL                call        ana                MOV        P1,#3FH                              ACALL      DEL                MOV        P1,#1FH                              ACALL      DEL                call        ana                MOV        P1,#0FH                                ACALL      DEL                MOV        P1,#7H                              ACALL      DEL                call        ana                MOV        P1,#3H                            ACALL      DEL                MOV        P1,#1H                              ACALL      DEL                call        ana                MOV        P1,#00H                              ACALL      DEL                                                                                    MOV        P0,#0FEH                              ACALL      DEL                call        ana                                MOV        P0,#0FCH                              ACALL      DEL                              MOV        P0,#0F8H                              ACALL      DEL                call        ana                              MOV        P0,#0F0H                              ACALL      DEL                              MOV        P0,#0E0H                                ACALL      DEL                call        ana                              MOV        P0,#0C0H                              ACALL      DEL                              MOV        P0,#80H                              ACALL      DEL                call        ana                                MOV        P0,#00H                              ACALL      DEL                                                        MOV        P2,#7FH                              ACALL      DEL                              call        ana                MOV        P2,#3FH                                ACALL      DEL                              MOV        P2,#1FH                                ACALL      DEL                call        ana                              MOV        P2,#0FH                                ACALL      DEL                              MOV        P2,#7H                              ACALL      DEL                call        ana                                MOV        P2,#3H                              ACALL      DEL                              MOV        P2,#1H                              ACALL      DEL                call        ana                              MOV        P2,#00H                                ACALL      DEL;                                                  ACALL      DEL                call        ana                                            MOV        P2,#01H                                ACALL      DEL                              MOV        P2,#3H                              ACALL      DEL                call        ana                                MOV        P2,#7H                              ACALL      DEL                                MOV        P2,#0FH                              ACALL      DEL                call        ana                                MOV        P2,#1FH                                ACALL      DEL                                MOV        P2,#3FH                                ACALL      DEL                call        ana                                MOV        P2,#7FH                                ACALL      DEL                                MOV        P2,#0FFH                              ACALL      DEL                call        ana                                                              ACALL      DEL                              MOV        P0,#80H                                ACALL      DEL                                call        ana                MOV        P0,#0C0H                                ACALL      DEL                              MOV        P0,#0E0H                                ACALL      DEL                call        ana                            MOV        P0,#0F0H                              ACALL      DEL                              MOV        P0,#0F8H                                ACALL      DEL                call        ana                              MOV        P0,#0FCH                                ACALL      DEL                                MOV        P0,#0FEH                              ACALL      DEL                call        ana                                            MOV        P0,#0FFH                ACALL      DEL;                        MOV        P1,#00H                              ACALL      DEL                call        ana                MOV        P1,#1H                              ACALL      DEL                MOV        P1,#3H                              ACALL      DEL                call        ana                MOV        P1,#7H                                ACALL      DEL                MOV        P1,#0FH                                ACALL      DEL                call        ana                MOV        P1,#1FH                                ACALL      DEL                MOV        P1,#3FH                              ACALL      DEL                call        ana                MOV        P1,#7FH                MOV        P2,#0FFH                                MOV        P0,#0FFH            ACALL      DEL                MOV        P1,#0FFH        MOV        P2,#0FFH                    MOV        P0,#0FFH                ACALL      DELAINC      R0call    ANACJNE        R1,#2,Q1AJMP        MAINAQ1:            CJNE        R0,#6,QQJMP      MAIN22QQ:            AJMP  MAINA                MAIN22:        MOV        R0,#0  ;第二功能(同時亮滅)MAIN2:        MOV        P1,#00H  MOV        P2,#00HMOV        P0,#00HACALL      DELA                Lcall        anaMOV        P1,#0FFHMOV        P2,#0FFHMOV        P0,#0FFHACALL      DELA                Lcall        ana                              INC        R0                  CJNE        R1,#3,Q2                JMP        MAIN2Q2:        CJNE        R0,#26,MAIN2                                          MOV        R0,#0MAIN3:MOV        P1,#00H  ;第三功能(交替亮滅)MOV        P2,#00HMOV        P0,#0FFHACALL      DELAA                call        ana                          MOV        P0,#00H                MOV        P1,#0FFHMOV        P2,#0FFHACALL      DELAA                                CALL      ANA                  CJNE      R1,#4,Q3                JMP      MAIN3Q3:            CJNE        R0,#16,MAIN3                                          MOV        R0,#0              MOV        P1,#0FFHMOV        P2,#0FFHMOV        P0,#0FFH                ACALL      DELA                Lcall        anaDISA:      MOV      P1,#6DH    ;第四功能(隔燈追逐)                      MOV      P2,#0DBH            MOV      P0,#0B6H            ACALL    DEL            Lcall        ana            MOV      P1,#0B6H                      MOV      P2,#06DH            MOV      P0,#06DH            ACALL    DEL          Lcall        ana            MOV      P1,#0DBH                      MOV      P2,#0B6H            MOV      P0,#0DBH                ACALL    DELA    Lcall        ana    MOV      P1,#0FFH    MOV      P2,#0FFH    INC      R0            call        ana            CJNE    R1,#5,Q4            LJMP    DISAQ4:CJNE      R0,#15,DISANOPMOV      P1,#0FFHMOV      P2,#0FFHMOV      P0,#0FFH                                MOV      R0,#0DIS11:      MOV      P1,#0FEH;  第五功能(單燈繞圈----慢)            ACALL    DEL            MOV      P1,#0FDH            ACALL    DEL            Lcall        ana            MOV      P1,#0FBH            ACALL    DEL            MOV      P1,#0F7H            ACALL    DEL            Lcall        ana            MOV      P1,#0EFH            ACALL    DEL            MOV      P1,#0DFH            ACALL    DEL    Lcall        ana            MOV      P1,#0BFH            ACALL    DEL            MOV      P1,#7FH            ACALL    DEL    Lcall        ana    MOV      P1,#0FFHDIS21:                  MOV      P2,#0FEH            ACALL    DEL            MOV      P2,#0FDH            ACALL    DEL            Lcall        ana            MOV      P2,#0FBH            ACALL    DEL            MOV      P2,#0F7H            ACALL    DELLcall        ana            MOV      P2,#0EFH            ACALL    DEL            MOV      P2,#0DFH            ACALL    DELLcall        ana            MOV      P2,#0BFH            ACALL    DEL            MOV      P2,#7FH            ACALL    DELLcall        anaDIS01:      MOV      P2,#0FFH            MOV      P0,#7FH            ACALL    DEL            MOV      P0,#0BFH            ACALL    DELLcall        ana            MOV      P0,#0DFH            ACALL    DEL            MOV      P0,#0EFH            ACALL    DELLcall        ana            MOV      P0,#0F7H            ACALL    DEL            MOV      P0,#0FBH            ACALL    DELLcall        ana            MOV      P0,#0FDH            ACALL    DEL            MOV      P0,#0FEH            ACALL    DELLcall        ana            MOV      P0,#0FFHACALL    DELAINC      R0Lcall        anaCJNE      R1,#6,QQQQA:AJMP      DIS11QQQ:CJNE      R0,#12,QA            MOV      R0,#0DIS1:      MOV      P1,#0FEH;  第六功能(單燈繞圈----快)            ACALL    DELQ            MOV      P1,#0FDH            ACALL    DELQcall        ana            MOV      P1,#0FBH            ACALL    DELQ            MOV      P1,#0F7H            ACALL    DELQcall        ana            MOV      P1,#0EFH            ACALL    DELQ            MOV      P1,#0DFH            ACALL    DELQcall        ana            MOV      P1,#0BFH            ACALL    DELQ            MOV      P1,#7FH            ACALL    DELQcall        anaDIS2:      MOV      P1,#0FFH            MOV      P2,#0FEH            ACALL    DELQcall        ana            MOV      P2,#0FDH            ACALL    DELQ            MOV      P2,#0FBH            ACALL    DELQcall        ana            MOV      P2,#0F7H            ACALL    DELQ            MOV      P2,#0EFH            ACALL    DELQcall        ana            MOV      P2,#0DFH            ACALL    DELQ            MOV      P2,#0BFH            ACALL    DELQcall        ana            MOV      P2,#7FH            ACALL    DELQcall        anaDIS0:      MOV      P2,#0FFH            MOV      P0,#7FH            ACALL    DELQ            MOV      P0,#0BFH            ACALL    DELQcall        ana            MOV      P0,#0DFH            ACALL    DELQ            MOV      P0,#0EFH            ACALL    DELQcall        ana            MOV      P0,#0F7H            ACALL    DELQ            MOV      P0,#0FBH            ACALL    DELQcall        ana            MOV      P0,#0FDH            ACALL    DELQ            MOV      P0,#0FEH            ACALL    DELQcall        ana            MOV      P0,#0FFHACALL    DELAINC      R0call        anaCJNE      R1,#7,QQQQQGD:            JMP      DIS1            QQQQQ:  CJNE      R0,#15,GD            AJMP          MAINAADELA:          MOV        R7,#01H    ;以下是延時子程序DELA1:          MOV        R6,#0AFHDELA2:          MOV        R5,#0FFHDELA3:          DJNZ        R5,DELA3                DJNZ        R6,DELA2            DJNZ        R7,DELA1                            RETDEL:            MOV        R7,#01HDEL1:          MOV        R6,#0AFHDEL2:          MOV        R5,#0FFHDEL3:          DJNZ        R5,DEL3                DJNZ        R6,DEL2                DJNZ        R7,DEL1                RET            DELAA:          MOV        R7,#02HDELAA1:          MOV        R6,#0AFHDELAA2:          MOV        R5,#0FFHDELAA3:          DJNZ        R5,DELAA3                DJNZ        R6,DELAA2            DJNZ        R7,DELAA1                INC        R0            RETDELAAA:          MOV        R7,#2FHDELAA1A:          MOV        R6,#0FFHDELAA2A:          MOV        R5,#0FFHDELAA3A:          DJNZ        R5,DELAA3A                DJNZ        R6,DELAA2A            DJNZ        R7,DELAA1A                INC        R0            RETDELQ:            MOV        R7,#01HDEL1Q:          MOV        R6,#1FHDEL2Q:          MOV        R5,#9FHDEL3Q:          DJNZ        R5,DEL3Q                DJNZ        R6,DEL2Q                DJNZ        R7,DEL1Q              RETDEL10MS:        MOV        R7,#0FFHDEL11:          MOV        R6,#0FFHDEL22:          DJNZ        R6,DEL22                DJNZ        R7,DEL10MS                              RET                END
你的程序執行一次最少幾十秒鐘,這樣寫程序實在是太糟糕了,實時性太差.當然不能及時響應你的按鍵動作.寫程序時要牢記不要有死循環,不要在主程序中用延時程序,你犯了這個錯誤.即使你用中斷,也不會及時響應,因為中斷過后主程序還要執行你的延時程序.鍵盤掃描本來就才20MS作為單位時間,你想到延時程序結束時,動作早結束了.所以好的程序,延時要用中斷,中斷中用標志位,當時間到了再作相應操作,而不在那里死等,浪費時間.最后提醒你一點,程序中多用標志位,變量名等要用易懂的具有實際意義的符號來代替,而不是AA,QQ等,養成良好習慣,你會事半功倍.希望我說的能給你幫助.
0
回復
yxdz
LV.7
18
2008-04-29 07:05
@yt2005
你的程序執行一次最少幾十秒鐘,這樣寫程序實在是太糟糕了,實時性太差.當然不能及時響應你的按鍵動作.寫程序時要牢記不要有死循環,不要在主程序中用延時程序,你犯了這個錯誤.即使你用中斷,也不會及時響應,因為中斷過后主程序還要執行你的延時程序.鍵盤掃描本來就才20MS作為單位時間,你想到延時程序結束時,動作早結束了.所以好的程序,延時要用中斷,中斷中用標志位,當時間到了再作相應操作,而不在那里死等,浪費時間.最后提醒你一點,程序中多用標志位,變量名等要用易懂的具有實際意義的符號來代替,而不是AA,QQ等,養成良好習慣,你會事半功倍.希望我說的能給你幫助.
哦,謝謝老兄的指點,我今后重新規劃程序.  我現在不明白的是,我16貼的源程序如果不按按鍵能工作正常,(每個功能重復工作規定的次數后自動轉到下一個功能去)   ,但是按下按鍵后  ,會轉到下一功能但是立即暫停了.
0
回復
yt2005
LV.2
19
2008-04-29 08:59
@yxdz
哦,謝謝老兄的指點,我今后重新規劃程序.  我現在不明白的是,我16貼的源程序如果不按按鍵能工作正常,(每個功能重復工作規定的次數后自動轉到下一個功能去)  ,但是按下按鍵后  ,會轉到下一功能但是立即暫停了.
你的程序中調ANA這個子程序,如果按鍵,沒有返回(沒按鍵會返回),然后去執行主程序,主程序又調ANA這個子程序,堆棧中的指針沒有恢復.你這樣做就會等同于程序在程序中調自己本身,這樣會造成堆棧中的程序指針錯亂,當然會暫停了,因為程序不知道怎么執行了.
切記,一個程序,只有一個出口,不要跳來跳去的,養成良好習慣,不然你的程序學習之路會很漫長.
0
回復
yxdz
LV.7
20
2008-04-29 13:07
@yt2005
你的程序中調ANA這個子程序,如果按鍵,沒有返回(沒按鍵會返回),然后去執行主程序,主程序又調ANA這個子程序,堆棧中的指針沒有恢復.你這樣做就會等同于程序在程序中調自己本身,這樣會造成堆棧中的程序指針錯亂,當然會暫停了,因為程序不知道怎么執行了.切記,一個程序,只有一個出口,不要跳來跳去的,養成良好習慣,不然你的程序學習之路會很漫長.
哦,十分感謝!!    那我重新編寫
0
回復
2008-08-07 16:34
@yxdz
哦,十分感謝!!    那我重新編寫
你最后面成功了沒有,將原程序發上來學習一下嘛,我剛學單片機的,做LED行業,相信你現在比我強.呵呵!
0
回復
yxdz
LV.7
22
2008-08-07 19:58
@獨孤飛雪
你最后面成功了沒有,將原程序發上來學習一下嘛,我剛學單片機的,做LED行業,相信你現在比我強.呵呵!
哦,我還沒有啊,由于手頭又忙于其他的項目,單片機一直還沒有繼續練習下去,我想等忙完手頭的案子再繼續練習下去

            謝謝各位的關心
0
回復
yxdz
LV.7
23
2008-08-16 20:29
@yxdz
哦,我還沒有啊,由于手頭又忙于其他的項目,單片機一直還沒有繼續練習下去,我想等忙完手頭的案子再繼續練習下去            謝謝各位的關心
現在又回來了,還是編不出來啊,有哪位大俠能指點 指點嗎
0
回復
2008-08-22 14:11
@zj47988302
如果你想實時控制,可以用定時中斷去掃描按鍵.
同意樓上的看法!
0
回復
njyd
LV.8
25
2008-09-25 21:34
不用定時器的程序框架:

設置一個變量,根據這變量的數跳到“跳法n”


START:
   根據變量的值跳轉到"跳法1”--“跳法n”的分支程序.

跳法1

JMP START
;;;;;;;;;;;;;;;;;;;
跳法2

JMP START
;;;;;;;;;;;;;;;;;;;

跳法3
JMP START
;;;;;;;;;;;;;;;;;;;

跳法N

JMP START
;;;;;;;;;;;;;;;;;;;;;
  
     因為你的各種跳法中肯定要用到延時程序,可以在延時循環程序的最里圈加一小段判別鍵和處理程序,這樣在大部分情況下響應鍵很快.
    假設你的鍵信號在p1.0, 低電平為有鍵;內部RAM 2FH為選擇"跳法N”的變量(當然也可以選其他地址);另設一個位地址 00H作為有鍵跳出標志.設有N個跳法,在程序初始時要把內部RAM 2FH設為0,位地址 00H為CLR.

;延時循環
DELAY:  MOV R5,#xxH     ;最外圈循環數
DELP1:  MOV R4,#YYH     ;中圈循環數
DELP2:  MOV R3,#ZZH     ;最內圈循環數
DELP3:  JB P1.0,DELP4   ;無鍵按下,繼續循環
        INC 2FH         ;選擇"跳法N”的變量加1,轉回START時依此選擇什么跳法.
    ......  ;如果2FH=N,則清為#00H
    SETB 00H
        JMP DELEND      ;退出循環.  
DELP4:  DJNZ R3,DELP3
        DJNZ R4,DELP2
        DJNZ R5,DELP1
DELEND: RET

    位地址 00H作為有鍵跳出標志的作用是,在每個調用延時循環程序后,加一段判別是否有鍵退出,如果是,則直接轉START  .
    如果在2FH加1后直接跳到START ,多次后堆棧將會溢出,為什么自己想一想.

       CALL  DELAY
       JNB  00H,AAAA
       CLR 00H         ;清標志,以免下次誤轉
       LJMP  START     ;用此較法,可以轉的較遠,如果直接用JB 00H,START 多數情況下轉不到那么遠
AAAA:  無鍵時正常往下運行
0
回復
2008-09-26 00:03
@njyd
不用定時器的程序框架:設置一個變量,根據這變量的數跳到“跳法n”START:  根據變量的值跳轉到"跳法1”--“跳法n”的分支程序.跳法1JMPSTART;;;;;;;;;;;;;;;;;;;跳法2JMPSTART;;;;;;;;;;;;;;;;;;;跳法3JMPSTART;;;;;;;;;;;;;;;;;;;跳法NJMPSTART;;;;;;;;;;;;;;;;;;;;;      因為你的各種跳法中肯定要用到延時程序,可以在延時循環程序的最里圈加一小段判別鍵和處理程序,這樣在大部分情況下響應鍵很快.    假設你的鍵信號在p1.0,低電平為有鍵;內部RAM2FH為選擇"跳法N”的變量(當然也可以選其他地址);另設一個位地址00H作為有鍵跳出標志.設有N個跳法,在程序初始時要把內部RAM2FH設為0,位地址00H為CLR.;延時循環DELAY:  MOVR5,#xxH    ;最外圈循環數DELP1:  MOVR4,#YYH    ;中圈循環數DELP2:  MOVR3,#ZZH    ;最內圈循環數DELP3:  JBP1.0,DELP4  ;無鍵按下,繼續循環        INC2FH        ;選擇"跳法N”的變量加1,轉回START時依此選擇什么跳法.    ......  ;如果2FH=N,則清為#00H    SETB00H        JMPDELEND      ;退出循環.  DELP4:  DJNZR3,DELP3        DJNZR4,DELP2        DJNZR5,DELP1DELEND:RET    位地址00H作為有鍵跳出標志的作用是,在每個調用延時循環程序后,加一段判別是否有鍵退出,如果是,則直接轉START  .    如果在2FH加1后直接跳到START,多次后堆棧將會溢出,為什么自己想一想.      CALL  DELAY      JNB  00H,AAAA      CLR00H        ;清標志,以免下次誤轉      LJMP  START    ;用此較法,可以轉的較遠,如果直接用JB00H,START多數情況下轉不到那么遠AAAA:  無鍵時正常往下運行
這個程序應該不難!你的這種寫法不錯,不過我覺的按鍵程序最好寫在定時器的中斷程序里比較好一些,這樣效率高些,主程序里只對鍵值進行判斷,然后進散轉執相應的程序就可以了!按鍵的處理可以做成每按下一次鍵值加1,這樣循環下去!
0
回復
yxdz
LV.7
27
2008-09-26 16:31
@njyd
不用定時器的程序框架:設置一個變量,根據這變量的數跳到“跳法n”START:  根據變量的值跳轉到"跳法1”--“跳法n”的分支程序.跳法1JMPSTART;;;;;;;;;;;;;;;;;;;跳法2JMPSTART;;;;;;;;;;;;;;;;;;;跳法3JMPSTART;;;;;;;;;;;;;;;;;;;跳法NJMPSTART;;;;;;;;;;;;;;;;;;;;;      因為你的各種跳法中肯定要用到延時程序,可以在延時循環程序的最里圈加一小段判別鍵和處理程序,這樣在大部分情況下響應鍵很快.    假設你的鍵信號在p1.0,低電平為有鍵;內部RAM2FH為選擇"跳法N”的變量(當然也可以選其他地址);另設一個位地址00H作為有鍵跳出標志.設有N個跳法,在程序初始時要把內部RAM2FH設為0,位地址00H為CLR.;延時循環DELAY:  MOVR5,#xxH    ;最外圈循環數DELP1:  MOVR4,#YYH    ;中圈循環數DELP2:  MOVR3,#ZZH    ;最內圈循環數DELP3:  JBP1.0,DELP4  ;無鍵按下,繼續循環        INC2FH        ;選擇"跳法N”的變量加1,轉回START時依此選擇什么跳法.    ......  ;如果2FH=N,則清為#00H    SETB00H        JMPDELEND      ;退出循環.  DELP4:  DJNZR3,DELP3        DJNZR4,DELP2        DJNZR5,DELP1DELEND:RET    位地址00H作為有鍵跳出標志的作用是,在每個調用延時循環程序后,加一段判別是否有鍵退出,如果是,則直接轉START  .    如果在2FH加1后直接跳到START,多次后堆棧將會溢出,為什么自己想一想.      CALL  DELAY      JNB  00H,AAAA      CLR00H        ;清標志,以免下次誤轉      LJMP  START    ;用此較法,可以轉的較遠,如果直接用JB00H,START多數情況下轉不到那么遠AAAA:  無鍵時正常往下運行
謝謝這位老兄詳細的解釋!!!!!    也許是我基礎和理解能力太差,我還是很模糊,我再按照你的方法再去練習.  

                                     謝謝了!!!!
0
回復
yxdz
LV.7
28
2008-09-26 16:34
@yxdz
謝謝這位老兄詳細的解釋!!!!!    也許是我基礎和理解能力太差,我還是很模糊,我再按照你的方法再去練習.                                      謝謝了!!!!
首先njyd謝謝這位老兄詳細的解釋!!!!!    也許是我基礎和理解能力太差,我看還是很模糊,我得先再按照你的方法再去練習.  

                                     謝謝了!!!!
0
回復
zl_123
LV.1
29
2008-09-30 06:44
@yxdz
首先njyd謝謝這位老兄詳細的解釋!!!!!    也許是我基礎和理解能力太差,我看還是很模糊,我得先再按照你的方法再去練習.                                      謝謝了!!!!
兄弟,建議你用C來寫,并且我認為你要學會熟練使用定時器和狀態機,不要再用軟件延時了,我也是從你這樣的時候走過來的,非常理解你的感受.
0
回復
stiven_01
LV.3
30
2008-10-09 11:54
@zl_123
兄弟,建議你用C來寫,并且我認為你要學會熟練使用定時器和狀態機,不要再用軟件延時了,我也是從你這樣的時候走過來的,非常理解你的感受.
汗.很麻煩啊.

用這個標準觸摸感應IC吧.

還不錯. 1556011223524453.pdf
0
回復
主站蜘蛛池模板: 久久有精品 | 奇米777四色成人影视 | 亚洲图片小说在线 | 久久国产精品亚洲 | 在线观看免费视频一区 | 亚洲日本精品一区 | 免费国产黄线在线播放 | 性色av一区二区怡红 | 亚洲麻豆av肉丝网站一区二区 | 中文字幕中文字幕在线中文字幕三区 | 99视频播放 | 91插插插插插插插 | 视频分类国内精品 | 牲高潮99爽久久久久777 | 国产传媒免费 | 在线视频1区 | www.av视频在线观看 | A级国产乱理论片在线观看 亚洲激情第一页 | 亚洲国产精品无码一区二区三区 | 亚洲乱码一区二区三区四区 | 扒开双腿吃奶呻吟做受 | 国产欧美视频一区二区三区 | 美男被强行糟蹋np各种play | 日韩精品123区 | 日本不卡免费高清视频在线 | 午夜影院一区二区 | 综合久久网 | 四虎看片| 91天仙tv国产福利精品 | 龙珠z免费观看国语版 | 欧美精品无码一区二区三区 | 久久久久久久久免费 | 99精品久久久久久久免费 | 韩国公妇里乱片A片 | 在线观看深夜福利 | 超91在线 | 久久77 | 超碰69| 国产在线999 | 亚洲精品无码永久在线观看性色 | 精品无码一区二区三区在线 |