/****************************************************************************/
/* */
/* FILE NAME VERSION */
/* */
/* PWM.C 1.0 */
/* */
/* DESCRIPTION */
/* */
/* JX44B0(S3C44B0X)PWM实验 */
/* */
/* */
/* DATA STRUCTURES */
/* */
/* FUNCTIONS : */
/* 在JX44B0教学实验箱进行PWM方式驱动蜂蜜器的实验 */
/* */
/* DEPENDENCIES */
/* JX44B0-1 */
/* JX44B0-2 */
/* JX44B0-3 */
/* */
/* */
/* NAME: */
/* REMARKS: */
/* */
/* Copyright (C) 2003 Wuhan CVTECH CO.,LTD */
/****************************************************************************/
/****************************************************************************/
/* 学习ARM处理器中PWM的处理方法: */
/****************************************************************************/
/* 包含文件 */
#include "44b.h"
/* functins */
void test_pwm();
/*****************************************************************************
// Function name : Main
// Description : 测试程序主函数
// Return type : int
// Argument : void
*****************************************************************************/
void Main()
{
test_pwm();
while(1);
}
/*****************************************************************************
// Function name : test_pwm
// Description : 测试PWM,通过蜂鸣器输出脉冲
// Return type : int
// Argument : void
*****************************************************************************/
void test_pwm()
{
int index, rate ;
unsigned short div;
int freq;
/* 设置定时器的预分频率值:TIME0/1=255, TIME2/3=0, TIME4/5=0 */
rTCFG0=0xFF;
/* 设置定时器的工作模式:中断模式,设置分频率值:TIME0为1/4,其他为1/2 */
rTCFG1=0x1;
/* 输出脉冲:频率从4000HZ到14000HZ, 使用2/3的占空比 */
for ( freq = 500; freq < 14000; freq+=500 )
{
div = (MCLK/256/4)/freq;
rTCON=0x0;
rTCNTB0= div;
rTCMPB0= (2*div)/3;
rTCON=0xa; /* 手工装载定时器的计数值 */
rTCON=0x9; /* 启动定时器,并周期模式触发 */
for( index = 0; index < 800000; index++);
rTCON=0x0; /* 延时并停止定时器 */
}
/* 输出脉冲:频率1000HZ, 使用1/100 - 95/100的占空比 */
div = (MCLK/256/4)/1000;
for ( rate = 1; rate < 100; rate += 5 )
{
rTCNTB0= div;
rTCMPB0= (rate*div)/100; /* 修改占空比 */
rTCON=0xa; /* 手工装载定时器的计数值 */
rTCON=0x9; /* 启动定时器,并周期触发 */
for( index = 0; index < 800000; index++);
rTCON=0x0;
}
}