⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newprint.lst

📁 这是我测试串行口打印机的程序
💻 LST
字号:
C51 COMPILER V7.06   NEWPRINT                                                              02/17/2009 10:16:11 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE NEWPRINT
OBJECT MODULE PLACED IN E:\设计与~1\高压模~1\打印机~1\NEWPRINT.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\设计与~1\高压模~1\打印机~1\NEWPRINT.C DB SB OE

stmt level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          #define uint unsigned int
   4          #define uchar unsigned char
   5          sbit BUSY = P3^0;
   6          
   7          uchar ch1[12]={0xd1,0xf5,0xbb,0xaf,0xd0,0xbf,0xb1,0xdc,0xc0,0xd7,0xc6,0xf7};//氧化锌避雷器
   8          uchar ch2[8]={0xb2,0xe2,0xca,0xd4,0xbd,0xe1,0xb9,0xfb};//测试结果
   9          uchar ch3[5]={0xb5,0xe7,0xd1,0xb9,0x3a};//电压
  10          uchar ch4[5]={0xb5,0xe7,0xc1,0xf7,0x3a};//电流
  11          uchar ch5[5]={0xcf,0xb5,0xcd,0xb3,0x3a};//系统
  12          uchar ch6[7]={0xb2,0xe2,0xca,0xd4,0xd4,0xb1,0x3a};//测试员
  13          uchar  dauTmpBuf[6] = {0,0,0x2e,0,0x6b,0x56};//前四个字节为电压三位数含一位小数,后三个字节为kV
  14          uchar  daiTmpBuf[4] = {0,0,0x75,0x41};//前二个字节为电流两位数,后二个字节为uA
  15          uchar  datime[14]={ 0,8,0x8c,1,2,0x8d,2,8,0x8e,1,6,0x3a,2,8};//08年12月28日16:28
  16          
  17          
  18          uchar TmpBuf[7]={2,6,5,0,0,2,5};//电压电流分离的各位数字
  19          uchar Timebuf[10]={0,8,1,2,2,8,1,6,2,8};//读时钟分离出的年月日时分数字
  20          
  21          
  22          void daima() // 转换打印代码
  23          {
  24   1              uchar i;
  25   1              for(i=0;i<2;i++)    //电压数字转换打印内码
  26   1                        dauTmpBuf[i]=TmpBuf[i]|0x30;
  27   1                        dauTmpBuf[3]=TmpBuf[2]|0x30;//电压小数点后一位
  28   1      
  29   1              for(i=5;i<7;i++)   //电流数字转换打印内码
  30   1                      daiTmpBuf[i-5]=TmpBuf[i]|0x30;
  31   1      
  32   1              for(i=0;i<2;i++)   //时间年数字转换打印内码
  33   1                      datime[i]=Timebuf[i]|0x30;
  34   1      
  35   1              for(i=2;i<4;i++)   //时间月数字转换打印内码
  36   1                      datime[i+1]=Timebuf[i]|0x30;
  37   1      
  38   1              for(i=4;i<6;i++)   //时间日数字转换打印内码
  39   1                      datime[i+2]=Timebuf[i]|0x30;
  40   1      
  41   1              for(i=6;i<8;i++)   //时间时数字转换打印内码
  42   1                      datime[i+3]=Timebuf[i]|0x30;
  43   1      
  44   1              for(i=8;i<10;i++)   //时间分数字转换打印内码
  45   1                      datime[i+4]=Timebuf[i]|0x30;
  46   1      }
  47          
  48          /*************串口发送子函数***********/
  49          sprint(unsigned char a)
  50          {
  51   1                      while(BUSY);
  52   1                      SBUF=a;
  53   1                      while(!TI);
  54   1                      TI=0;
  55   1      }
