5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 2184|回复: 10
打印 上一主题 下一主题

会玩单片机的看过来啊!

[复制链接]
跳转到指定楼层
楼主
发表于 2010-2-20 00:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
会单片机的老大们。今天把一汽油点火器拆了。发现里面有一单片机型号是!12C50BA  8脚的,不知道有会和它通信的人吗?想把程序拷贝出来!或者教教俺也可以。准备先把原理电路搞下来,准备做些点火器造福大家!不知道有支持的吗?我估计成本也就30园够了!有感兴趣的顶一吧!:em15: :em14:

欢迎继续阅读楼主其他信息

沙发
 楼主| 发表于 2010-2-20 00:13 | 只看该作者
不是12C50BA是12C508A哎!也就几十元的东西卖那么多的钱!
3
 楼主| 发表于 2010-2-20 00:27 | 只看该作者
4
发表于 2010-2-20 03:53 | 只看该作者
一般都有防拷贝保护的,只进不出
5
发表于 2010-2-20 09:18 | 只看该作者
你就梦嘛,人家都有加密的
6
发表于 2010-2-20 11:03 | 只看该作者
PIC16系列的破解价格一般在1000以内。12应该也差不多,就是不知道C系的能不能破解。
7
发表于 2010-2-20 13:09 | 只看该作者
破来干嘛?这种小程序编一个一天就行。
8
 楼主| 发表于 2010-2-20 15:13 | 只看该作者
开发环境:MAPLAB V8.36 && HI-TECH C PRO for the PIC10/12/16 MCU family  V9.65

以下是预览:

/*
MCU:PIC12F508
时钟:IntRC
提前角度:20度
触发方式:先正后负(硬件实现后,两个触发信号都为负脉冲)
WDT:开
大约250rpm以下不发火
因为程序很简单,我就不做太多注释了
*/
#include <pic.h>
__CONFIG(MCLRDIS & WDTEN & UNPROTECT & INTRC);
#define uchar unsigned char
#define uint unsigned int
#define FIST GP3      //第一个触点信号
#define SEND GP2    //第二个触点信号
#define FIRE GP0     //发火输出信号
bit hspeed;   //高速标志
bit nofire;   //不发火标志
bit tlfull;   //TMR0最高位为1标志
bit gofire;   //允许发火标志
bit tconfull;  //记时器已满标志
uchar cnt;   //点火延时
uchar tcon;   //记时器
uchar timer;  //存贮TMR0的值
uchar timeh;  //延时的高字节
uchar timel;  //延时的低字节
uint times;   //总时间
uint timed;   //需要延时的时间
uint timex;   //记数器
void main(void)
{
while(1)
{
  GPIO = 0;  //重置一些变量
  TRIS = 0x3E;
  OPTION = 0xCE;
  tcon = 0;
  tlfull = 0;
  tconfull = 0;
  asm("CLRWDT");
  do{NOP();}while(FIST == 0);
  while(FIST);     //等待第一个信号
  TMR0 = 0;
  hspeed == 1 ? FIRE = 1 : FIRE = 0 ;  //如果高速标志为1,则发火
  if(nofire == 0)
  {
   do
   {
    if(TMR0 & 0x80)
    {
     tlfull = 1;
    }
    else if(tlfull)
    {
     tlfull = 0;
     tcon++;
     if(tcon == 0xFF)
     {
      tconfull = 1;
      FIRE = 0;
     }
     if(tcon == timeh && tconfull == 0)
      gofire = 1;
    }
    if(gofire == 1)
    {
     if((TMR0 > timel) || (tcon > timeh))
     {
      FIRE = 1;
      gofire = 0;
     }
    }
   }
   while(SEND);
   FIRE = 1;
   timer = TMR0;
   cnt = 100;
   do{}while(--cnt);
   FIRE = 0;
  }
  else
  {
   do
   {
    if(TMR0 & 0x80)
    {
     tlfull = 1;
    }
    else if(tlfull)
    {
     tlfull = 0;
     tcon++;
     if(tcon == 0xFF)
     {
      tconfull = 1;
      FIRE = 0;
     }
    }
   }
   while(SEND);
   timer = TMR0;
  }
/************************************************************************************/
  NOP();
  nofire = 0;
  hspeed = 0;
  gofire = 0;
  if(tconfull)
  {
   nofire = 1;
   continue;
  }
  if((tlfull == 1) && (timer < 0x80))
  {
   tcon++;
   timer = 0;
  }
  if(tcon > 80)
  {
   nofire = 1;
   timeh = 0;
   continue;
  }
  times = ((tcon * 256) + timer) / 4;
  if(times < 200)
  {
   hspeed = 1;
   timeh = 0;
   continue;
  }
  if(times > 450)
  {
   timeh = 0;
   continue;
  }
  timed = 0;
  for(timex = 200 ; timex < 451 ; timex++)
  {
   timed += 7;
   if(timex == times)
    break;
  }
  
  timeh = timed / 256;
  timel = timed % 256;
  if(timeh == 0)
  {
   gofire = 1;
  }
}
}
自己找的不知道怎么样!
9
发表于 2010-2-20 15:14 | 只看该作者
倒是想的简单,出来了就不止了吧
10
发表于 2010-2-21 19:30 | 只看该作者
读出来了吗?
11
发表于 2010-2-22 12:46 | 只看该作者
这个12C508可能不生产了,不好买,手头只有两片,现多用PIC12F629-675代用。
LZ可把电路绘下来,有时间帮你编一个试试。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /2 下一条

快速回复 返回顶部 返回列表