(組合語言)8051 PWM 如何同時輸出3組不同脈波 PWM |
答題得分者是:DavidLo
|
bill036
一般會員 發表:1 回覆:5 積分:1 註冊:2007-10-07 發送簡訊給我 |
|
sansam
高階會員 發表:4 回覆:141 積分:164 註冊:2007-08-20 發送簡訊給我 |
|
bill036
一般會員 發表:1 回覆:5 積分:1 註冊:2007-10-07 發送簡訊給我 |
|
sansam
高階會員 發表:4 回覆:141 積分:164 註冊:2007-08-20 發送簡訊給我 |
啊!怎麼有這種老闆
不過我已經多年沒摸51了,不好意思,現在改用PIC的MCU,瞧瞧我的部落格就知道了,希望其他大大可以幫忙, http://tw.myblog.yahoo.com/jw!AAYcxeeBERmYSYUKUEqzAgU-/article?mid=2&prev=10&l=f&fid=1 ===================引 用 bill036 文 章=================== SANSAM大大,不好意思是否可以提供範例嗎?因為我不是電子科畢業,我的工作是賣LED的,老闆出了難題給我,說叫我做出混色 紅外線控制器(要我六月底完成,否則要炒我魷魚),我也才剛買8051的書及燒錄器來加緊的學,至於紅外線我已經有一點頭緒了,但是PWM都寫不出來,幫幫忙好嗎? |
極光空
一般會員 發表:4 回覆:15 積分:3 註冊:2006-07-16 發送簡訊給我 |
組語很久沒用了所以忘了不多了,我目前都是用C語言
你可以參考看看。 Timer中斷副程式 if(PRD < 255) { if(DT1>=PRD) { PA.0 = 0; } if(DT2>=PRD) { PA.1 = 0; } if(DT3>=PRD) { PA.2 = 0; } PRD ; } else { PRD = 0; PA.0 = 1; PA.1 = 1; PA.2 = 1; } 以上的程式請擺在TIMER中斷副程式中,因為不讓LED會有閃爍,所以TIMER時間要設快一點 假設頻率在100hz 每次中斷時間必須在 10ms / 255 = 39us 在這裡說明一下變數 PRD是PWM解析,DT1~DT3是責任週期分別可控制三組PWM的責任週期 當此變數越大表示責任週期越長。 |
naga88
一般會員 發表:0 回覆:13 積分:7 註冊:2008-06-23 發送簡訊給我 |
------
http://tw.myblog.yahoo.com/naga_tooru
編輯記錄
naga88 重新編輯於 2008-06-23 13:57:42, 註解 無‧
|
bill036
一般會員 發表:1 回覆:5 積分:1 註冊:2007-10-07 發送簡訊給我 |
沒錯類似這樣,但是我用的是HiPOWER LED ,所以才需要用MOSFET做PWM!爬文看到人家是這樣說的!
===================引 用 naga88 文 章=================== Bill大 你們老闆太誇張了吧 時間這麼短 對你來說有困難吧 http://www.youtube.com/v/Rlifm5nz50g 是如上的功能嗎 |
DavidLo
高階會員 發表:17 回覆:225 積分:168 註冊:2004-07-21 發送簡訊給我 |
|
naga88
一般會員 發表:0 回覆:13 積分:7 註冊:2008-06-23 發送簡訊給我 |
|
bill036
一般會員 發表:1 回覆:5 積分:1 註冊:2007-10-07 發送簡訊給我 |
|
bill036
一般會員 發表:1 回覆:5 積分:1 註冊:2007-10-07 發送簡訊給我 |
|
DavidLo
高階會員 發表:17 回覆:225 積分:168 註冊:2004-07-21 發送簡訊給我 |
Hi!
有支援PWM的51CPU,很多家都有! 可以參考W78L365等類似CPU. 以Winbond系列,C範例如下 //define SPECIAL register FOR Winbond CPU sfr PWMP = 0xD9; //prescaler sfr PWMCON1 = 0xDC; //control 1 reg sfr PWMCON2 = 0xCE; //control 2 reg sfr PWM0 = 0xDA; //ch1 duty percent output at P1.3 sfr PWM1 = 0xDB; //ch2 duty percent P1.4 sfr PWM2 = 0xDD; //ch3 duty percent P1.5 sfr PWM3 = 0xDE; //ch4 duty percent P1.6 sfr PWM4 = 0xCF; //ch5 duty percent P1.7 //initial PWM prescaler PWMP=255; //enable PWM PWMCON1=0x33; //initial turn off all PWM output RGB(0,0,0); //enable output PWMCON1=0xff; //this is the function call void RGB(unsigned char r,unsigned char g,unsigned char b) { PWM0=r; PWM1=g; PWM2=b; }
編輯記錄
DavidLo 重新編輯於 2008-06-24 15:53:05, 註解 無‧
|
bill036
一般會員 發表:1 回覆:5 積分:1 註冊:2007-10-07 發送簡訊給我 |
|
ererer40
初階會員 發表:37 回覆:91 積分:45 註冊:2008-05-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |