📄 code.lst
字号:
C51 COMPILER V7.06 CODE 01/11/2008 16:53:39 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE CODE
OBJECT MODULE PLACED IN code.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE code.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<AT89X51.H>
2
3 void port_init(void);
4
5
6
7 void main(void)
8 {
9 1 unsigned char dflag,send_code;
10 1 unsigned int mod;
11 1 unsigned char i = 0,j = 0,data_buf;
12 1 unsigned char data latitude[11];//="(244)6.5211N";
13 1 unsigned char data longitude[12];//="(1210)0.1536E";
14 1 port_init();
15 1 while(1)
16 1 {
17 2 while(!RI)
18 2 {}
19 2 data_buf = SBUF;
20 2 if(data_buf == 'M')
21 2 break;
22 2 RI = 0;
23 2 }
24 1 TR1 = 0;
25 1 RI = 0;
26 1
27 1 /*接收数据 $GPRMC,062321,V,2446.5211,N,12100.1536,E,000.0,000.0,030222,,*0C */
28 1
29 1 do
30 1 {
31 2 while(!RI)
32 2 {}
33 2 data_buf = SBUF;
34 2 if(data_buf == ',') dflag++;
35 2 if(dflag == 3 && data_buf != ',')
36 2 {
37 3 latitude[i] = data_buf;
38 3 i++;
39 3 }
40 2
41 2 if(dflag == 4 && data_buf != ',')
42 2 {
43 3 latitude[i] = data_buf;
44 3 latitude[i+1] = '\0'; //以字符串的方式结束
45 3 }
46 2
47 2 if(dflag == 5 && data_buf != ',')
48 2 {
49 3 longitude[j] = data_buf;
50 3 j++;
51 3 }
52 2
53 2 if(dflag == 6 && data_buf != ',')
54 2 {
55 3 longitude[j] = data_buf;
C51 COMPILER V7.06 CODE 01/11/2008 16:53:39 PAGE 2
56 3 longitude[j+1] = '\0'; //以字符串的方式结束
57 3 }
58 2 RI = 0;
59 2 }while(data_buf != 'E'); // latitude[11]: (244)6.5211N longitude[12]: (1210)0.1536E
60 1 RI = 0;
61 1 REN = 0; // forbid recieve
62 1
63 1 TR1 = 1; //握手信号
64 1 for(i = 0;i < 3;i ++)
65 1 {
66 2 SBUF = 0xFF;
67 2 while(!TI)
68 2 {}
69 2 TI = 0;
70 2 for(j = 0;j < 100;j ++)
71 2 {}
72 2 }
73 1 TR1 = 0;
74 1
75 1 for(i = 0;i < 14;i ++)
76 1 {
77 2 if(i < 7)
78 2 send_code = latitude[i + 3];
79 2 else
80 2 send_code = longitude[i - 3];
81 2 switch(send_code)
82 2 {
83 3 case '0': mod = 0x00;break; // 0b00000000 last bit odd check
84 3 case '1': mod = 0x17;break; // 0b00010111
85 3 case '2': mod = 0x2B;break; // 0b00101011
86 3 case '3': mod = 0x3C;break; // 0b00111100
87 3 case '4': mod = 0x4D;break; // 0b01001101
88 3 case '5': mod = 0x5A;break; // 0b01011010
89 3 case '6': mod = 0x66;break; // 0b01100110
90 3 case '7': mod = 0x71;break; // 0b01110001
91 3 case '8': mod = 0x8E;break; // 0b10001110
92 3 case '9': mod = 0x99;break; // 0b10011001
93 3 case '.': mod = 0xA5;break; // 0b10100101
94 3 case 'N': mod = 0xB2;break; // 0b10110010
95 3 case 'E': mod = 0xC3;break; // 0b11000011
96 3 case 'W': mod = 0xD4;break; // 0b11010100
97 3 case 'S': mod = 0xE8;break; // 0b11101000
98 3 default: break; // wrong coded , noted
99 3 }
100 2 TR1 = 1;
101 2 SBUF = mod;
102 2 while(!TI)
103 2 {}
104 2 TI = 0;
105 2 }
106 1 TR1 = 0;
107 1 }
108
109 void port_init(void)
110 {
111 1 TMOD=0x20;
112 1 PCON=0; //SMOD=0
113 1 SCON=0x50; // MODE 1
114 1 TH1=0xCC; //600baud 12MHz oscillator frequence,SMOD=0
115 1 TL1=0xCC;
116 1 TR1=1; //Start timer 1
117 1 }
C51 COMPILER V7.06 CODE 01/11/2008 16:53:39 PAGE 3
118
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 409 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 30
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 + -