音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(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ù)
緊急求救。pc916 輸出PWM 信號,調(diào)不出來請高手幫忙,謝謝
緊急求救!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
應(yīng)該用p12吧
 
3樓: >>參與討論
回歸線
上面的注釋可能有錯,我是用的932的程序改的,注釋沒有改
我用的就是P1.2

4樓: >>參與討論
回歸線
已經(jīng)調(diào)試通過了
犯了個低級的錯誤,TH1 應(yīng)該是 TH0.
不好意思

5樓: >>參與討論
szqingliu
我貼個程序給你
// 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
謝謝啊
很實用啊

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
用手機(jī)怎么發(fā)郵件啊
<<ARM嵌入式系統(tǒng)基礎(chǔ)教程>>中的I2C,急
EasyARM101(luminary學(xué)習(xí)套件) 最貼近客戶的開發(fā)套件
LPC900系列簡介(6倍速80C51內(nèi)核/小體積/低功耗/高性能/低成本)
932A1的CCU基本定時器功能
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號