找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4946|回复: 17
收起左侧

at89c2051程序能读出来么

  [复制链接]
ID:201665 发表于 2018-12-30 07:55 | 显示全部楼层 |阅读模式
大家好,我的单片机里有个小程序,就是计数用的然后直接驱动数码管显示速度,里面的数码管笔画C端口常亮了,不能够熄灭了,能否将程序读出来,改动一下,谢谢大家!
IMG_20181228_121528.jpg
回复

使用道具 举报

ID:375250 发表于 2018-12-30 09:21 | 显示全部楼层
发下图和你写的程序
回复

使用道具 举报

ID:201665 发表于 2018-12-30 11:07 来自手机 | 显示全部楼层
15332135378 发表于 2018-12-30 09:21
发下图和你写的程序

不会写程序,刚绘了一下草图,一会发图片。这个就是计数器功能。
回复

使用道具 举报

ID:449566 发表于 2018-12-30 11:11 | 显示全部楼层
如果能将程序读出来,还可以改动一下。这样的单片机换作你,你敢用吗?
回复

使用道具 举报

ID:202748 发表于 2018-12-30 12:51 | 显示全部楼层
不能读出程序,只能根据实物画出电路图,然后按图和自己所需要的功能重新写程序烧录。
回复

使用道具 举报

ID:382454 发表于 2018-12-30 13:05 来自手机 | 显示全部楼层
这么简单的东东,应该洞洞板都可以接一个出来。
回复

使用道具 举报

ID:201665 发表于 2018-12-30 14:40 来自手机 | 显示全部楼层
univers 发表于 2018-12-30 13:05
这么简单的东东,应该洞洞板都可以接一个出来。

关键是没有程序。
回复

使用道具 举报

ID:201665 发表于 2018-12-30 14:42 | 显示全部楼层
这个是原理图,程序好写吗?
mmexport1546149082882.jpg
IMG_20181230_121015.jpg
回复

使用道具 举报

ID:155507 发表于 2018-12-31 10:16 | 显示全部楼层
将at89c2051程序读出来

