📄 deng.lst
字号:
C51 COMPILER V7.06 DENG 01/08/2008 17:07:30 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DENG
OBJECT MODULE PLACED IN deng.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE deng.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg52.h>
2
3
4 sfr CKCON=0xb6; //定义时钟控制寄存器
5 sfr IPH=0xb7; //中断器优先级高位
6 sbit SHANGDIAN_ID1= P1^3;//
7 sbit STATE_ID2= P1^4;//
8 sbit STATE_ID3= P1^5;//
9 sbit STATE_ID4= P1^6;//
10
11 unsigned char TIME_counter=0;
12 unsigned char TIME_counter1=0;
13 unsigned char TIME_counter2=0;
14
15 unsigned char pointer=0; //串口接受首地址
16 unsigned char xdata Rev_COM_data[12]; //串口通讯接受存储单元
17
18 bit Com_Begin_bz=0; //串口数据开始接受
19
20
21 /*串口发送子程序*/
22 void Comout(unsigned char OutData)
23 { //EA=0;
24 1 SBUF = OutData; //输出字符
25 1 while(!TI); //空语句判断字符是否发完
26 1 TI = 0; //清TI
27 1 //EA=1;
28 1 }
29
30 main( )
31 {
32 1 CKCON=0x04;
33 1 IP=1;
34 1 IPH=1;
35 1 TMOD=0x21; // 定时器T0为方式1,T1为方式2
36 1 TH0=0x00;
37 1 TL0=0x00; //定时器0设置,暂时先开开,可能用不上
38 1 TR0=1;
39 1 ET0=1;
40 1 TH1=0x00;
41 1 TL1=0x00; //定时器1设置,暂时先开开,可能用不上
42 1 TR1=1;
43 1 ET1=1;
44 1 RCLK=1;
45 1 TCLK=1; //定时器2用作波特率发生器 T2CON中的值
46 1 RCAP2H=0xff;
47 1 RCAP2L=0xB8; //初步设定波特率为9600
48 1 RCAP2L=0xDC; //初步设定波特率为19200
49 1
50 1 //RCAP2H=0x77;
51 1 //RCAP2L=0x77; //初步设定波特率为9600
52 1 SCON=0x50; //串口方式为模式1,无校验,定时器2产生波特率
53 1 TR2=1; //开定时器2
54 1 //ET2=1; //使能定时器2
55 1 IT0=1; // 负边缘触发
C51 COMPILER V7.06 DENG 01/08/2008 17:07:30 PAGE 2
56 1 EX0=1; //外部中断使能
57 1 ES=1; //使能串口
58 1 EA=1;
59 1
60 1 while (1)
61 1 {
62 2 if(pointer>=1&&(Rev_COM_data[0]==0xB5)&&(Rev_COM_data[1]==0xA5))
63 2 {
64 3
65 3 pointer=0;
66 3 Com_Begin_bz=0;
67 3 //if(TIME_counter2>=100)
68 3 //{
69 3 // TIME_counter2=0;
70 3 Comout(0xB5); //是正常通讯信号,回数据
71 3 Comout(0xA5);
72 3 Rev_COM_data[0]=0;
73 3 Rev_COM_data[1]=0;
74 3 // }
75 3 }
76 2
77 2
78 2 }
79 1
80 1 }
81
82 void Timer0() interrupt 1 using 1
83 {
84 1 TH0 = 0X99;
85 1
86 1 TL0 = 0x99;
87 1 TIME_counter++;
88 1 if(TIME_counter>=254)
89 1 {
90 2 TIME_counter=0;
91 2 STATE_ID3=!STATE_ID3;
92 2 }
93 1 }
94 void Timer1() interrupt 3 using 2
95 {
96 1 TH1 = 0X00;
97 1
98 1 TL1 = 0x00;
99 1 TIME_counter1++;
100 1 TIME_counter2++;
101 1 if(TIME_counter1>=254)
102 1 {
103 2 TIME_counter1=0;
104 2 STATE_ID4=!STATE_ID4;
105 2 }
106 1
107 1 }
108
109 //void Timer2( ) interrupt 5 using 1
110 // {
111 // RCAP2H=0x00;
112 // RCAP2L=0x00; //初步设定波特率为9600
113 // STATE_ID4=!STATE_ID4;
114 // TF2=0;
115 // }
116
117
C51 COMPILER V7.06 DENG 01/08/2008 17:07:30 PAGE 3
118 void CAN(void) interrupt 0 using 0
119 {
120 1 SHANGDIAN_ID1=!SHANGDIAN_ID1;
121 1
122 1 }
123
124
125 /*串口中断接收程序此程序中需要处理即对过来的数据进行软件滤波及信息分析*/
126 void ComInINT(void) interrupt 4 using 3
127 {
128 1 if(RI)
129 1 {unsigned char astring;
130 2 RI = 0; //RI清零
131 2 // ES=0;
132 2 astring= SBUF;
133 2 STATE_ID2=!STATE_ID2;
134 2 if(astring==0xb5)
135 2 {Rev_COM_data[pointer++]=astring;
136 3 Com_Begin_bz=1;
137 3 // txsjjs=10; //根据定时周期长短来定义初值
138 3 }
139 2 else
140 2 { if(Com_Begin_bz==1)
141 3 {
142 4 Rev_COM_data[pointer++]=astring;
143 4 }
144 3 }
145 2 if(pointer>=12)
146 2 {pointer=0;
147 3 Com_Begin_bz=0;
148 3 }
149 2 // ES=1;
150 2 }
151 1 }
152
153
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 256 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 12 ----
PDATA SIZE = ---- ----
DATA SIZE = 4 1
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -