?? print.lst
字號:
C51 COMPILER V7.09 PRINT 07/05/2007 19:59:43 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE PRINT
OBJECT MODULE PLACED IN print.obj
COMPILER INVOKED BY: D:\A\KEIL\C51\BIN\C51.EXE print\print.c BROWSE DEBUG OBJECTEXTEND PRINT(.\print.lst) OBJECT(print.o
-bj)
line level source
1 /****************************************************************
2 * print Lite for 51 (#fal)
3 * printf51簡化版(編譯后代碼體積小)
4 void print_init(void); //串口初始化
5 void print_Str(const char*p); //串口輸出字符串
6 void print_Char(unsigned char c); //串口輸出單個字符
7 void print_Dec(unsigned char n,unsigned char flag); //n:需要轉換的數 flag:是否加回車
8 void print_Hex(unsigned char n,unsigned char flag); //串口輸出16進數
9 * 占用串行口中斷
10 * http://www.newmsg.com/bbs
11 ****************************************************************/
12
13 #include "print.h"
14
15 #ifdef PRINT_USE
16
17 char *pUART; //字符串指針
18 unsigned char uRxUART;
19
20 void UART_INT(void) interrupt 4
21 {
22 1 if (RI)
23 1 { //無線串口代碼
24 2 uRxUART = SBUF;
25 2 SBUF = uRxUART;
26 2 uRxUART = '\0';
27 2 pUART=&uRxUART;
28 2 RI = 0;
29 2 }
30 1 else //TI
31 1 {
32 2 TI=0; //發送中斷標志位(SCON)
33 2 if (*pUART != '\0')
34 2 {
35 3 SBUF = *pUART;
36 3 pUART++;
37 3 }
38 2 else pUART=0; //不會啟動下一次發送
39 2 }
40 1 }
41
42 void print_Str(const char*p)
43 {
44 1 pUART=p;
45 1 TI=1;
46 1 while (pUART!=0); //遇到 '\0',輸出完畢
47 1 }
48
49 #ifdef PRINT_CHAR
50 void print_Char(unsigned char c)
51 {
52 1 SBUF = c;
53 1 c = '\0';
54 1 pUART=&c;
C51 COMPILER V7.09 PRINT 07/05/2007 19:59:43 PAGE 2
55 1 while (pUART!=0);
56 1 }
57 #endif
58
59 #define DEC_MAX 6
60 #ifdef PRINT_DEC
void print_Dec(unsigned char n,unsigned char flag) //n:需要轉換的數 flag:回車標志符
{
unsigned char c[DEC_MAX+1];
unsigned char i;
c[DEC_MAX] = '\0';
i=DEC_MAX-1;
do
{
c[i]=n%10+48;
i--;
n=n/10;
}while (n!=0);
print_Str(c+i+1);
print_Str(" ");
if (flag!=0) print_Str("\n\r");
}
#endif
78
79 #ifdef PRINT_HEX
80 void print_Hex(unsigned char n,unsigned char flag)
81 {
82 1 unsigned char c[DEC_MAX+1];
83 1 unsigned char i;
84 1 c[DEC_MAX] = '\0';
85 1 i=DEC_MAX-1;
86 1 do
87 1 {
88 2 c[i]= (n&0x0f) >9? (n&0x0f)+87 : (n&0x0f)+48;
89 2 i--;
90 2 n=n>>4;
91 2 }while(n!=0);
92 1 if (i==DEC_MAX-2)
93 1 {
94 2 c[i]='0';
95 2 i--;
96 2 }
97 1 c[i]='x';
98 1 c[i-1]='0';
99 1 print_Str(c+i-1);
100 1 print_Str(" ");
101 1 if (flag!=0) print_Str("\n\r");
102 1 }
103 #endif
104
105
106 //<--串口初始化-->
107 void print_init(void)
108 {
109 1 SCON = 0x40; //串行口控制寄存器SCON 工作方式1: 10位UART 以定時器T1作為波特率發生器
110 1 TMOD = 0x21; //定時/計數控制器 T1:自動重裝 T0:16位定時器
111 1 TH1 = 0xfd; //波特率9600
112 1 TL1 = 0xfd;
113 1 ET1 = 0; //T1 中斷禁用
114 1 ES = 1; //串行中斷允許
115 1 EA = 1; //所有中斷允許
116 1 PS = 1; //串口中斷高優先
C51 COMPILER V7.09 PRINT 07/05/2007 19:59:43 PAGE 3
117 1 REN = 1;
118 1 TR1 = 1; //T1啟動
119 1 }
120 #endif //PRINT_USE
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 253 ----
CONSTANT SIZE = 5 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 8
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 + -