Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 6350|回復: 11
打印 上一主題 下一主題

89c51 控制 廣營 GWS NARO+D 無法控制 請教組語及伺服馬達高手

[複製鏈接]
1#
發表於 2011-8-25 22:42:50 | 顯示全部樓層
迴圈起始值放錯地方

        ORG        0000H
MAIN:
        MOV        R1,#50                        ;設R1暫存器跑50次
LOOP:
        SETB        P1.0                        ;設置P1.0為1 High
        CALL        DELAY                        ;呼叫延遲0.5ms
        CALL        DELAY                        ;呼叫延遲0.5ms  共 1ms
        CLR        P1.0                        ;清除為0 Low
        MOV        R0,#38                        ;設R0暫存器跑38次 38*0.5(Delay)=19

WAIT19R0:                              
        CALL        DELAY                        ;呼叫延遲0.5ms
        DJNZ        R0,WAIT19R0                ;R0不為零則跳到WAIT19R0 共跑38次19ms
        DJNZ        R1,LOOP                        ;重複(1ms high) (0 low) 週期 20ms 共50次 才換下個狀態


        MOV        R1,#50                        ;設R1暫存器跑50次
LOOP2:
        SETB        P1.0                        ;設置P1.0為1 High
        CALL        DELAY                        ;呼叫延遲0.5ms
        CALL        DELAY                        ;呼叫延遲0.5ms  
        CALL        DELAY                        ;呼叫延遲0.5ms        共1.5 ms
        CLR        P1.0                        ;清除為0 Low
        MOV        R0,#37                        ;設R0暫存器跑37次 37*0.5(Delay)=18.5      

WAIT18_5R0:                              
        CALL        DELAY                        ;呼叫延遲0.5ms
        DJNZ        R0,WAIT18_5R0                ;先減1 R0不為零則跳到WAIT18_5R0 共跑37次18.5ms
        DJNZ        R1,LOOP2                ;重複(1.5ms high) (0 low) 週期 20ms 共50次 才換下個狀態

        MOV        R1,#50                        ;設R1暫存器跑50次
LOOP3:
        SETB        P1.0                        ;設置P1.0為1 High
        CALL        DELAY                        ;呼叫延遲0.5ms
        CALL        DELAY                        ;呼叫延遲0.5ms  
        CALL        DELAY                        ;呼叫延遲0.5ms
        CALL        DELAY                        ;呼叫延遲0.5ms        共2.0 ms
        CLR        P1.0                        ;清除為0 Low
        MOV        R0,#36                        ;設R0暫存器跑36次 36*0.5(Delay)=18

WAIT18R0:                              
        CALL        DELAY                        ;呼叫延遲0.5ms
        DJNZ        R0,WAIT18R0                ;先減1 R0不為零則跳到WAIT18_5R0 共跑37次18.5ms
        DJNZ        R1,LOOP3                ;重複(2ms high) (0 low) 週期 20ms 共50次 才換下個狀態
      
        JMP         MAIN                       ;跳回迴圈

DELAY:                                        ;Delay 0.5ms
        MOV        TMOD,#00010000B               
D1:
        MOV        TH1,#0FEH
        MOV        TL1,#0CH
      
        SETB        TR1
        JNB        TF1,$
        CLR        TF1
        RET
        END
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-15 15:36 , Processed in 0.188123 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表