ws1s.gif

  1. /*
  2.    Easy-Downloader V1.1 for ATMEL 89C2051/4051
  3.    Copyright(c) 1998 By W.Sirichote

  4.    Code for writer board was written by W.Sirichote
  5.    PC code for downloading HEX file was written By Zong
  6. */

  7. #include c:mc518051io.h
  8. #include c:mc518051reg.h

  9. #define xon 0x11
  10. #define xoff 0x13

  11. extern register char cputick;
  12. register int i;
  13. unsigned register char ACC,temp;
  14. register char command;
  15. char *title[] = " Easy-Downloader V1.1 for ATMEL 89C2051/4051"
  16. char *prompt[] = " >"
  17. char *ok[] = " ok"
  18. register int count;

  19. main()
  20. {
  21. /* define ASM EQU for assembly interfacing */
  22.   asm"LM317 EQU $b5";
  23.   asm"LE    EQU $b7";
  24.   asm"prog  EQU $b2";
  25.   asm"rdy   EQU $b3";
  26.   asm"xtal  EQU $b4";
  27.   asm"p10  EQU $90";
  28.   asm"p11  EQU $91";
  29.   asm"p12  EQU $92";
  30.   asm"p13  EQU $93";
  31.   asm"p14  EQU $94";

  32.   cputick = 0;
  33.   i = 0;
  34.   count = 0;
  35.   serinit(9600);
  36.   getch();
  37.   putstr(*title);
  38.   asm " clr LE";
  39.   initpowerup();
  40.   sendprompt();

  41.   while(1)
  42.   {
  43.     while ( cputick < 1)
  44.     ;
  45.     cputick = 0;
  46. /* run the following tasks every 10 ms */
  47.     getcommand();
  48.     prompting();
  49.     erase();
  50.     write();
  51.     read();
  52.     lock();
  53.     setcounter();
  54.     }
  55. }


  56. getnum()

  57. {
  58.     char s[6]; /*  put to global variables instead five characters plus terminator */
  59.     char c;
  60.     int i;
  61.     c = 0;
  62.     for (i = 0; c != 10; i++)
  63.     {
  64.         putch(xon);
  65.         c = getch();
  66.         s[i] = c;
  67.     }
  68.   s[i] = '';
  69.         if (i==0)
  70.         return (-1);
  71.         else
  72.         return (_atoi(s));

  73. }

  74.   getcommand()
  75. {

  76.     if ((SCON & 0x01) != 0)
  77.         command = getch();
  78.     else command = -1;             /* no cammand has entered */
  79. }

  80. char getconsole()
  81. {

  82.     if ((SCON & 0x01) != 0)
  83.   return(getchr());           /* use getchr() instead,ie. no echo */
  84.     else return(-1);
  85. }

  86. putok()
  87. {
  88.     putstr(*ok);
  89.     sendprompt();
  90. }

  91. sendprompt()
  92. {
  93.     putstr(*prompt);
  94. }

  95. prompting()

  96. {
  97.     if (command == '')
  98.        {
  99.         putstr(*title);
  100.         sendprompt();
  101.        }
  102. }

  103. pulseLE()
  104. {
  105.     delay(1);
  106.     asm" setb LE";
  107.     delay(1);
  108.     asm" clr LE";
  109.     delay(1);
  110. }

  111. erase()
  112. {
  113.     if (command == 'e')
  114.     {
  115.     asm {
  116.      setb p12     /* set erase mode */
  117.      clr  p11
  118.      clr  p10
  119.        }
  120.     pulseLE();
  121.     asm {
  122.         clr p14
  123.         clr LM317
  124.         }
  125.     pulseLE();
  126.     delay(100);    /* raise program supply up to 12V */
  127.     for (i=0; i < 10; i++) /* erase entire PEROM array (2kB) */
  128.     {
  129.     asm " clr prog";
  130.     delay(10);           /* 10 ms prog pulse */
  131.     asm " setb prog";
  132.     delay(1);
  133.     }

  134.     initpowerup();    /* reset internal address counter to 000h */
  135.     putok();
  136.     }
  137. }

  138. write()
  139. {
  140.     if (command == 'w')
  141.     {
  142.     asm {
  143.      clr  p12          /* set program mode */
  144.      setb p11
  145.      setb p10
  146.        }
  147.     pulseLE();
  148.     asm {
  149.       clr p14
  150.       clr LM317
  151.         }
  152.     pulseLE();
  153.     delay(100);       /* rise supply up 12V */
  154.     asm" clr IE.7";
  155.     for (i = 0; i < count; i++)
  156.     {                 /* use XON & XOFF flow control */
  157.     putch(xon);       /* send XON */
  158.     P1 = getchr();
  159.     putch(xoff);       /* send XOFF */
  160.     pulseProg();
  161.     /*
  162.     asm " clr prog";
  163.     asm " nop";
  164.     asm " nop";
  165.     asm " nop";
  166.     asm " nop";           /* pulse prog ~4 microsecond */
  167.     asm " setb prog"; */
  168.     asm " nop";
  169.     asm " jnb rdy,*";
  170.     asm " nop";

  171.     asm " setb xtal";
  172.     delay (1);
  173.     asm " clr xtal";
  174.     }
  175.     asm" setb IE.7";
  176.     asm " setb LM317";
  177.     asm " setb p14";
  178.     pulseLE();
  179.     putok();
  180.     }
  181. }

  182. read()    /* read code with the number of bytes set by 's' command */
  183. {
  184.     if (command=='r')
  185.     {
  186.         initpowerup();
  187. /*  delay(100);   */
  188.         asm{
  189.             clr  prog
  190.             clr  p12
  191.             clr  p11
  192.             setb p10
  193.            }
  194.         pulseLE();
  195.   for(i = 0; i < count; i++)
  196.         {
  197.         asm" setb prog";
  198.         asm" mov P1,#$FF";   /* put FF before read back */
  199.    delay(1);
  200.    printA();        /* read in HEX */
  201.         asm" setb xtal";  /* next address */
  202.   delay(1);
  203.         asm" clr xtal";
  204. /*  chkXOFF();  */      /* flow controlled by XON/XOFF */
  205.   }
  206.         putok();

  207.     }
  208. }

  209. printA()
  210. {
  211.       ACC = P1;
  212.       ACC >>= 4;  /* shift right 4 bits */
  213.       putHEX();
  214.       ACC = P1&15;
  215.       putHEX();

  216. }

  217. putHEX()
  218. {
  219.      if (ACC > 9)
  220.         putch(ACC+55);
  221.       else putch(ACC+48);
  222. }

  223. /*
  224. chkXOFF()     /* use XON and XOFF for controlling flow with host */

  225. {
  226.       if(getconsole() == xoff)
  227.          {
  228.             do;
  229.             while(getconsole() != xon);
  230.          }
  231. }
  232. */


  233. lock()  /* only protection mode 3,i.e., disabled further
  234. program and verify, can be programmed */

  235. {
  236.     if (command == 'l')
  237.     {
  238.         P1 = 0x07;
  239.         pulseLE();
  240.         asm " clr LM317";
  241.         delay(100);
  242.         pulseProg();

  243.         P1 = 0x06;
  244.         pulseLE();
  245.         pulseProg();
  246.       
  247.         asm " setb p14";
  248.         asm " setb LM317";
  249.         pulseLE();
  250.         putok();
  251.     }

  252. }


  253. setcounter()

  254. {
  255.     if (command == 's')
  256.     {
  257.         count = getnum();
  258.         putok();
  259.     }
  260. }

  261. /*
  262. printhelp()
  263. {
  264.     if (command == '?')
  265.     {
  266.         putstr(" e  erase");
  267.         putstr(" rb read BIN");
  268.         putstr(" rh read HEX");
  269.         putstr(" w  write");
  270.         putstr(" l  lock");
  271.      }
  272.         putok();

  273. }
  274. */

  275. pulseProg()

  276. {
  277.         asm " clr prog";
  278.         asm " nop";
  279.         asm " nop";
  280.         asm " nop";
  281.         asm " setb prog";

  282. }

  283. initpowerup()
  284. {
  285.     asm{
  286.   clr  prog
  287.         clr  xtal
  288.         setb LM317
  289.         setb p14
  290.         setb rdy
  291.         }
  292.     pulseLE();
  293.     delay(100);
  294.     asm{
  295.   setb prog
  296.         clr p14
  297.         setb LM317
  298.     }
  299.     pulseLE();
  300.     delay(100);

  301. }

  302. time1ms()    /* 1 ms delay with XTAL 11.0592MHz */
  303. {
  304.     int i;
  305.     for (i = 0; i < 8 ; i++)
  306.     ;
  307. }

  308. delay(n)      /* do nothing n*1ms */
  309. int n;
  310. {
  311.     int i;
  312.     for (i=0; i< n ; i++)
  313.     time1ms();

  314. }
