|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
緊急求救!!lpc916 輸出PWM 信號,調(diào)不出來請高手幫忙,謝謝 |
| 作者:回歸線 欄目:MCU技術(shù) |
緊急求救!lpc916 輸出PWM 信號,調(diào)不出來請高手幫忙,謝謝 內(nèi)部復(fù)位,內(nèi)部RC振蕩器 程序如下 #include <Reg916.h> //Keil HEADER file NAME #include <stdio.h> sbit pin_LED1 = P0^2; void msec(int x); void init(void); //void brkrst_init(void); void Timer1_init(void); unsigned CHAR n=0; void main(void) { init(); // configure ports // brkrst_init(); // enable UART break-detect Timer1_init(); // set up timer1 mode6 (PWM) pin_LED1=0; while(1) { for(n=0; n<255; n++) // vary duty cycle { TH1=n; msec(15); } msec(100); for(n=255; n>0; n--) { TH1=n; msec(15); } msec(100); } } void init(void) { P1M1 = 0x00; // PUSH pull OUTPUT P1M2 = 0xFF; P0M1 |= 0x0c; //將P0.4 設(shè)置成開漏輸出方式,其它I/O 的設(shè)置不變 P0M2 |= 0x0c; ES = 1; // enable UART interrupt EA = 1; } void brkrst_init(void) // This function allows ISP entry through the UART break detect { AUXR1 |= 0x40; // enable reset on break detect SCON = 0x50; // SELECT the BRG as UART baud rate source SSTAT = 0x00; BRGR0 = 0x70; // 9600 BAUD at 11.0592 MHz BRGR1 = 0x04; BRGCON = 0x03; // enable BRG } void UART(void) interrupt 4 { RI = 0; // clear receive interrupt flag } void msec(int x) // @ 11.0592 MHz { int j=0; while(x>=0) { for (j=0; j<1350; j++); x--; } } void Timer1_init(void) { TMOD|=0x02; // timer1 mode 6, PWM TAMOD|=0x01; TH1=150; // duty cycle = 256-TH1 AUXR1|=0x10; // enable toggling pin P0.7 TR0=1; // start timer 1 } |
| 2樓: | >>參與討論 |
| 作者: dzrck 于 2005/12/1 10:34:00 發(fā)布:
應(yīng)該用p12吧 |
|
| 3樓: | >>參與討論 |
| 作者: 回歸線 于 2005/12/1 10:50:00 發(fā)布:
上面的注釋可能有錯,我是用的932的程序改的,注釋沒有改 我用的就是P1.2 |
|
| 4樓: | >>參與討論 |
| 作者: 回歸線 于 2005/12/5 21:09:00 發(fā)布:
已經(jīng)調(diào)試通過了 犯了個低級的錯誤,TH1 應(yīng)該是 TH0. 不好意思 |
|
| 5樓: | >>參與討論 |
| 作者: szqingliu 于 2005/12/15 9:28:00 發(fā)布:
我貼個程序給你 // timermode6_pwm.c // Christian Kulig, 10/29/02 // // This SAMPLE creates a PWM signal on PORT P0.7 using a STANDARD timer. // It sets up the mode 6 (PWM mode) and varies the duty cycle. #include <Reg932.h> //Keil HEADER file NAME #include <stdio.h> void msec(int x); void init(void); void brkrst_init(void); void Timer1_init(void); unsigned CHAR n=0; void main(void) { init(); // configure PORTs brkrst_init(); // enable UART break-detect Timer1_init(); // set up timer1 mode6 (PWM) while(1) { for(n=0; n<255; n++) // vary duty cycle { TH1=n; msec(15); } msec(100); for(n=255; n>0; n--) { TH1=n; msec(15); } msec(100); } } void init(void) { P0M1 = 0x00; // PUSH pull OUTPUT P0M2 = 0xFF; ES = 1; // enable UART interrupt EA = 1; } void brkrst_init(void) // This function allows ISP entry through the UART break detect { AUXR1 |= 0x40; // enable reset on break detect SCON = 0x50; // SELECT the BRG as UART baud rate source SSTAT = 0x00; BRGR0 = 0x70; // 9600 BAUD at 11.0592 MHz BRGR1 = 0x04; BRGCON = 0x03; // enable BRG } void UART(void) interrupt 4 { RI = 0; // clear receive interrupt flag } void msec(int x) // @ 11.0592 MHz { int j=0; while(x>=0) { for (j=0; j<1350; j++); x--; } } void Timer1_init(void) { TMOD|=0x20; // timer1 mode 6, PWM TAMOD|=0x10; TH1=200; // duty cycle = 256-TH1 AUXR1|=0x20; // enable toggling pin P0.7 TR1=1; // start timer 1 } |
|
| 6樓: | >>參與討論 |
| 作者: wan_aigo 于 2007/2/11 13:17:00 發(fā)布:
謝謝啊 很實用啊 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |