|
S3F9454的脉宽 PWM 输出程序:
#include "ioS3C9454.h"
#include "intrinsics.h" //包含内部函数
//======================================================================================
//---宏定义替换
#define uchar unsigned char
#define uint unsigned int
#define nop (__no_operation()) //将后者指令行缩写为nop;
#define di (__disable_interrupt()) //将后者指令行缩写为di;
#define ei (__enable_interrupt()) //将后者指令行缩写为ei;
//======================================================================================
//---程序所用函数声明
void delay_ms( uint T_ms ); //延时函数
void chip_init(); //初始化 IO 口
__interrupt void int_9454(); //中断函数
//======================================================================================
//---定义9454的SMART OPTION值
//---003CH,must be initialized to 0
//---003DH,must be initialized to 0
//---003EH,enable LVR(2.3V)
//---003FH,internal RC(3.2MHZ in Vdd=5V) ,0x02(0.5M),0x01(外部RC振荡),0x0(外部晶振)
//--------------------------------------------------------------------------------------
__code const volatile uchar SmartOption[4] @0x003c = {0x0,0x0,0xe4,0x00};
//======================================================================================
//---IO 口,初始化过程
void chip_init()
{
di;
BTCON = 0xA3; //Watch-dog disable
CLKCON = 0x18; //selet non-divided CPU clock
P0CONH = 0x9A; //P0.4-P0.7 is as push-pull output port
P0CONL = 0xAA; //P0.0-P0.3 is as push-pull output port
P0PND = 0x0; //P0.0(INT0)/P0.1(INT1) disable
P1CON = 0xA;
P2CONH = 0x2A; //P2.5-P2.4(push-pull output)
P2CONL = 0xAA; //P2.3~P2.0(push-pull output)
T0CON = 0x8A;
T0DATA = 0x32;
PWMDATA = 0x0;
PWMCON = 0x3C; //PWM input clock is fosc/64,enable PWM output,reload from 6 bit count
//PWMCON = 0x7C; //PWM input clock is fosc/8,enable PWM output,reload from 6 bit count
//PWMCON = 0xBC; //PWM input clock is fosc/2,enable PWM output,reload from 6 bit count
//PWMCON = 0xFC; //PWM input clock is fosc/1,enable PWM output,reload from 6 bit count
}
//======================================================================================
//---延时函数
void delay_ms( uint T_ms )
{
uint i,j;
for(i=0;i < T_ms;i++)
for(j=0;j < 110;j++)
{
nop;
nop;
}
}
//======================================================================================
//---主程序
void main()
{
//---填充系统SMART OPTION
uchar buffer = SmartOption[0];
chip_init(); //初始化 IO 口
PWMDATA=19; //脉宽的输出数
while(1)
{
uchar i;
delay_ms( 2500 );
for(i=0;i < 83;i++)
{
PWMDATA++;
delay_ms(50);
}
delay_ms( 2500 );
for(;i > 0 ;i--)
{
PWMDATA--;
delay_ms(50);
}
}
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|