📄 print.lst
字号:
C51 COMPILER V7.06 PRINT 10/10/2006 14:05:19 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE PRINT
OBJECT MODULE PLACED IN print.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE print.c LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <stdio.h>
2 #include <absacc.h>
3 #include <stdarg.h>
4 #include <./Atmel/at89x52.h>
5 #include "source.h"
6 unsigned char xsatouc(unsigned char cht){
7 1 unsigned char xtemp;
8 1 if((cht>='0')&&(cht<='9')){
9 2 xtemp=cht-48;
10 2 }
11 1 else if((cht>='a')&&(cht<='f')){
12 2 xtemp=cht-87;
13 2 }
14 1 else if((cht>='A')&&(cht<='F')){
15 2 xtemp=cht-55;
16 2 }
17 1 else{
18 2 xtemp=0xff;
19 2 }
20 1 return xtemp;
21 1 }
22 unsigned char xatouc(unsigned char *s){
23 1 unsigned char xa=0;
24 1 xa=xsatouc(s[0]);
25 1 if(s[1]!=0){
26 2 xa<<=4;
27 2 xa|=xsatouc(s[1]);
28 2 }
29 1 return xa;
30 1 }
31 unsigned char *itos(unsigned int arg){
32 1 static unsigned char buf[6];
33 1 unsigned char i;
34 1 unsigned int cvt;
35 1 i=0;
36 1 cvt=arg;
37 1 while(1){
38 2 i++;
39 2 buf[i]=0x30+cvt%10;
40 2 cvt /=10;
41 2 if(cvt==0){
42 3 break;
43 3 }
44 2 }
45 1 buf[0]=i;
46 1 return buf;
47 1 }
48 unsigned char *itosx(unsigned int arg){
49 1 static unsigned char buf[5];
50 1 unsigned char i,n;
51 1 unsigned int cvt;
52 1 cvt=arg;
53 1 for(i=1;i<5;i++){
54 2 n=cvt%16;
55 2 if(n<10){//0-9
C51 COMPILER V7.06 PRINT 10/10/2006 14:05:19 PAGE 2
56 3 buf[i]=0x30+n;
57 3 }
58 2 else{//A-F
59 3 buf[i]=55+n;//0x41+n-10
60 3 }
61 2 cvt >>=4;
62 2 }
63 1 buf[0]=4;
64 1 return buf;
65 1 }
66 unsigned char *ctosx(unsigned char arg){
67 1 static unsigned char buf[3];
68 1 unsigned char i,n;
69 1 unsigned char cvt;
70 1 cvt=arg;
71 1 for(i=1;i<3;i++){
72 2 n=cvt%16;
73 2 if(n<10){//0-9
74 3 buf[i]=0x30+n;
75 3 }
76 2 else{//A-F
77 3 buf[i]=55+n;//0x41+n-10
78 3 }
79 2 cvt >>=4;
80 2 }
81 1 buf[0]=2;
82 1 return buf;
83 1 }
84 unsigned char *ltos(unsigned long arg){
85 1 static unsigned char buf[11];
86 1 unsigned char i;
87 1 unsigned long cvt;
88 1 i=0;
89 1 cvt=arg;
90 1 while(1){
91 2 i++;
92 2 buf[i]=0x30+cvt%10;
93 2 cvt /=10;
94 2 if(cvt==0){
95 3 break;
96 3 }
97 2 }
98 1 buf[0]=i;
99 1 return buf;
100 1 }
101 void putchark(unsigned char c){
102 1 dst_buf[dst_head]=c;
*** ERROR C202 IN LINE 102 OF PRINT.C: 'dst_head': undefined identifier
103 1 dst_head ++;
*** ERROR C202 IN LINE 103 OF PRINT.C: 'dst_head': undefined identifier
104 1 dst_head %=DST_LEN;
*** ERROR C202 IN LINE 104 OF PRINT.C: 'dst_head': undefined identifier
105 1 }
106 void print_char(unsigned char c){
107 1 dst_buf[dst_head]=c;
*** ERROR C202 IN LINE 107 OF PRINT.C: 'dst_head': undefined identifier
108 1 dst_head ++;
*** ERROR C202 IN LINE 108 OF PRINT.C: 'dst_head': undefined identifier
109 1 dst_head %=DST_LEN;
*** ERROR C202 IN LINE 109 OF PRINT.C: 'dst_head': undefined identifier
110 1 TDBdata_over=0;
*** ERROR C202 IN LINE 110 OF PRINT.C: 'TDBdata_over': undefined identifier
C51 COMPILER V7.06 PRINT 10/10/2006 14:05:19 PAGE 3
111 1 TI=1;
112 1 }
113 unsigned char printk (const char *fmtstr /* format string */
114 ,...){ /* additional arguments */
115 1 unsigned char *p;
116 1 unsigned char i;
117 1 unsigned char *ptr;
118 1 unsigned char arg_len;
119 1 va_list num_ptr;
120 1 static unsigned int argint;
121 1 static unsigned char argchar;
122 1 static unsigned long arglong;
123 1 va_start(num_ptr,fmtstr);
124 1 p=fmtstr;
125 1 arg_len=0;
126 1 while(*p!=0){
127 2 if(*p=='%'){
128 3 p++;
129 3 if(*p=='d'){// %d
130 4 argint=va_arg(num_ptr,int);
131 4 arg_len++;
132 4 ptr=itos(argint);
133 4 for(i=ptr[0];i>=1;i--){
134 5 putchark(ptr[i]);
135 5 }
136 4 }
137 3 else if(*p=='c'){// %c
138 4 argchar=va_arg(num_ptr,char);
139 4 arg_len++;
140 4 ptr=itos((unsigned int )argchar);
141 4 for(i=ptr[0];i>=1;i--){
142 5 putchark(ptr[i]);
143 5 }
144 4 }
145 3 else if(*p=='x'){// %x unsigned int
146 4 argint=va_arg(num_ptr,int);
147 4 arg_len++;
148 4 ptr=itosx(argint);
149 4 for(i=ptr[0];i>=1;i--){
150 5 putchark(ptr[i]);
151 5 }
152 4 }
153 3 else if(*p=='b'){// %bx unsigned char
154 4 p++;
155 4 if(*p=='x'){
156 5 argchar=va_arg(num_ptr,char);
157 5 arg_len++;
158 5 ptr=ctosx(argchar);
159 5 for(i=ptr[0];i>=1;i--){
160 6 putchark(ptr[i]);
161 6 }
162 5 }
163 4 }
164 3 else if(*p=='s'){//%s
165 4 ptr=va_arg(num_ptr,char *);
166 4 arg_len++;
167 4 for(i=0;i<100;i++){//max string len is 100.
168 5 if(*ptr=='\0'){
169 6 break;
170 6 }
171 5 putchark(*ptr);
172 5 ptr++;
C51 COMPILER V7.06 PRINT 10/10/2006 14:05:19 PAGE 4
173 5 }
174 4 }
175 3 else if(*p=='l'){//%l
176 4 arglong=va_arg(num_ptr,long);
177 4 arg_len++;
178 4 ptr=ltos(arglong);
179 4 for(i=ptr[0];i>=1;i--){
180 5 putchark(ptr[i]);
181 5 }
182 4 }
183 3 }
184 2 else if(*p=='\n'){
185 3 putchark(0x0d);/* output CR */
186 3 putchark(*p);//0x0a
187 3 }
188 2 else{
189 3 putchark(*p);
190 3 }
191 2 p++;
192 2 }
193 1 va_end(num_ptr);
194 1 if(TDBdata_over){
*** ERROR C202 IN LINE 194 OF PRINT.C: 'TDBdata_over': undefined identifier
195 2 TDBdata_over=0;
*** ERROR C202 IN LINE 195 OF PRINT.C: 'TDBdata_over': undefined identifier
196 2 TI=1;
197 2 }
198 1 return arg_len;
199 1 }
C51 COMPILATION COMPLETE. 0 WARNING(S), 9 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -