?? putchar.lst
字號:
C51 COMPILER V7.10 PUTCHAR 01/02/2005 16:12:27 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE PUTCHAR
OBJECT MODULE PLACED IN .\PUTCHAR.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE ..\SourceFile\PUTCHAR.C LARGE BROWSE DEBUG OBJECTEXTEND PRINT
-(.\PUTCHAR.lst) OBJECT(.\PUTCHAR.obj)
line level source
1 /***********************************************************************/
2 /* This file is part of the C51 Compiler package */
3 /* Copyright KEIL ELEKTRONIK GmbH 1990 - 2002 */
4 /***********************************************************************/
5 /* */
6 /* PUTCHAR.C: This routine is the general character output of C51. */
7 /* You may add this file to a uVision2 project. */
8 /* */
9 /* To translate this file use C51 with the following invocation: */
10 /* C51 PUTCHAR.C <memory model> */
11 /* */
12 /* To link the modified PUTCHAR.OBJ file to your application use the */
13 /* following Lx51 invocation: */
14 /* Lx51 <your object file list>, PUTCHAR.OBJ <controls> */
15 /* */
16 /***********************************************************************/
17
18 #include <reg51.h>
19
20 #define XON 0x11
21 #define XOFF 0x13
22
23
24 /*
25 * putchar (full version): expands '\n' into CR LF and handles
26 * XON/XOFF (Ctrl+S/Ctrl+Q) protocol
27 */
28 #if 0 /*原為此函數*/
TI=1;
char putchar (char c)
{
if (c == '\n')
{
if (RI)
{
if (SBUF == XOFF)
{
while (SBUF != XON)
{
RI = 0;
while (!RI);
}
RI = 0;
}
}
while (!TI);
TI = 0;
SBUF = 0x0d; /* output CR */
}
if (RI)
{
if (SBUF == XOFF)
{
while (SBUF != XON)
C51 COMPILER V7.10 PUTCHAR 01/02/2005 16:12:27 PAGE 2
{
RI = 0;
while (!RI);
}
RI = 0;
}
}
while (!TI);
TI = 0;
return (SBUF = c);
}
#endif
67
68
69 #if 0 /* comment out versions below 老版本,已不用*/
/*
* putchar (basic version): expands '\n' into CR LF
*/
char putchar (char c)
{
if (c == '\n')
{
while (!TI);
TI = 0;
SBUF = 0x0d; /* output CR */
}
while (!TI);
TI = 0;
return (SBUF = c);
}
/*
* putchar (mini version): outputs charcter only
*/
char putchar (char c)
{
while (!TI);
TI = 0;
return (SBUF = c);
}
#endif
98
99 #if 1
100 /******************************************************************************************
101 *函數名: putchar
102 *參數: c
103 *返回值: 無
104 *描述: 為配合UART中斷接收而修改的函數,主要修改TI和ES
105 *編寫: 王紹偉
106 *版本信息: V1.0 2003年8月15日
107 ******************************************************************************************/
108 char putchar (char c)
109 {
110 1 bit bES;
111 1 bES=ES; /*r暫存ES內容*/
112 1 ES=0; /*r若 想利用TI標志位,就必須先禁止串口中斷,否則會沖突*/
113 1 if (c == '\n') /*r如果c為換行*/
114 1 {
115 2 SBUF = 0x0d;
116 2 while(!TI); /*r當TI為0時一直在循環*/
C51 COMPILER V7.10 PUTCHAR 01/02/2005 16:12:27 PAGE 3
117 2 TI=0; /*r當TI為1時跳出循環,再將TI置為0*/
118 2 }
119 1 SBUF = c;
120 1 while(!TI);
121 1 TI=0;
122 1 ES=bES; /*待字符發送完畢后,再恢復串口中斷允許*/
123 1 return(1);
124 1 }
125 #else
char putchar (char c) /*控制PLD輸出為57.6K,在6個clock下*/
{
unsigned char data i;
unsigned char data j;
j = c;
EA = 0;
UART_OUT = 1;
UART_OUT = 0; /*START*/
i = 3;
while(i--);
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
UART_OUT = j >> 0; /*D0*/ //35
i = 3;
while(i--);
_nop_();
_nop_();
_nop_();
UART_OUT = j >> 1; /*D1*/ //35
i = 3;
while(i--);
_nop_();
UART_OUT = j >> 2; /*D2*/ //34
i = 3;
while(i--);
_nop_();
UART_OUT = j >> 3; /*D3*/ //35
i = 3;
while(i--);
_nop_();
_nop_();
_nop_();
UART_OUT = j >> 4; /*D4*/ //35
i = 3;
while(i--);
C51 COMPILER V7.10 PUTCHAR 01/02/2005 16:12:27 PAGE 4
_nop_();
UART_OUT = j >> 5; /*D5*/ //34
i = 3;
while(i--);
_nop_();
UART_OUT = j >> 6; /*D6*/ //35
i = 3;
while(i--);
UART_OUT = j >> 7; /*D7*/ //35
i = 3;
while(i--);
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
UART_OUT = 1; /*STOP*/ //35
delay(10);
EA =1;
return(1);
}
#endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 32 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -