📄 s.lst
字号:
C51 COMPILER V8.02 S 05/20/2008 13:57:43 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE S
OBJECT MODULE PLACED IN s.OBJ
COMPILER INVOKED BY: D:\软件安装路径\C51\BIN\C51.EXE s.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //------------------------------------------------------------------------
2 #include "AT16C554.H"
*** WARNING C318 IN LINE 2 OF s.c: can't open file 'AT16C554.H'
3 //--------------------------------------------------------------------------------------------------
4 code Uint PORTAddrTABLE[PortNumber]={STARTADDR_SERIAL1,
*** ERROR C129 IN LINE 4 OF S.C: missing ';' before 'PORTAddrTABLE'
5 STARTADDR_SERIAL2,
6 STARTADDR_SERIAL3,
7 STARTADDR_SERIAL4}; //串口端口地址映射表
8
9
10 xdata TCommHandle CommDevice[PortNumber];
11 sbit reset_16c554 = P1^4; //ST16C554 复位控制线
12 //---------------------------------------------------------------------------------------------------
13 // Define Private Faction
14 //-----------------------------------------------------------------------------------------------------
15
16 bool ReadPortRecBuf(uchar Port,Uchar *Byte);
17 bool WritePortSendBuf(uchar Port,Uchar Byte);
18 void Port_open(Uchar PortID,Uint Baud);
19
20 //-------------------------------------------------------------------------
21 // Define Public Faction
22 //-------------------------------------------------------------------------
23
24 bool Init_16c554(void);
25 void Port_open(Uchar PortID,Uint Baud);
26 //void Port_open(Uchar PortID,int Baud,Uchar DataBitNum,Uchar Parit,Uchar Stop);
27 void Port_close(Uchar PortID);
28 int Port_Receive(Uchar PortID,void *Buffer,int Count);
29 int Port_Send(Uchar PortID,void *Buffer,int Count);
30
31
32
33 //---------------------------------------------------------------------------------------------
34 // Public Faction Code
35 //---------------------------------------------------------------------------------------------
36
37
38
39
40 //---------------------------------------------------------------------------------------------
41 // 初始化ST16C554
42 //---------------------------------------------------------------------------------------------
43 bool Init_16c554(void)
44 {
45 uchar xdata *ptr;
46 uchar i=Init_16c554_Count;
47 bool Result=false;
48
49 while(--i) // 复位10次不成功,则返回出错
50 {
51 _nop_();
52 reset_16c554 = FREE_RESET;
53 ms_delay(5);
C51 COMPILER V8.02 S 05/20/2008 13:57:43 PAGE 2
54 reset_16c554 = RESET; // 复位16C554
55 ms_delay(10); // 延时1毫秒
56 reset_16c554 = FREE_RESET;
57 ms_delay(10);
58 ptr = STARTADDR_SERIAL1+SPR; // 通道1临时寄存器
59 *ptr = 0xaa; // 写测试值到临时寄存器
60 _nop_();
61 _nop_();
62 if(*ptr == 0xaa)
63 {
64 Result=true;
65 break;
66 };//end if
67 };//end while
68 for(i=0;i<PortNumber;i++) CommDevice[i].RAMAddress_Map=PORTAddrTABLE[i];
69
70 return Result;
71 }
72 //---------------------------------------------------------------------------------------------
73 // 打开串口
74 //---------------------------------------------------------------------------------------------
75 void Port_open(Uchar PortID,Uint Baud)
76 {
77 uchar xdata *ptr;
78
79 ptr = CommDevice[PortID].RAMAddress_Map; // 取端口的基地址
80 *(ptr+LCR) = LCR_DIV_EN; // 允许发送波特率
81 *(ptr+DLM) = (uchar)(Baud>>8);
82 *(ptr+DLL) = (uchar)Baud; // 设置默任波特率为19200
83 *(ptr+LCR) = LCR_WORD_LEN8|LCR_STOP_LEN1; // 设置字长为8,1个停止位,无校验位
84 *(ptr+FCR) = FIFO_EN|FIFO_TRI_LEVEL_1|FIFO_CLEAR_RCVR|FIFO_CLEAR_XMIT|FIFO_DMA_MODE; // 设置FIFO 控制寄
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -