SOGO論壇
  登入   註冊   找回密碼
發表人: a23118010
列印 上一主題 下一主題

[程式設計] 求用8051產生頻率為1kHZ的PWM訊號(組語) [複製連結]

Rank: 13Rank: 13Rank: 13Rank: 13

原創及親傳圖影片高手勳章 熱心參予論壇活動及用心回覆主題勳章 榮譽會員勳章 數位硬體勳章 小說之星勳章 原創寫手勳章

狀態︰ 離線
11
發表於 2012-5-18 18:43:04 |只看該作者
本帖最後由 又靜 於 2012-5-18 23:43 編輯
a23118010 發表於 2012-5-18 12:08  
這樣程式呢?雖然還是沒有動作==  ,謝謝           
           ORG        0000H   
        MOV        R5,#5


您好,
試看看這個.....
  1.         ORG        0
  2. PWM:
  3.         MOV        R3,#5
  4.         MOV        R4,#15

  5. NEXT:   JNB        P1.0,NEXT
  6.         INC        R3
  7.         INC        R3
  8.         INC        R3
  9.         INC        R3
  10.         INC        R3
  11.         DEC        R4
  12.         DEC        R4
  13.         DEC        R4
  14.         DEC        R4
  15.         DEC        R4
  16.         MOV        R5,#200
  17.         CALL       DELAY
  18.         CJNE       R3,#20,START
  19.         JMP        PWM
  20. START:
  21.         SETB       P2.0
  22.         MOV        A,R3
  23.         MOV        R5,A
  24.         CALL       DELAY
  25.         CLR        P2.0
  26.         MOV        A,R4
  27.         MOV        R5,A
  28.         CALL       DELAY
  29.         JB         P1.0,START
  30.         JMP        NEXT
  31.         
  32. DELAY:  MOV        R6,#250
  33.         DJNZ       R6,$
  34.         DJNZ       R5,DELAY
  35.         RET
複製代碼

點評

a23118010  有亮,沒改變,彈跳開關按下去就導通,放開就斷路  發表於 2012-5-21 19:30:50
a23118010  抱歉一直打擾到妳,你這電路當P1.0按下去也是沒動作,會不會根本就是我8051有問題  發表於 2012-5-19 10:31:12
a23118010  不好意思,你這23行電腦說有錯  發表於 2012-5-18 23:08:53

Rank: 6Rank: 6

數位硬體勳章

狀態︰ 離線
12
發表於 2012-5-18 19:48:34 |只看該作者
                        ORG    00H
START:
                        MOV      P3,#FFH
                        MOV      P2,#FFH
                        JNB        P3.1,LED1
                        JNB        P3.2,LED2
                        JNB        P3.3,LED3
                        JNB        P3.4,LED4
                        JMP        START
LED1:
                        MOV      P2,#00H
                        ACALL  DELAY1
                        MOV      P2,#FFH
                        ACALL  DELAY     
                        JNB        P3.1,LED1
                        JMP        START
DELAY1:
                        MOV      R6,#20
S1:
                        MOV      R7,#25
                        DJNZ      R7,$
                        DJNZ      R6,S1
                        RET
LED2:
                        MOV      P2,#00H
                        ACALL  DELAY2
                        MOV      P2,#FFH
                        ACALL  DELAY
                        JNB        P3.2,LED2
                        JMP        START
DELAY2:
                        MOV      R6,#20
S2:
                        MOV      R7,#5
                        DJNZ      R7,$
                        DJNZ      R6,S2
                        RET
LED3:
                        MOV      P2,#00H
                        ACALL  DELAY3
                        MOV      P2,#FFH
                        ACALL  DELAY
                        JNB        P3.3,LED3
                        JMP        START
DELAY3:
                        MOV      R6,#10
S3:
                        MOV      R7,#4
                        DJNZ      R7,$
                        DJNZ      R6,S3
                        RET
LED4:
                        MOV       P2,#00H
                        ACALL   DELAY4
                        MOV       P2,#FFH
                        ACALL   DELAY
                        JNB         P3.4,LED4
                        JMP         START
DELAY4:
                        MOV      R6,#10
S4:
                        MOV      R7,#1
                        DJNZ      R7,$
                        DJNZ      R6,S4
                        RET
DELAY:
                        MOV      R6,#20
S:
                        MOV      R7,#25
                        DJNZ      R7,$
                        DJNZ      R6,S
                        RET

                        END


  以上是我之前寫的,確定可以用,用的是比較笨的方法,一目瞭然。

  用P3.1~P3.4做控制,也就是有四段不同佔空比,頻率會變動,主要是因為高電位持續時間不變,只變動低電位時間所致。

  如果要更改頻率和佔空比,直接修改各個延遲副程式中的R6或R5的值就可
   

Rank: 4

狀態︰ 離線
13
發表於 2012-5-27 09:21:59 |只看該作者
NEXT2:        MOV        R3,#1
        ACALL        DELAY3
        JB        P1.0,NEXT2                  
WAIT1:        JNB        P1.0,WAIT1    2  p1.0=0  jumb wait1
        MOV        A,R5
你這裡好像是在做無窮迴圈ㄅ  太久沒寫了  感覺你程式是這裡出問題  給你參考用拉  小弟真的是太久沒寫了    pwm成是你要記得去算執行時間跟你的石英震盪器有關係
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2025-7-21 20:45

© 2004-2025 SOGO論壇 OURSOGO.COM
回頂部