P89LPC932的PWM DA轉(zhuǎn)換
/**************************Asm版**********************************/
/*實(shí)驗(yàn)?zāi)康模?br/>測(cè)試CCU模塊的PWM輸出功能(控制占空比)
占空比由TOR2H,TOR2L及OCRAH,ORCAL控制
通過控制占空比獲得所需電壓值
*/
$NOMOD51
$INCLUDE(REG932.INC)//
PLEENBITTCR20.7
ORG0000H
AJMPMAIN
ORG0100H
MAIN:
MOV P2M1,#0x00;設(shè)置端口模式
MOV P2M2,#0xFF;設(shè)置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;啟動(dòng)PLL
SETBOCA
LOOP:
JNBPLEEN,LOOP;等待直到PLL鎖定
MOV TCR20,#0x82;設(shè)置輸出模式,非反相PWM
SJMP$
RET
END
/************************************************************/
/**************************C版*********************************/
/*實(shí)驗(yàn)?zāi)康模?br/>測(cè)試CCU模塊的PWM輸出功能(控制占空比)
占空比由TOR2H,TOR2L及OCRAH,ORCAL控制
通過控制占空比獲得所需電壓值
*/
#include
sbitPLEEN=TCR20^7;
main()
{
P2M1=0x00;//設(shè)置端口模式
P2M2=0xFF;//設(shè)置P26,OCA為推挽輸出
TCR21=0x04;//分頻操作
TOR2H=0x00;//重裝值0x00FF=255
TOR2L=0xF0;//->PWM周期
TCR21|=0x80;
OCRAH=0x00;//控制占空比
OCRAL=0xA0;//
TCR21|=0x80;
CCCRA=0x01;
PLEEN=1;//啟動(dòng)PLL
OCA=1;
while(PLEEN==0);//等待直到PLL鎖定
TCR20=0x82;//設(shè)置輸出模式,非反相PWM
while(1);
}
/******************************************************************/