其实HC89F003的代码就跟C51的差不多,就是寄存器多了一点,实现起来也简单以下的代码就像以前51的一样,利用定时器实现了500ms灯开关一次。。
#define ALLOCATE_EXTERN
#include "HC89S003F4.h"
//#include "EEPROM.h"
void RCC_init()
{
while((CLKCON&0x20)!=0x20); //等待内部高频RC起振
CLKSWR = 0x51; //选择内部高频时钟为主时钟,内部高频RC0分频,Fosc=32MHz
while((CLKSWR&0xC0)!=0x40); //等待内部高频切换完成
CLKDIV = 0x01; //Fosc2分频得到Fcpu,Fcpu=16MHz
}
void GPIO_init()
{
P2M1 = P2M1&0xf0|0x08; //P11设置为推挽输出
}
void TIMER_init()
{
TCON1 = 0x00; //Tx0定时器时钟为Fosc
TMOD = 0x00; //16位重装载定时器/计数器
TH0 = 0xFA;
TL0 = 0xCB; //T0定时时间1ms
IE |= 0x02; //打开T0中断
TCON |= 0x10; //使能T0
EA = 1; //打开总中断
}
void main(void)
{
WDTCCR = 0x00; //关闭看门狗 必须要关闭,默认是打开的
RCC_init();
GPIO_init();
TIMER_init();
while(1)
{
}
}
void TIMER0_Rpt(void) interrupt TIMER0_VECTOR
{
static u16 m=0;
m++;
if(m == 500)
{
m=0;
P2_2 ^= 0x1;
}
}
许多人应该还不会安装HC-LINK的驱动,论坛也没有发这个教程上来。我也是百度找出来的,共享一下吧。。
HC-LINK_工具用户手册_Ver1.02.pdf
(3.21 MB)
|