×
单片机 > 单片机程序设计 > 详情

P89LPC932的PWM DA转换

发布时间:2020-05-16 发布时间:
|

/**************************Asm版**********************************/ 
/*实验目的: 
测试CCU模块的PWM输出功能(控制占空比) 
占空比由TOR2H,TOR2L及OCRAH,ORCAL控制 
通过控制占空比获得所需电压值 
*/ 

    $NOMOD51

 

    $INCLUDE(REG932.INC)    // 

    PLEEN    BIT    TCR20.7 

    ORG    0000H 
    AJMP    MAIN 
     
    ORG    0100H 
MAIN: 
     MOV     P2M1,#0x00    ;设置端口模式 
     MOV     P2M2,#0xFF    ;设置P26,OCA为推挽输出 

     MOV     TCR21,#0x04    ;分频操作 

     MOV     TOR2H,#0x00    ; 重装值 0x00FF=255 
     MOV     TOR2L,#0xF0    ; -> PWM 周期 
     MOV     A,TCR21 
    ANL    A,#0x80 
     MOV     TCR21,A 

     MOV     OCRAH,#0x00    ;控制占空比 
     MOV     OCRAL,#0xA0    ; 
     MOV     A,TCR21 
    ANL    A,#0x80 
     MOV     TCR21,A 

     MOV     CCCRA,#0x01 

    SETB    PLEEN        ; 启动 PLL 
    SETB    OCA 
LOOP: 
    JNB    PLEEN,LOOP    ;等待直到PLL锁定 

     MOV     TCR20,#0x82    ; 设置输出模式,非反相PWM 

    SJMP    $ 
    RET 

    END 

/************************************************************/


/**************************C版*********************************/ 
/*实验目的: 
测试CCU模块的PWM输出功能(控制占空比) 
占空比由TOR2H,TOR2L及OCRAH,ORCAL控制 
通过控制占空比获得所需电压值 
*/ 

#include  
sbit    PLEEN=TCR20^7; 

main() 

    P2M1=0x00;        //设置端口模式 
    P2M2=0xFF;        //设置P26,OCA为推挽输出 

    TCR21=0x04;        //分频操作 

    TOR2H=0x00;        // 重装值 0x00FF=255 
    TOR2L=0xF0;        // -> PWM 周期 
    TCR21|=0x80; 

    OCRAH=0x00;        //控制占空比 
    OCRAL=0xA0;        // 
    TCR21|=0x80; 

    CCCRA=0x01; 

    PLEEN=1;            // 启动 PLL 
    OCA=1; 
    while(PLEEN==0);    // 等待直到PLL锁定 

    TCR20=0x82;        // 设置输出模式,非反相PWM 

    while(1);     

/******************************************************************/ 




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会