芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

芯片复制51单片机printf函数的说明

  1. 芯片复制#include <reg51.h>

  2. 芯片复制#define XON  0x11             /*串口流控制符  启动*/
  3. 芯片复制#define XOFF 0x13            /*串口流控制符  中断*/


  4. /*
  5. * putchar (full version):  expands '\n' into CR LF and handles     /*完整版 每次发送数据都要检查sbuf是否有中断信号 */
  6. *                          XON/XOFF (Ctrl+S/Ctrl+Q) protocol             /* XON启动 XOFF中断      通信协议*/                                                         
  7. */
  8. char putchar (char c)  {

  9.   if (c == '\n')  {          /*判断是否是换行符的原因,是因为字符串的标准格式是末尾为\r(回车符)\n(换行符)这两个字符*/
  10.     if (RI)  {                          /*判断接收标识符是否为1,若为1则说明SBUF接受到了信息*/
  11.       if (SBUF == XOFF)  {       /*判断SBUF中的信息是否为中断信号  是则执行以下程序*/
  12.         do  {
  13.           RI = 0;                          /*将接收标识符置1 可以继续接收信息*/
  14.           while (!RI);                    /*判断是否接收到了信息,是则往下循环*/
  15.         }
  16.         while (SBUF != XON);     /*判断接收的信息是否为启动信息,是则退出循环,不是继续循环*/
  17.         RI = 0;                          /*将接受标识符置1 可以继续接收信息*/
  18.       }
  19.   }</div><div>/*只要c是换行符,最终都要执行这里   判断发送标识符是否为1,只有为1才往下执行,这点非常重要调用printf函数时,必须将TI置1*/</div><div>while (!TI);</div><div>  TI = 0;                                         /*将TI置0 准备发送数据*/
  20.   SBUF = 0x0d;                         /* output CR  */          /*  发送回车符*/
  21.   }
  22.   if (RI)  {                           /*下面的if函数又是判断SBUF中是否接收了中断信号与上面的一样*/
  23.     if (SBUF == XOFF)  {
  24.       do  {
  25.         RI = 0;
  26.         while (!RI);
  27.       }
  28.       while (SBUF != XON);
  29.       RI = 0;
  30. <div>    }</div><div>while (!TI);      /*判断发送标识符是否为1*/
  31. TI = 0; /*将TI置0 准备发送数据*/
  32.   return (SBUF = c);                                /*发送字符c*/
  33. }



  34. #if 0         // comment out versions below

  35. /*
  36. * putchar (basic version): expands '\n' into CR LF                  /*精简版*/
  37. */
  38. char putchar (char c)  {              
  39.   if (c == '\n')  {             /*还是判断字符c是不是换行符*/
  40.     while (!TI);                  /*判断TI是否置1     为1向下执行*/
  41.     TI = 0;
  42.     SBUF = 0x0d;                         /* output CR  */       /* c是换行符先发送回车符*/
  43.   }
  44.   while (!TI);                                /*又是判断TI是否为1   为1向下执行*/
  45.   TI = 0;                                     /*将TI置0 准备发送数据*/
  46.   return (SBUF = c);                    /*发送字符c*/
  47. }


  48. /*
  49. * putchar (mini version): outputs charcter only                    /*迷离版   少了判断字符c是否为换行符的步骤 */
  50. */
  51. char putchar (char c)  {
  52.   while (!TI);                                           /*判断TI是否置1     为1向下执行*/                     
  53.   TI = 0;                                                  /*将TI置0 准备发送数据*/
  54.   return (SBUF = c);/*发送字符c*/
  55. }                                                         



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信