复制代码


http://www点shrubbery点net/~heas/willem/kmitl/easy.htm

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:213173 发表于 2018-12-31 14:52 | 显示全部楼层
用通用编程器G540可以复制AT89C2051内部程序,你这种非常简单的程序通常不会加密。
无标题.jpg


回复

使用道具 举报

ID:201665 发表于 2019-1-1 22:41 | 显示全部楼层
wulin 发表于 2018-12-31 14:52
用通用编程器G540可以复制AT89C2051内部程序,你这种非常简单的程序通常不会加密。

你好 ,这个单片机程序不是不能读出来吗?
回复

使用道具 举报

ID:449525 发表于 2019-1-2 08:26 | 显示全部楼层
你不加密的话,应该是可以读出hex格式文件,然后反汇编试试
具体没操作过。stc官网上加密求人破解,在加强自己机制。
回复

使用道具 举报

ID:426861 发表于 2019-1-2 09:24 | 显示全部楼层
看图板子太旧了,不熄灭可能是硬件有问题,你先确定一下
回复

使用道具 举报

ID:201665 发表于 2019-1-2 12:27 来自手机 | 显示全部楼层
天风情 发表于 2019-1-2 09:24
看图板子太旧了,不熄灭可能是硬件有问题,你先确定一下

硬件都查了,就几个上拉电阻,阻值都正常。
回复

使用道具 举报

ID:358930 发表于 2019-1-2 22:56 来自手机 | 显示全部楼层
limao1025 发表于 2019-1-2 12:27
硬件都查了,就几个上拉电阻,阻值都正常。

这几个功能,自己重写吧?我就喜欢把旧单片程序重写。
回复

使用道具 举报

ID:460657 发表于 2019-1-3 09:30 | 显示全部楼层
这几个功能,自己重写吧?我就喜欢把旧单片程序重写。
回复

使用道具 举报

ID:201665 发表于 2019-1-5 10:01 来自手机 | 显示全部楼层
鱼鱼鱼鱼鱼鱼yu 发表于 2019-1-3 09:30
这几个功能,自己重写吧?我就喜欢把旧单片程序重写。

关键是不会写?要是会写,就直接开干了!
回复

使用道具 举报

ID:168911 发表于 2019-4-26 21:31 来自手机 | 显示全部楼层
limao1025 发表于 2019-1-5 10:01
关键是不会写?要是会写,就直接开干了!

你这个意义不大,还没有储存块。断电就没有了,重新做一个好了
回复

使用道具 举报

ID:428115 发表于 2019-4-27 10:46
单片机破解

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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