|
代码如下(IAR 5.40):
#include <iolgt8f0xa.h>
#include<intrinsics.h>
#define u8 unsigned char
#define u16 unsigned int
void time0_init(void);
void port_init(void);
void delay_nms(unsigned int n);
void main(void)
{
u8 i,temp;
port_init();
time0_init();
PMCR=0x35; //使能外部晶振
delay_nms(10); //延时10ms等待晶振输入稳定
PMCR=0x34; //切换为外部晶振
while(1)
{
PORTA = 0;
PORTA = 255;
}
/*while(1)
{
temp = 0x01;
for(i=0;i<8;i++)
{
PORTA = temp;
delay_nms(100);
temp<<=1;
}
}*/
}
/******************************************************************************
函 数 名: void port_init(void)
功 能: IO初始化
说 明:
参 数:
返 回 值:
*******************************************************************************/
void port_init(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTC |= 0x40;
DDRC |= 0x40;//PC6 for output
}
/******************************************************************************
函 数 名: void time0_init(void)
功 能: T0初始化
说 明:
参 数:
返 回 值:
*******************************************************************************/
void time0_init(void)
{
TCCR0A = 0xC3;//0x83
TCCR0B = 0x01;//FPWM,F=CLK;
TCNT0 = 0xdd;
OCR0 = 0x11;//编程手册是OCR0
}
/******************************************************************************
函 数 名: void delay_nms(u16 n)
功 能: 延时
说 明:
参 数:
返 回 值:
*******************************************************************************/
void delay_nms(u16 n)
{
u16 i;
for(;n>0;n--)
{
for(i=0;i<1000;i++)
{
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
}
}
}
IO反转速度是2.21MHz,如图
PWM频率是43.22KHz,如图
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|