📄 newprint.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 + -