P89LPC932的PWM DA转换
扫描二维码
随时随地手机看文章
/**************************Asm版**********************************/
/*实验目的:
测试CCU模块的PWM输出功能(控制占空比)
占空比由TOR2H,TOR2L及OCRAH,ORCAL控制
通过控制占空比获得所需电压值
*/
$NOMOD51
$INCLUDE(REG932.INC)//
PLEENBITTCR20.7
ORG0000H
AJMPMAIN
ORG0100H
MAIN:
MOV P2M1,#0x00;设置端口模式
MOV P2M2,#0xFF;设置P26,OCA为推挽输出
MOV TCR21,#0x04;分频操作
MOV TOR2H,#0x00;重装值0x00FF=255
MOV TOR2L,#0xF0;->PWM周期
MOV A,TCR21
ANLA,#0x80
MOV TCR21,A
MOV OCRAH,#0x00;控制占空比
MOV OCRAL,#0xA0;
MOV A,TCR21
ANLA,#0x80
MOV TCR21,A
MOV CCCRA,#0x01
SETBPLEEN;启动PLL
SETBOCA
LOOP:
JNBPLEEN,LOOP;等待直到PLL锁定
MOV TCR20,#0x82;设置输出模式,非反相PWM
SJMP$
RET
END
/************************************************************/
/**************************C版*********************************/
/*实验目的:
测试CCU模块的PWM输出功能(控制占空比)
占空比由TOR2H,TOR2L及OCRAH,ORCAL控制
通过控制占空比获得所需电压值
*/
#include
sbitPLEEN=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);
}
/******************************************************************/