📄 uart_int.lst
字号:
C51 COMPILER V7.50 UART_INT 10/03/2008 17:53:20 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE UART_INT
OBJECT MODULE PLACED IN ..\hex\uart_int.obj
COMPILER INVOKED BY: D:\Program Files\KEIL_UV3\C51\BIN\C51.EXE uart_int.c LARGE OPTIMIZE(SIZE) BROWSE DEBUG OBJECTEXTEND
- CODE OBJECT(..\hex\uart_int.obj)
line level source
1 // *******************************************
2
3 // *******************************************
4
5 #include <stdio.h>
6 #include "uart_int.h"
7 #include "i2c_intf.h"
8 #include "mcu.h"
9
10 char command_buf[16];
11 char command_buf_len;
12 bit term_cmd_valid;
13 bit fetching_term_cmd;
14 unsigned char uart_buf[7];
15 char rx_count;
16 char tx_left;
17 bit cmd_valid;
18 bit ret_valid;
19
20 void init_serial(unsigned char mode)
21 {
22 1 /*TH1 = mode;
23 1 //TL1 = 0xff;
24 1 TMOD = TMOD & 0x0f | 0x20;
25 1 TR1 = 1;
26 1 SCON = 0x50;//0x70;
27 1 TI = 1;
28 1 RI = 0;
29 1 ES = 1;*/
30 1
31 1 //lllll, 19200 baud rate
32 1 SCON=0x50; // select BRG as UART Baud Rate Gen
33 1 SSTAT=0x00; // separate Rx / Tx interrupts
34 1 BRGCON=0x00;
35 1 BRGR0=0x70; // setup BRG for 19200 baud @ 7.373(7372800)MHz internal RC oscillator
36 1 BRGR1=0x01;
37 1 BRGCON = 0x03; // enable BRG
38 1
39 1 rx_count = 0;
40 1 tx_left = 0;
41 1 cmd_valid = 0;
42 1 ret_valid = 0;
43 1 term_cmd_valid = 0;
44 1 fetching_term_cmd = 0;
45 1 }
*** WARNING C280 IN LINE 20 OF UART_INT.C: 'mode': unreferenced local variable
46 //函数来自UartI2c,变量取DPDEMO
47 void UART_ISR(void)
48 {
49 1 uchar temp;
50 1 if(RI==1)
51 1 {
52 2 RI = 0;//
53 2 temp=SBUF;
C51 COMPILER V7.50 UART_INT 10/03/2008 17:53:20 PAGE 2
54 2 LED=~LED;
55 2 //sendRQ = 1;
56 2 if(command_buf_len==0 && temp==0x2a)
57 2 {
58 3
59 3 command_buf[command_buf_len++]=temp;
60 3
61 3 }
62 2 else if(command_buf_len>0 && command_buf_len<5)
63 2 {
64 3 command_buf[command_buf_len++]=temp;
65 3 }
66 2 else if(command_buf_len==5 && temp==0x0d)
67 2 {
68 3 command_buf[5]=0x0d;
69 3 command_buf_len=0;
70 3 sendRQ = 1;
71 3 }
72 2 else
73 2 {
74 3 command_buf_len=0;
75 3 }
76 2 }
77 1
78 1 }
79
80 /*
81 void prot_isr(void)
82 {
83 unsigned char c;
84
85 if (TI) {
86 TI = 0;
87 if (ret_valid)
88 if (tx_left)
89 SBUF = uart_buf[--tx_left];
90 else
91 ret_valid = 0;
92
93 }
94 if (RI)
95 {
96 enable_debug_output = 0;
97 RI = 0;
98 c = SBUF;
99 if (fetching_term_cmd)
100 {
101 if (c == '\n' || c == '\r')
102 {
103 term_cmd_valid = 1;
104 fetching_term_cmd = 0;
105 }
106 else if (c == 0x08)
107 command_buf_len--;
108 else if (command_buf_len < TERM_CMD_SIZE-1)
109 {
110 command_buf[command_buf_len++] = c;
111 }
112 else
113 c = '*';
114
115 enable_debug_output = 1;
C51 COMPILER V7.50 UART_INT 10/03/2008 17:53:20 PAGE 3
116
117 if (c == '\r')
118 putchar('\n');
119 else
120 putchar(c);
121
122 enable_debug_output = 0;
123 }
124 else
125 {
126 if ((rx_count != 0) || (c == CMD_READ) || (c == CMD_WRITE))
127 uart_buf[rx_count++] = c;
128
129 if (rx_count == 7)
130 {
131 cmd_valid = 1;
132 rx_count = 0;
133 }
134 if (c == '\\')
135 {
136 fetching_term_cmd = 1;
137 command_buf_len = 0;
138 enable_debug_output = 1;
139 putchar(c);
140 enable_debug_output = 0;
141 }
142 }
143 }
144 }
145 */
146 void send_return(unsigned char status, unsigned char datah,
147 unsigned char datal)
148 {
149 1 uart_buf[2] = status;
150 1 uart_buf[1] = datah;
151 1 uart_buf[0] = datal;
152 1 tx_left = 3;
153 1 SBUF = RET_ID;
154 1 ret_valid = 1;
155 1 }
156
157 void process_cmd(void)
158 {
159 1 char c;
160 1 unsigned char uc;
161 1 B_puts("aaaaaaa");
162 1 uc = 0;
163 1 if (uart_buf[0] == CMD_WRITE) {
164 2 if (uart_buf[2] == PORT0_ADDR)
165 2 c = i2c_write_p0_reg(uart_buf[4], uart_buf[6]);
166 2 else
167 2 c = i2c_write_p1_reg(uart_buf[4], uart_buf[6]);
168 2 } else if (uart_buf[0] == CMD_READ) {
169 2 if (uart_buf[2] == PORT0_ADDR)
170 2 c = i2c_read_p0_reg(uart_buf[4], &uc);
171 2 else
172 2 c = i2c_read_p1_reg(uart_buf[4], &uc);
173 2 }
174 1 switch (c) {
175 2 case 1:
176 2 c = ST_DEV_UNKNOWN;
177 2 break;
C51 COMPILER V7.50 UART_INT 10/03/2008 17:53:20 PAGE 4
178 2 case 2:
179 2 c = ST_REG_UNKNOWN;
180 2 break;
181 2 }
182 1 send_return(c, 0x00, uc);
183 1 }
C51 COMPILER V7.50 UART_INT 10/03/2008 17:53:20 PAGE 5
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _init_serial (BEGIN)
; SOURCE LINE # 20
0000 900000 R MOV DPTR,#mode
0003 EF MOV A,R7
0004 F0 MOVX @DPTR,A
; SOURCE LINE # 21
; SOURCE LINE # 32
0005 759850 MOV SCON,#050H
; SOURCE LINE # 33
0008 E4 CLR A
0009 F5BA MOV SSTAT,A
; SOURCE LINE # 34
000B F5BD MOV BRGCON,A
; SOURCE LINE # 35
000D 75BE70 MOV BRGR0,#070H
; SOURCE LINE # 36
0010 75BF01 MOV BRGR1,#01H
; SOURCE LINE # 37
0013 75BD03 MOV BRGCON,#03H
; SOURCE LINE # 39
0016 900000 R MOV DPTR,#rx_count
0019 F0 MOVX @DPTR,A
; SOURCE LINE # 40
001A A3 INC DPTR
001B F0 MOVX @DPTR,A
; SOURCE LINE # 41
001C C200 R CLR cmd_valid
; SOURCE LINE # 42
001E C200 R CLR ret_valid
; SOURCE LINE # 43
0020 C200 R CLR term_cmd_valid
; SOURCE LINE # 44
0022 C200 R CLR fetching_term_cmd
; SOURCE LINE # 45
0024 22 RET
; FUNCTION _init_serial (END)
; FUNCTION UART_ISR (BEGIN)
; SOURCE LINE # 47
; SOURCE LINE # 48
; SOURCE LINE # 50
0000 30985F JNB RI,?C0009
; SOURCE LINE # 51
; SOURCE LINE # 52
0003 C298 CLR RI
; SOURCE LINE # 53
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -