1.HOLTEK该款单片机还是很不错的,功能基本齐全,就是没有uart,让我很头疼,不过其他的性能不错,尤其是定时器功能可所谓一应俱全。
下面是我实验timer0的基础定时,按照数据手册上的来弄是很简单的:
#include 'HT67F50.h'
#pragma vector isr_14 @ 0x24 //时基中断服务程序 修改
#define Loud _1d_5 //蜂鸣器定义 PB5修改
unsigned long count;
void initial() //IO初始化
{
// _intc1 = 0x02; //关闭时基中断
// _intc0 = 0x01; //允许全局中断和定时器0中断
//**蜂鸣器********************
_pbc &= 0xcf;
_pb &= 0xcf;
//**led********************
_pec = 0x00;
_pe = 0x00;
//*****按键初始化*********
// _cp0c = 0x00;
// _cp1c = 0x00;
// _tmpc0= 0x00;
// _acerl= 0x00; //pa口其他的不能占用
}
void time0_init()
{
_tmpc0=0x00; // time 输出脚不使能TP1A,TP1B_2,TP1B_1,TP1B_0,TP0_1,TP0_0
_tmpc1=0x00; // time 输出脚不使能TP3_1,TP3_0,TP2_1,TP2_0
_tm0c0=0x00; //run,Fsys/4, off
_tm0c1=0xc1; //定时计数模式 CCRA
_tm0al=0xff;
_tm0ah=0x03; //最大为3
_mf0e=1; //多功能中断0使能
_t0ae=1; //TM0 A匹配中断控制位
_emi=1; //开总中断
_t0on=1; //开定时器
}
#pragma vector isr_timer0 @ 0x14 //定时器计数器0
void isr_timer0()
{
_t0af=0; //标志必须清零
if(count>3000)
{
count=0;
_pe=~_pe;
}
else count++;
}
void DelayMs(unsigned long number) //延时
{
unsigned char temp;
for(;number!=0;number--)
{
for(temp=60;temp!=0;temp--);
_clrwdt();
}
}
void main()
{
initial();
time0_init();
while(1)
{
;
}
}