📄 prot30.lst
字号:
C51 COMPILER V9.00 PROT30 01/01/2002 02:02:36 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE PROT30
OBJECT MODULE PLACED IN prot30.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE cmain\prot30.c BROWSE DEBUG OBJECTEXTEND PRINT(.\prot30.lst) OBJECT(prot30.
-obj)
line level source
1 /*--------------------------------------
2 芯片 :STC12C5A60S2芯片
3 硬件: :15入15出继电器控制板子
4 晶振 :11.0592MHZ
5 开发平台:KEIL
6 功能 :串口一或者串口二都可以通过上位机控制30路继电器
7 波特率 :9600BPS
8 日期 :2012.4.19
9 编者 :yang
10 QQ :7902449096
11 注意 :下载完程序后请复位系统!!(切记!)
12 --------------------------------------*/
13
14 #include "Hfile\\STC12C5A60S2.h"
15 #include"Hfile\\PublicV.H"
16 #define uchar unsigned char
17 #define uint unsigned int
18 void sender (void);
19 uchar dat;
20
21 void init ()
22 {
23 1 //串口2波特率
24 1 TMOD = 0x20; //定时器1产生波特率
25 1 SCON = 0x50; //方式1,8位数据,波特率可变
26 1 TH1= 0xfd;
27 1 TL1 = 0xfd; //波特率 9600
28 1 //串口1波特率
29 1 S2CON = 0x50; //方式1,八位数据,可变波特率
30 1 BRT=0XFD; //设置波特率9600
31 1 TR1=1; //启动定时器产生串口2波特率
32 1 AUXR=0x10; //启动串口1波特率发生器
33 1 IP=0x00; //优先级默认
34 1 EA=1; //开总中断
35 1 ES=1; //开串口1中断
36 1 IE2=0x01; //开串口2中断
37 1
38 1 }
39
40 /*--------------------------------------
41 延时函数
42 --------------------------------------*/
43 void delay ( uint t )
44 {
45 1 uint i,j;
46 1 for( i=0; i<t; i++)
47 1 for( j=0; j<250; j++);
48 1 }
49
50 /*--------------------------------------
51 发送函数
52 --------------------------------------*/
53 void sender (void)
54 {
C51 COMPILER V9.00 PROT30 01/01/2002 02:02:36 PAGE 2
55 1 unsigned char j;
56 1 ES=0;
57 1 for(j=0;j<=5;j++)
58 1 {
59 2 SBUF=bite[j];
60 2 while(!TI);
61 2 TI=0;
62 2
63 2 }
64 1 ES=1;
65 1 }
66
67 /*--------------------------------------
68 主函数
69 --------------------------------------*/
70 void main()
71 {
72 1 uchar k=10;
73 1 P4SW|=0x20; //配置P4.5为IO口
74 1 P4M0|=0x10; //配置P4.4为IO口
75 1 P4M1|=0x10;
76 1 P0=P1=P2=P3=0xff;
77 1 P4|=0x30;
78 1 init(); // 定时器初始化
79 1 add=0X00;
80 1 while(1)
81 1 {
82 2 if(receive==1&&bite[1]==add)
83 2 {
84 3 /*0=握手 1=地址 2=继电器开关 3=继电器1-8路 4=继电器9-16路 5=继电器17=24路
85 3 *6=继电器25-30路*/
86 3 receive=0;
87 3 if(bite[2]==0x11) //打开
88 3 open_X1(bite[3],0);
89 3 if(bite[2]==0x01) //关闭
90 3 open_X1(bite[3],1);
91 3
92 3 if(bite[4]==0x12) //打开
93 3 open_X2(bite[5],0);
94 3 if(bite[4]==0x02) //关闭
95 3 open_X2(bite[5],1);
96 3 sender ();
97 3
98 3 // IapEraseSector(0);
99 3 // IapProgramByte(1,bite[3]);
100 3 // IapProgramByte(2,bite[5]);
101 3 // IapProgramByte(3,bite[7]);
102 3 // IapProgramByte(4,bite[9]);
103 3
104 3
105 3 }
106 2 }
107 1
108 1 }
109 /*--------------------------------------
110 串口一 接收中断函数
111 --------------------------------------*/
112
113 void uart_isr() interrupt 4 using 2
114 {
115 1
116 1 ES=0;
C51 COMPILER V9.00 PROT30 01/01/2002 02:02:36 PAGE 3
117 1 if( RI )
118 1 {
119 2 RI=0;
120 2 bite[r] = SBUF;
121 2 if(bite[0]==0XAA || bite[0]==0XAB || bite[0]==0XAC || bite[0]==0XAD)
122 2 r++;
123 2 if(r>=6)
124 2 {
125 3 receive=1;
126 3 r=0;
127 3 }
128 2 }
129 1 ES=1;
130 1
131 1 }
132
133 void uart2_isr() interrupt 8 using 1
134 {
135 1 if( S2CON & 0x01 )
136 1 {
137 2 S2CON &= ~0x01;
138 2 bite[r] = S2BUF;
139 2 if(bite[0]==0XAA || bite[0]==0XAB || bite[0]==0XAC || bite[0]==0XAD)
140 2 r++;
141 2 if(r>=6)
142 2 {
143 3 receive=1;
144 3 r=0;
145 3 }
146 2 }
147 1
148 1 if( S2CON & 0x02 )
149 1 {
150 2 S2CON &= ~0x02;
151 2 }
152 1
153 1 }
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 322 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V9.00 PROT30 01/01/2002 02:02:36 PAGE 4
DATA SIZE = 16 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 + -