📄 chengxu.lst
字号:
C51 COMPILER V8.05a CHENGXU 10/12/2010 17:45:31 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE CHENGXU
OBJECT MODULE PLACED IN chengxu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE chengxu.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 汇诚科技
3
4 实现功能:串口控制继电器程序
5 使用芯片:AT89S52
6 晶振:11.0592MHZ
7 波特率:9600
8 编译环境:Keil
9 作者:zhangxinchunleo
10 网站:www.ourhc.cn
11 淘宝店:汇诚科技 http://shop36330473.taobao.com
12 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
13
14 *********************************************************************/
15 /********************************************************************
16 单片机与PC机采用9针串口,MAX232通讯,波特率默认为9600.
17
18 单片机接收PC机发送的十六进制码表如下:
19
20 01、全开:PC发送0xFF; 单片机返回0XFF;
21 02、全关:PC发送0X00; 单片机返回0X00;
22
23 03、第一路开:PC发送0x01;单片机返回0X01;
24 04、第二路开:PC发送0x02;单片机返回0X02;
25 05、第三路开:PC发送0x03;单片机返回0X03;
26 06、第四路开:PC发送0x04;单片机返回0X04;
27 07、第五路开:PC发送0x05;单片机返回0X05;
28 08、第六路开:PC发送0x06;单片机返回0X06;
29 09、第七路开:PC发送0x07;单片机返回0X07;
30 10、第八路开:PC发送0x08;单片机返回0X08;
31
32 11、第一路关:PC发送0xFE;单片机返回0XFE;
33 12、第二路关:PC发送0xFD;单片机返回0XFD;
34 13、第三路关:PC发送0xFC;单片机返回0XFC;
35 14、第四路关:PC发送0xFB;单片机返回0XFB;
36 15、第五路关:PC发送0xFA;单片机返回0XFA;
37 16、第六路关:PC发送0xF9;单片机返回0XF9;
38 17、第七路关:PC发送0xF8;单片机返回0XF8;
39 18、第八路关:PC发送0xF7;单片机返回0XF7;
40
41 19、输入状态查询:PC发送0x55;单片机返回输出状态(返回值十六进制);
42 20、输出状态查询:PC发送0xAA;单片机返回输出状态(返回值十六进制);
43 21、输出取反指令:PC发送0X11;单片机返回0x11;
44
45 *********************************************************************/
46 #include<reg52.h> //库文件
47 #define uchar unsigned char//宏定义无符号字符型
48 #define uint unsigned int //宏定义无符号整型
49 /********************************************************************
50 初始定义
51 *********************************************************************/
52
53 unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
54 /*定义八位出为单片机P2口*/
55 sbit K1=P2^0;
C51 COMPILER V8.05a CHENGXU 10/12/2010 17:45:31 PAGE 2
56 sbit K2=P2^1;
57 sbit K3=P2^2;
58 sbit K4=P2^3;
59 sbit K5=P2^4;
60 sbit K6=P2^5;
61 sbit K7=P2^6;
62 sbit K8=P2^7;
63
64 /*定义八位入为单片机P1口*/
65 sbit SB1=P1^0;
66 sbit SB2=P1^1;
67 sbit SB3=P1^2;
68 sbit SB4=P1^3;
69 sbit SB5=P1^4;
70 sbit SB6=P1^5;
71 sbit SB7=P1^6;
72 sbit SB8=P1^7;
73
74 /********************************************************************
75 延时函数
76 *********************************************************************/
77 void delay(uchar t)
78 {
79 1 uchar i,j;
80 1 for(i=0;i<t;i++)
81 1 {
82 2 for(j=13;j>0;j--);
83 2 { ;
84 3 }
85 2 }
86 1 }
87
88 /********************************************************************
89 功能:串口初始化,波特率9600,方式1
90 *********************************************************************/
91 void Init_Com(void)
92 {
93 1 TMOD = 0x20;
94 1 PCON = 0x00;
95 1 SCON = 0x50;
96 1 TH1 = 0xFd;
97 1 TL1 = 0xFd;
98 1 TR1 = 1;
99 1 }
100
101 /********************************************************************
102 主函数
103 *********************************************************************/
104 void main()
105 {
106 1 Init_Com();//串口初始化
107 1 while(1)
108 1 {
109 2
110 2 if ( RI ) //扫描判断是否接收到数据,
111 2 {
112 3 dat = SBUF; //接收数据SBUF赋与dat
113 3 RI=0; //RI 清零。
114 3
115 3 }
116 2 /********************************************************************
117 2 接收数据判断函数
C51 COMPILER V8.05a CHENGXU 10/12/2010 17:45:31 PAGE 3
118 2 *********************************************************************/
119 2 switch(dat) //接收数据判断
120 2 {
121 3 uchar k;
122 3 k=10;
123 3 case 0xff: P2=0X00;delay(k);SBUF = dat;dat=0xee;break; // 全开
124 3 case 0x00: P2=0XFF;delay(k);SBUF = dat;dat=0xee;break; // 全关
125 3
126 3 case 0x01: K1=0;delay(k);SBUF = dat;dat=0xee;break; // 第一路开
127 3 case 0x02: K2=0;delay(k);SBUF = dat;dat=0xee;break; // 第二路开
128 3 case 0x03: K3=0;delay(k);SBUF = dat;dat=0xee;break; // 第三路开
129 3 case 0x04: K4=0;delay(k);SBUF = dat;dat=0xee;break; // 第四路开
130 3 case 0x05: K5=0;delay(k);SBUF = dat;dat=0xee;break; // 第五路开
131 3 case 0x06: K6=0;delay(k);SBUF = dat;dat=0xee;break; // 第六路开
132 3 case 0x07: K7=0;delay(k);SBUF = dat;dat=0xee;break; // 第七路开
133 3 case 0x08: K8=0;delay(k);SBUF = dat;dat=0xee;break; // 第八路开
134 3
135 3 case 0xFE: K1=1;delay(k);SBUF = dat;dat=0xee;break; // 第一路关
136 3 case 0xFD: K2=1;delay(k);SBUF = dat;dat=0xee;break; // 第二路关
137 3 case 0xFC: K3=1;delay(k);SBUF = dat;dat=0xee;break; // 第三路关
138 3 case 0xFB: K4=1;delay(k);SBUF = dat;dat=0xee;break; // 第四路关
139 3 case 0xFA: K5=1;delay(k);SBUF = dat;dat=0xee;break; // 第五路关
140 3 case 0xF9: K6=1;delay(k);SBUF = dat;dat=0xee;break; // 第六路关
141 3 case 0xF8: K7=1;delay(k);SBUF = dat;dat=0xee;break; // 第七路关
142 3 case 0xF7: K8=1;delay(k);SBUF = dat;dat=0xee;break; // 第八路关
143 3
144 3 case 0x55: SBUF = P1;delay(k);dat=0xee;break; // 读输入口状态
145 3 case 0xAA: SBUF = P2;delay(k);dat=0xee;break; // 读输出口状态
146 3
147 3 case 0x11: P2=~P2;delay(k);SBUF = dat;dat=0xee;break; // 输出口取反
148 3
149 3 default:break; // 跳出
150 3 }
151 2
152 2 }
153 1 }
154
155 /********************************************************************
156 结束
157 *********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 239 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 1
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 + -