/**************************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 <Reg932.h>
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);
}
/******************************************************************/