📄 com.lst
字号:
C51 COMPILER V6.12 COM 01/24/2006 09:00:57 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE COM
OBJECT MODULE PLACED IN com.OBJ
COMPILER INVOKED BY: C:\Manley\c51\BIN\C51.EXE com.c DB OE SMALL ROM(LARGE)
stmt level source
1 #include<main.h>
2 #define COM_BUS_DATA(x) XBYTE[0x1001 + x]
3
4 byte xdata com_r_buff[COM_R_BUFF_LEN];
5 byte xdata com_s_buff[COM_S_BUFF_LEN];
6 byte xdata com_r_sadr;
7 byte xdata com_r_cmd;
8 byte xdata com_r_num;
9 byte xdata com_r_len;
10 byte xdata com_r_perr;
11 byte xdata com_r_crc = 0x00;
12 byte xdata *pcom_r_buff_wr = com_r_buff;//写指针,判断写数据后,fifo是否为满
13 byte xdata *pcom_r_buff_rd = com_r_buff;//读指针,判断读数据后,fifo是否为空
14 byte xdata *pcom_r_buff_prc = com_r_buff;//当前读指针,不判断是否为我要的数据,读完一个就加一
15 byte xdata *pcom_send_buff_wr = com_s_buff;
16 byte xdata *pcom_send_buff_rd = com_s_buff;
17
18 bit com_r_buff_empty = TRUE;
19 bit com_r_buff_full = FALSE;
20 bit com_send_buff_empty = TRUE;
21 bit com_send_buff_full = FALSE;
22
23 byte idata com_len = NULL_BYTE;
24 byte idata st_com_r = ST_COM_R_IDLE;
25 byte idata com_data_num = NULL_BYTE;
26
27 byte xdata data_r_tmp_buff[DATA_R_TMP_BUFF_LEN];
28
29 byte xdata inf_r_buff[INF_R_BUFF_LEN];
30 data byte xdata *pinf_r_buff_wr = inf_r_buff;//接收到属于我的指令
31 data byte xdata *pinf_r_buff_rd = inf_r_buff;
32 word xdata inf_r_len = NULL_WORD;
33 byte idata inf_r_total = NULL_BYTE;
34
35 sbit ctr_bc = P1^5 ;
36 sbit SEND485 = P1^0 ;
37 void prc_com_bus_data(void);
38
39 union
40 { word w;
41 struct
42 {
43 byte h; //word 的高字节。
44 byte l; //word 的低字节。
45 } b;
46 }w_b;
47
48 bit inf_r_buff_empty = TRUE;
49
50 #ifdef MY_TET
bit fctr_len = TRUE;
word pre_ctr_len = NULL_WORD;
word pre_ctr_num = NULL_WORD;
byte ctr_num = NULL_BYTE;
byte xdata ctr_data[INF_R_BUFF_LEN];
C51 COMPILER V6.12 COM 01/24/2006 09:00:57 PAGE 2
#endif
57
58 word xdata com_s_len;
59 word xdata com_s_mlen;
60 byte com_s_perr = NULL_BYTE;
61
62
63 void com_r_init (void) interrupt 4//串口中断
64 {
65 1 byte tmp;
66 1 COM_INT_DISEN();
67 1 if(RI)
68 1 {
69 2 tmp = SBUF;
70 2 if(!com_r_buff_full)
71 2 //;//ERR PROC
72 2 {
73 3 *pcom_r_buff_wr =tmp;
74 3 if(pcom_r_buff_wr == com_r_buff + COM_R_BUFF_LEN)
75 3 {
76 4 if(pcom_r_buff_rd == com_r_buff)
77 4 com_r_buff_full = TRUE;//写指针在fifo末尾,读指针在开始,则fifo为满
78 4 pcom_r_buff_wr = com_r_buff;//把写指针放在fifo开始
79 4 }
80 3 else
81 3 {
82 4 pcom_r_buff_wr++;//写指针加1
83 4 if(pcom_r_buff_wr == pcom_r_buff_rd)
84 4 com_r_buff_full = TRUE;//写指针在fifo中间,写指针加1后与读指针相等也为满。因为新写入的数,读指针没有
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -