Robofun 機器人論壇

標題: 協定解譯副程式 [打印本頁]

作者: ffffff2641    時間: 2007-8-22 14:56
標題: 協定解譯副程式
請教依下各位高手!!
請問使用即時控制需要
PWM產生器主程式
(伺服機編號,伺服機角度)協定解譯副程式--->晶片內部需要的
就拿51來說如果要使用pc端來控制的話要怎麼寫才好呢??
本人研究好久可是還是卡關.......(協定副程式怎麼寫呢??)
先以控制8顆伺服機為準!!
不過當初在設計電路的時候居然和robot_a15大大當初研究的一樣!!!!真不好意思
以下是程式的部份:
PWM0            EQU    40H                  
PWM1            EQU    41H                  
PWM2            EQU    42H                  
PWM3            EQU    43H                  
PWM4            EQU    44H                 
PWM5            EQU    45H                  
PWM6            EQU    46H                  
PWM7            EQU    47H                  
COUNT          EQU    37H
CUT            EQU    39H
PIN            EQU    51H
PWM            EQU    52H
PIN1           EQU    53H
                       ORG         00H
        JMP     START
                  ORG   23H
        JMP     INTERR
                  ORG         0BH
        JMP    T0_INT                          
                  ORG         30H
START:
        MOV     SP,#70H
        MOV     R1,#20H
        MOV     21H,#00H
        MOV     IE,#10010000B
        MOV     SCON,#01110000B
        MOV     TMOD,#00100000B
        MOV     TH1,#0f3H
        SETB          TR1
        SETB    EA
        SETB    ET0            
        SETB    ET1                           
        MOV     CUT,#0         
        MOV     COUNT,#0                     
        MOV     PWM0,#12     
        MOV     PWM1,#12
        MOV     PWM2,#12
        MOV     PWM3,#12
        MOV     PWM4,#12
        MOV     PWM5,#12
        MOV     PWM6,#12
        MOV     PWM7,#12
INTERR:
        PUSH    A
        JBC     T0,T0_INT
        JNB     RI,$
        CLR     RI
        MOV     A,SBUF
        MOV     21H,A
        XRL     A,#40H
        JZ      C0
        MOV     A,21H
        XRL     A,#41H
        JZ      C1
        MOV     A,21H
        XRL     A,#42H
        JZ      C2
        MOV     A,21H
        XRL     A,#43H
        JZ      C3
        MOV     A,21H
        XRL     A,#44H
        JZ      C4
        MOV     A,21H
        XRL     A,#45H
        JZ      C5
        MOV     A,21H
        XRL     A,#46H
        JZ      C6
        MOV     A,21H
        XRL     A,#47H
        JZ      C7
        MOV     A,21H
        JZ      STOP
        RETI   
MAIN:
     
              LCALL  OUT           
              LJMP MAIN

DEL_H:                                    

        MOV R7,#1  
L7:
        MOV R6,#2  
L6:
        MOV R5,#17        
        DJNZ R5,$  
        DJNZ R6,L6
        DJNZ R7,L7  
        RET

PWM_WIDTH:
                  MOV  COUNT,@R0
LOOP1:     
           SETB TR0
           JNB  TF0,$
           CLR  TR0
           DJNZ COUNT,LOOP1         
           CLR  TR0
           MOV  CUT,#0        
           INC  R0
           RET
OUT:
           MOV    R0,#40H        
C0:        
           SETB   P1.0
           MOV    R7,#10        
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.0
C1:     
           SETB   P1.1
           MOV    R7,#10         
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.1
C2:      
           SETB   P1.2
           MOV    R7,#10         
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.2
C3:        
           SETB   P1.3
           MOV    R7,#10         
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.3
C4:        
           SETB   P1.4
           MOV    R7,#10         
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.4
C5:      
           SETB   P1.5
           MOV    R7,#10         
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.5
C6:        
           SETB   P1.6
           MOV    R7,#10         
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.6
C7:        
           SETB   P1.7
           MOV    R7,#10         
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.7
           SETB   TR1
           RET
STOP:
           MOV    P1,#FFH
           MOV    20H,#5AH
           AJMP   T0_INT
T0_INT:
           PUSH  A
           PUSH  PSW
           CLR   TR0
           MOV   TH0,#>(25536-40)
           MOV   TL0,#<(25536-40)
           INC   CUT
           SETB  TR0
           POP   PSW
           POP   A
           RETI
           END
電路圖:

作者: playrobot    時間: 2007-8-23 06:03
您好,
謝謝您的提問, 我雖然不太用組合語言, 但是, 即使我會用, 我也希望, 提問的朋友,可以盡量不要讓我們debug您的程式, 因為, 若沒有實機test, 恐怕還是無用。
您可以, 先下載其他範例程式參考, 或是告知debug所出現的錯誤情況, 照樣, 大家可以方便解答。

再次謝謝您的問題
Thanks
作者: SDJ2    時間: 2007-8-26 20:07
ffffff2641您好:
     請您試試看
簡易接收ASM
我也學習8051組合語言但是沒有硬體

P07-3R.ASM

1011 Bytes, 下載次數: 1001


作者: 我是阿鋒    時間: 2007-10-15 12:10
大大阿附件我打不開耶- -???我也想學習
作者: SDJ2    時間: 2007-10-15 23:28
原帖由 我是阿鋒 於 2007-10-15 12:10 發表
大大阿附件我打不開耶- -???我也想學習

阿鋒您好:
        筆記本即可




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2