|
本帖最后由 xsh2005105326 于 2012-4-23 23:12 编辑
IAR版本为5.11B,代码见附件
//#include <iom164p.h>
//#include <iolgt8f0xa.h>
#include <iolgt8f0xa_full.h>
#include<intrinsics.h>
#define u8 unsigned char
#define u16 unsigned int
void port_init(void);
void delay_nms(u16 n);
void time0_init(void);
void main(void)
{
u8 i,temp;
port_init();
time0_init();
while(1)
{
temp = 0x03;
for(i=0;i<8;i++)
{
PORTA = temp;
delay_nms(10);
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 = 0x40;
TCCR0B = 0x02;//FPWM,F=CLK/8;
TCNT0 = 0x11;
OCR0A = 0xdd;//编程手册是OCR0
}
/******************************************************************************
函 数 名: void delay_nms(u16 n)
功 能: 延时
说 明:
参 数:
返 回 值:
*******************************************************************************/
void delay_nms(u16 n)
{
u16 i;
for(;n>0;n--)
{
for(i=0;i<10;i++)
{
__delay_cycles(8000);
}
}
}
代码中OCR0A = 0xdd;//编程手册是OCR0
在头文件里面定义的是OCR0A,但是手册里面却是OCR0,不解。
同时T0相应几个寄存器的地址我也搞不明白,如下图
谁能解释下?
-------------------------------------------
------------------------------------------
我上面的代码不能改变占空比及频率(只能通过分配来改)。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|