C51 COMPILER V7.06   NEWPRINT                                                              02/17/2009 10:16:11 PAGE 2   

  56          
  57          void dayin()
  58          {
  59   1                              int i;
  60   1                              TH1  = 0xfd;//波特率9600
  61   1                              TL1  = 0xfd;
  62   1                              TMOD = 0x20 ;
  63   1                              SCON = 0x40;//串行口方式1,10位数据,1位起始,8位数据,1位停止
  64   1                        TR1= 1;
  65   1                              ES = 1;
  66   1                              TI = 0;
  67   1      
  68   1                      sprint(0x1b);sprint(0x40);//初始化打印机
  69   1                      sprint(0x1b);sprint(0x63);sprint(0x00);//反向打印
  70   1                      sprint(0x1b);sprint(0x6c);sprint(0x02);//设定左限,居中
  71   1                      sprint(0x1b);sprint(0x38);sprint(0x04);//选择汉字
  72   1      
  73   1                              //打印“氧化锌避雷器”
  74   1                      for(i=0;i<12;i++)  //打印氧化锌避雷器
  75   1                              sprint(ch1[i]);
  76   1                              sprint(0x0d); //回车
  77   1      
  78   1                              //打印“测试结果”
  79   1                              sprint(0x1b);sprint(0x6c);sprint(0x04);//设定左限,居中
  80   1                              for(i=0;i<8;i++)
  81   1                              sprint(ch2[i]);
  82   1                              sprint(0x0d); //回车
  83   1      
  84   1                              sprint(0x1b);sprint(0x6c);sprint(0x00);//设定左限,居左
  85   1                              for(i=0;i<16;i++)
  86   1                              sprint(0x2d);//打印“*********”
  87   1                              sprint(0x0d); //回车
  88   1      
  89   1      
  90   1                      //打印“电压:”
  91   1                      for(i=0;i<5;i++)  //打印“电压”
  92   1                              sprint(ch3[i]);
  93   1      
  94   1                              //打印电压数值
  95   1                              for(i=0;i<6;i++) //打印电压数值
  96   1                              sprint(dauTmpBuf[i]);
  97   1                              sprint(0x0d); //回车
  98   1      
  99   1                              //打印“电流:”
 100   1                      for(i=0;i<5;i++)  //打印“电流”
 101   1                              sprint(ch4[i]);
 102   1      
 103   1                              //打印电流数值
 104   1                              for(i=0;i<4;i++) //打印电流数值
 105   1                              sprint(daiTmpBuf[i]);
 106   1                              sprint(0x0d); //回车
 107   1      
 108   1                              //打印“**********”
 109   1                              for(i=0;i<16;i++)
 110   1                              sprint(0x2d);//打印“*************”
 111   1                              sprint(0x0d); //回车
 112   1      
 113   1                              //打印“系统:”
 114   1                      for(i=0;i<5;i++)  //打印“系统:”
 115   1                              sprint(ch5[i]);
 116   1                              sprint(0x0d); //回车
 117   1      
C51 COMPILER V7.06   NEWPRINT                                                              02/17/2009 10:16:11 PAGE 3   

 118   1                              //打印“测试员:”
 119   1                              for(i=0;i<7;i++) //打印“测试员:”
 120   1                              sprint(ch6[i]);
 121   1                              sprint(0x0d); //回车
 122   1      
 123   1                              sprint(0x1b);sprint(0x36);//选择字符集1
 124   1                              sprint(0x1b);sprint(0x6c);sprint(0x01);//设定左限,居右
 125   1                              for(i=0;i<14;i++) //打印时间
 126   1                              sprint(datime[i]);
 127   1                              sprint(0x0d); //回车
 128   1      
 129   1      
 130   1      
 131   1      
 132   1      }
 133          /**************************************
 134            名称:main
 135            功能:主函数
 136            输入参数:无
 137            输出参数:无
 138          *************************************/
 139          void main()
 140          {
 141   1        daima();
 142   1        dayin();
 143   1      }
C51 COMPILER V7.06   NEWPRINT                                                              02/17/2009 10:16:11 PAGE 4   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


daima. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
ch3. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0000H  5
ch4. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0005H  5
ch5. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    000AH  5
daiTmpBuf. . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    000FH  4
ch6. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0013H  7
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
_sprint. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0007H  -----
  a. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
dauTmpBuf. . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    001AH  6
dayin. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   INT      0004H  2
ES . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ACH  1
TI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0099H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
SBUF . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0099H  1
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
TMOD . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0089H  1
BUSY . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B0H  1
TH1. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008DH  1
Timebuf. . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0020H  10
TmpBuf . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    002AH  7
TL1. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008BH  1
TR1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008EH  1
datime . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0031H  14
ch1. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    003FH  12
ch2. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    004BH  8


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    546    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     83    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -