SyncMOS Technologies Inc.

SyncMOS Technologies Inc.
SyncMOS PWM Application Note
Jan 2009
For SM89S16R1、SM5964A、SM79108、SM79164
Pulse Width Modulation(PWM) Function Application Notes
適用產品:
1.
SM89S16R1(P1.4~P1.5)
2.
SM5964A(P1.2~P1.3)
3.
SM79108(P1.5)
4. SM79164(P1.0~P1.7)
功能說明:
每個 PWM channel 所輸出的波型是直接將資料寫入一個 8bit 暫存器 PWMD[7..0] ($BE~$BB, $B6~$B3)所決
定的,它可以選擇為 5 bit resolution 的 PWM 或 8 bit resolution 的 PWM。在 5bit PWM 部份,只有 bit0~bit4
為有效值。而當 PWM 為 Enable 時,它將會連續性的輸出 PWM 波型,而不會因為任何中斷發生而讓 PWM
波型中斷。
應用範圍:1、背光板亮度控制。2、CCD Clock 輸出。3、電壓變化控制。
特殊暫存器說明:P1CON, PWMC[7:0], PWMD[7:0]
1、
P1CON(0x9B):
SM89S16R1(P1.4~P1.5)
Unused
Read /Write
Reset Value
*
SM5964A(P1.2~P1.3)
SDAE
Read /Write
Reset Value
Unused
*
Unused
*
Unused
*
PWM1E PWM0E
R/W
R/W
0
0
Unused
*
Unused
*
SCLE
Unused
*
Unused
*
PWM1E PWM0E
R/W
R/W
0
0
Unused
*
Unused
*
Unused
*
PWME0
R/W
0
Unused
*
Unused SPWME0 Unused
*
*
Unused
*
SM79108(P1.5)
Read /Write
Reset Value
Unused
*
SM79164(P1.0~P1.7)
PWME7 PWME6 PWME5 PWME4 PWME3 PWME2 PWME1 PWME0
Read /Write
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Reset Value
0
0
0
0
0
0
0
0
PWM[7:0]E:初始值為 0,當位元設定為 1 時,對應 Port1 的腳位即設為 PWM 的功能,當設定為 0 時 SPWM
的腳位即為一般的 I/O Pin。
2、PWMC 共有 8 組($DE~$DB,$D6~$D3):
Unused Unused Unused Unused
Unused
PBS
PFS1
PFS0
Specifications subject to change without notice, contact your sales representatives for the most recent information.
1
IRFWX-A114
PWM APN_VerA_20090119
SyncMOS Technologies Inc.
Jan 2009
Read /Write
Reset Value
*
SyncMOS PWM Application Note
For SM89S16R1、SM5964A、SM79108、SM79164
*
*
*
*
R/W
0
R/W
0
R/W
0
PFS [1:0] :是設定外部頻率的被除數以決定 PWM 頻率。
PFS1 PFS0
Divider
PWM clock(Fosc=12MHz) PWM clock(Fosc=24MHz)
0
0
24 MHz
48 MHz
0.5 (Xtal<24MHz 才可使用))
0
1
1
12 MHz
24 MHz
1
0
2
6 MHz
12 MHz
1
1
4
3 MHz
6 MHz
PWM clock=1/T=Fosc/Divider
PWM 的輸出頻率 = PWM clock/32 or PWM clock/256
= [Fosc/ Divider]/32 or [Fosc/Divider]/256。
備註: 設 5bit 時 除數為 32,設 8bit 時 除數為 256
PBS:設定為 5 bit 或 8 bit resolution 的 PWM 波型。
預設為 8 bit resolution,設為 1 為 5 bit resolution
3、PWMD[7:0]( $BE~$BB,$B6~$B3):
PWMD7 PWMD6 PWMD5 PWMD4 PWMD3 PWMD2 PWMD1 PWMD0
Read /Write
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Reset Value
0
0
0
0
0
0
0
0
PWMD[7:0]: 為 PWM 資料暫存器,它決定 PWM 輸出波形的週期
如果選擇為 5 bit resolution 的 PWM 時,有效位元為 PWMD4~PWMD0。
Specifications subject to change without notice, contact your sales representatives for the most recent information.
2
IRFWX-A114
PWM APN_VerA_20090119
SyncMOS Technologies Inc.
Jan 2009
SyncMOS PWM Application Note
For SM89S16R1、SM5964A、SM79108、SM79164
範例:一組 PWM 輸出週期頻率的計算方式 :
設 Fosc = 36MHz , PWMC 的 PFS[1:0] = 01 (Divider=1),PBS=1(5 bit resolution);
PWM clock =36MHz / 1 = 36MHz
PWM output cycle frame frequency = 36MHz / 32 = 1.125MHz
PWM 程式範例:
組合語言:
以 SM79164 為例 X’tal = 36MHz
;******* SET DATA ****************************************
P1CON
EQU
09BH
;設定 SFR 內 P1CON 的位址
PWMC0
EQU
0D3H
;設定 SFR 內 SPWMC 的位址
PWMD0
EQU
0B3H ;設定 SFR 內 SPWMD0 的位址
;******************* 定義程式的起始位址 ********************
ORG
0000H
;設定目前程式的起始位址
JMP
Start
;跳至 reset
ORG
100H
Start:
MOV
P1CON,#01H ;設定 P1.0 為 PWM 輸出
MOV
PWMC0,#05H ;設定 PWM 頻率 (Divider=1 , 5 bit resolution)
MOV
PWMD0,#010H ;設定輸出波形為 50/50
;************* 設定 LED 在 PWMD0(即 P1.0 輸出)的閃爍方式 ***************
;此段程式的 LED 顯示是由暗至亮的表示方法
MOV
A,#0ffH
;此段為由 FF 至 00 的波形變化
LOOP1:
MOV
PWMD0,A
MOV
R0,A
CALL Delay
DJNZ
R0,LOOP1
Specifications subject to change without notice, contact your sales representatives for the most recent information.
3
IRFWX-A114
PWM APN_VerA_20090119
SyncMOS Technologies Inc.
SyncMOS PWM Application Note
Jan 2009
For SM89S16R1、SM5964A、SM79108、SM79164
;********************* 呼叫 Delay **************************************
Delay:
MOV
20H,#02H
b3: MOV
21H,#0FFH
b2: MOV
22H,#0FFH
b1: DJNZ
22H,b1
DJNZ
21H,b2
DJNZ
20H,b3
RET
END
設 Fosc = 36MHz , PWMC 的 PFS[1:0] = 02 (Divider = 2),PBS=0(8 bit resolution);
PWM clock =36MHz / 2 = 18MHz
PWM output cycle frame frequency = 18MHz / 256 = 70.3KHz
C 語言:
sfr P1CON = 0x9B;
sfr PWMC0
= 0x0D3;
sfr PWMC1
= 0x0D4;
sfr PWMC2
= 0x0D5;
sfr PWMC3
= 0x0D6;
sfr PWMC4
= 0x0DB;
sfr PWMC5
= 0x0DC;
sfr PWMC6
= 0x0DD;
sfr PWMC7
= 0x0DE;
sfr PWMD0 = 0x0B3;
sfr PWMD1 = 0x0B4;
sfr PWMD2 = 0x0B5;
sfr PWMD3 = 0x0B6;
sfr PWMD4 = 0x0BB;
sfr PWMD5 = 0x0BC;
sfr PWMD6 = 0x0BD;
sfr PWMD7 = 0x0BE;
void DelayX10ms(int);
unsigned char times;
//設定 SFR 內 P1CON 的位址
//設定 SFR 內 PWMC0 的位址
//設定 SFR 內 PWMC1 的位址
//設定 SFR 內 PWMC2 的位址
//設定 SFR 內 PWMC3 的位址
//設定 SFR 內 PWMC4 的位址
//設定 SFR 內 PWMC5 的位址
//設定 SFR 內 PWMC6 的位址
//設定 SFR 內 PWMC7 的位址
//設定 SFR 內 PWMD0 的位址
//設定 SFR 內 PWMD1 的位址
//設定 SFR 內 PWMD2 的位址
//設定 SFR 內 PWMD3 的位址
//設定 SFR 內 PWMD4 的位址
//設定 SFR 內 PWMD5 的位址
//設定 SFR 內 PWMD6 的位址
//設定 SFR 內 PWMD7 的位址
void main(void)
{
//設定 PWM 輸出腳位//
//P1CON=0x01;
//set p1.0 out for 79164
//P1CON=0x02;
//set p1.1 out for 79164
//P1CON=0x04;
//set p1.2 out for 79164,5964A
//set p1.4 out for 89S16R1
P1CON=0x08; //set p1.3 out for 79164,5964A
//set p1.5 out for 89S16R1
Specifications subject to change without notice, contact your sales representatives for the most recent information.
4
IRFWX-A114
PWM APN_VerA_20090119
SyncMOS Technologies Inc.
Jan 2009
//P1CON=0x10;
//P1CON=0x20;
//P1CON=0x40;
//P1CON=0x80;
SyncMOS PWM Application Note
For SM89S16R1、SM5964A、SM79108、SM79164
//set p1.4 out for 79164
//set p1.5 out for 79164,79108,
//set p1.6 out for 79164
//set p1.7 out for 79164
//設定外部頻率的被除數以決定 PWM 時脈//
//外部頻率:36MHz 設 Divider=2 PBS=0(8 bit resolution) 其 PWM 時脈為 70.3kHz
//PWMC0=0x00; //set PWM frequency (Divider=0.5)
//PWMC0=0x01;
//set PWM frequency (Divider=1)
PWMC0=0x02;
//set PWM frequency (Divider=2)
//PWMC0=0x03; //set PWM frequency (Divider=4)
//設定輸出波形的比例//
PWMD0=0x80; //set output waveform to 50/50
//PWMD0=0xC0; //set output waveform to 75/25
for(times=0xff;times<=0xff;times--)
{
PWMD0 = times;
DelayX10ms(50);
}
}
void DelayX10ms(int count)
{
int i,j;
for(i=0;i<count;i++)
for(j=0;j<1500;j++);
}
Specifications subject to change without notice, contact your sales representatives for the most recent information.
5
IRFWX-A114
PWM APN_VerA_20090119