📄 muticom.lst
字号:
C51 COMPILER V6.23a MUTICOM 11/04/2006 10:33:11 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE MUTICOM
OBJECT MODULE PLACED IN MutiCom.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE MutiCom.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include <stdio.h>
3 bit startframe=0,com2rb=1,lastcom2rb=1;
4 unsigned char TLV=0xb0; //Now is 16 times of baud,0xc0; //for 18432000,4 times baudrate,
5 unsigned char THV=0xff; // 0xfe; if 8times baudrate it's 0x60 and 0xff respect
-ively.
6 unsigned char com2sbufp=0,com2buffs[2],com2buffr[20],com2buffrp=0;
7 unsigned short SECTICKS=19200; //4800; //65536/(65536-(THV*256+TLV))*18;
8 unsigned short HALFSECTICKS=9600; //2400;
9 unsigned char rbuff[20],sbuff[11];
10 unsigned char rbuffp=0;
11 unsigned char triggle=0,chno=0,ensend=0,rest;
12 unsigned char ticks1=0,ticks2=0,ticksl2=0,ticksh2=0,ticks3,numberofzero=0,numberofone=16;
13 unsigned char temptl0,tempth0;
14 unsigned short filterB=0xffff,count=0,com2sbuf;
15 //sbit P32 = P3^2;
16 sbit COM2R=P3^2; //P3^0;
17 sbit COM2S=P3^1;
18 void delay()
19 {
20 1 unsigned short i,j;
21 1 for(i=0;i<30;i++) j=i;
22 1 }
23 void e0int() interrupt 0
24 {
25 1 P1=P1 ^ 0x80; // Feed watchdog.
26 1 ticks3++;
27 1 }
28 void e1int() interrupt 2
29 {
30 1 ticks1++;
31 1 }
32 void t0int() interrupt 1
33 {
34 1 // unsigned char i;
35 1 temptl0=TL0;
36 1 tempth0=TH0;
37 1 TH0=THV+tempth0;
38 1 TL0=TLV+temptl0+10;
39 1 //if(!(filterB&0x8000)) numberofzero--;
40 1 filterB<<=1;
41 1 filterB&=0xfffe;
42 1 filterB|=COM2R;
43 1 //if(!(filterB&1)) numberofzero++;
44 1 switch (filterB&0x3f)
45 1 {
46 2 case 0x3f:
47 2 com2rb=1;
48 2 break;
49 2 case 0:
50 2 com2rb=0;
51 2 if((!startframe)) // && (numberofzero>7)) // && (filterB&0xf)) // && (lastcom2rb) && (numberofzero>
-=8))
52 2 {
53 3 startframe=1;
C51 COMPILER V6.23a MUTICOM 11/04/2006 10:33:11 PAGE 2
54 3 com2sbufp=0;
55 3 rest=count&0xf;
56 3 }
57 2 break;
58 2 default:
59 2 break;
60 2 }
61 1 lastcom2rb=com2rb;
62 1 if(startframe && ((count&0xf) == rest))
63 1 {
64 2 com2sbuf>>=1;
65 2 com2sbuf&=0xfeff;
66 2 if(com2rb) com2sbuf|=0x0100;
67 2 com2sbufp++;
68 2 if(com2sbufp==10)
69 2 {
70 3 startframe=0;
71 3 if(com2sbuf&0x100)
72 3 {
73 4 com2buffr[com2buffrp]=com2sbuf;
74 4 SBUF=com2sbuf;
75 4 if((com2buffr[com2buffrp] == 'E') && (com2buffr[(com2buffrp+19)%20] == 0) && (com2buffr[(com2buffrp+16)%2
-0] == 'S'))
76 4 {
77 5 //TI=0;
78 5 //SBUF=com2buffr[(com2buffrp+17)%20];
79 5 sbuff[4]=com2buffr[(com2buffrp+17)%20];
80 5 sbuff[5]=com2buffr[(com2buffrp+18)%20];
81 5 }
82 4 if(++com2buffrp==20) com2buffrp=0;
83 4 }
84 3 }
85 2 }
86 1 count++;
87 1 if(count == SECTICKS)
88 1 {
89 2 count=0;
90 2 triggle=1;
91 2 }
92 1 }
93 void comint() interrupt 4
94 {
95 1 if(RI)
96 1 {
97 2 RI=0;
98 2 rbuff[rbuffp]=SBUF;
99 2 if((rbuff[rbuffp] == 'E') && (rbuff[(rbuffp+11)%20] == 'S') && (rbuff[(rbuffp+12)%20] == '0'))
100 2 {
101 3 switch (rbuff[(rbuffp+13)%20])
102 3 {
103 4 case 'A': ensend=1;
104 4 break;
105 4 case 'D':
106 4 break;
107 4 default:break;
108 4 }
109 3 }
110 2 rbuffp++;
111 2 if(rbuffp == 20) rbuffp=0;
112 2 }
113 1 }
114 void main (void)
C51 COMPILER V6.23a MUTICOM 11/04/2006 10:33:11 PAGE 3
115 {
116 1 unsigned char i;
117 1 sbuff[0]=0xff;
118 1 sbuff[1]=0xd7;
119 1 sbuff[2]=0x06;
120 1 sbuff[3]='S';
121 1 sbuff[8]=0x00;
122 1 sbuff[9]='E';
123 1 SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
124 1 TMOD |= 0x21; /* TMOD: timer 1, mode 2, 8-bit reload */
125 1 TH1 = 0xd8; /* TH1: reload value for 1200 baud @ 184320000MHz */
126 1 TR1 = 1; /* TR1: timer 1 run */
127 1 IT1 = 1;
128 1 IT0 = 1;
129 1 TI = 1; /* TI: set TI to send first char of UART */
130 1 TR0 = 1;
131 1 IE = 0x82; //Only enable t0 interrupt.
132 1 while (1)
133 1 {
134 2 if (triggle==1)
135 2 {
136 3 //P32=0;
137 3 sbuff[6]=P1;
138 3 sbuff[7]=P1;
139 3 //for(i=0;i<10;i++) putchar(sbuff[i]);
140 3 //putchar(temptl0);
141 3 triggle=0;
142 3 //P32=1;
143 3 }
144 2 delay();
145 2 }
146 1 }
*** WARNING C280 IN LINE 116 OF MUTICOM.C: 'i': unreferenced local variable
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 468 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 81 3
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -