|
本帖最后由 wang479871 于 2014-7-28 17:07 编辑
由于每次研发既要考虑到单片机的ROM,又要考虑到单片机的成本,所以每次产品选型,选了几天后,最终还是会把目光落在STM8S003F3上。
这次需要的功能很简单,但是需要稳定,咬一咬牙,还是选用PIC12F509。
好不容易画了几天时间才点亮一个LED。现在需要用到定时器,无奈,PIC12F509的定时器只能用查询的方式定时,是没有定时中断的(这是我个人的见解,不知对否)。
现在碰到的问题是:PIC12F509烧录一个定时程序,用逻辑分析仪来测试周期,可是发现:单片机每次上电后,所定时的时间都是不一样,最大的有接近于△t=0.1ms。
一下这是我的程序:
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
#define Cap_V GP2
#define LED GP4
__CONFIG(0x0fea); //也可以在编译环境里设置,打开《PIC12F508_509.pdf》第42页,会有"Special Fetures Of The CPU",配置位
uint Data_Code_Valu=0; //10bit的编码,最大值1024
uchar Data_Code_Temp[10]; //把编码值分解成10bit二进制,Data_Code_Temp[0]是最低位,但是先发射最低位
uchar Count_0_18ms=0; //每隔0.18ms计数一次
//初始化函数
void init()
{
TRIS=0X00; //全部输出
OPTION=0X00; //设置所有I/O走做普通I/O口
TMR0 = 56;
}
void main()
{
uchar i;
init();
while(1)
{
if(TMR0 > 150)
{
TMR0 = 56;
if(i)
{
i = 0;
LED = 1;
}
else
{
i = 1;
LED = 0;
}
}
}
}
重新上电,测得定时间隔为0.170ms
再次重新上电,测得定时间隔为0.221ms
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|