📄 main_2051.lst
字号:
C51 COMPILER V7.00 MAIN_2051 03/16/2005 20:37:53 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE MAIN_2051
OBJECT MODULE PLACED IN main_2051.OBJ
COMPILER INVOKED BY: C:\PROGRA~1\Keil\C51\BIN\c51.exe main_2051.c DB OE SMALL ROM(LARGE)
stmt level source
1 #include<reg51.h>
2 #include <intrins.h>
3 #include<SubPro_ds_h.h>
4
5 #define collect 67 //C ASCII 码为67
6 #define transmit 84
7 #define init 73
8
9 sbit led =0x92;
10
11 unsigned char data receive_data[15]; //串行通信变量,设为全局变量确保快速响应
12 unsigned char data command;
13 unsigned char byt_count =0; //串行中断接收字节计数
14
15 bit data receive_en =1;
16 //////////////////////////////*
17 /*
18 名称:延迟程序
19 功能:根据参数延迟
20 /////////////////////////////*/
21 void delay_time(unsigned int us) //29us/40us/52us/64us
22 {
23 1 unsigned int data i;
24 1 for(i=0;i<=us;i++)
25 1 _nop_();
26 1 }
27
28 void delay_time_1s (void) //实际模拟仿真测试 /0.9s
29 {
30 1 unsigned char data i;
31 1 while(i<4)
32 1 {
33 2 delay_time(8000);
34 2 _nop_();
35 2 delay_time(8000);
36 2 i++;
37 2 }
38 1 }
39
40
41 /////////////////////////////*
42 /*
43 名称:串口 ISR
44 功能:接收PC主机命令
45 ////////////////////////////*/
46 void serial_isr(void) interrupt 4
47 {
48 1 if(TI==1)
49 1 TI =0;
50 1 else if(RI==1&&(receive_en==1))
51 1 {
52 2 RI =0;
53 2 receive_data[byt_count++]=SBUF;
54 2 if(byt_count>15)
55 2 {
C51 COMPILER V7.00 MAIN_2051 03/16/2005 20:37:53 PAGE 2
56 3 byt_count =0;
57 3 receive_en =0;
58 3 }
59 2 }
60 1 else
61 1 RI =0;
62 1 }
63
64 ////////////////////////////////////////////////
65 //名称:命令解析
66 //功能:对接收到的PC命令进行处理,执行相应操作:温度采集,数据传送,初始参数设置作
67 ///////////////////////////////////////////////
68 void do_pc_cmd(void)
69 {
70 1
71 1 command=receive_cmd(&receive_data[0]); //接收PC主机命令字节
72 1 //命令处理
73 1 if(command==collect) //温度采集命令
74 1 {
75 2 send_ds_cmd(); //发温度采集命令给所有DS18B20
76 2 }
77 1 else if(command==transmit) //数据传送命令
78 1 {
79 2 send_data_pc(); //EEPROM 数据包发送给PC
80 2 }
81 1
82 1 else //非法命令
83 1 error_set(); //非法命令转出错处理
84 1
85 1
86 1 }
87
88
89 /////////////////////////////*
90 /*
91 名称:温度采集子系统主程序
92 ////////////////////////////*/
93 main()
94 {
95 1
96 1 SCON =0x50; //设置串行通信方式为1
97 1 TMOD =0x20;
98 1 TH1 =0xE8; //串行通信波特率为1200bps
99 1 TL1 =0xE8;
100 1 TR1 =1;
101 1
102 1 //使能定时器中断,串行口中断,外部中断0
103 1 ET1 =0; //定时器1用于串行通信波特率发生器,禁止中断
104 1 ES =1;
105 1 EA =1;
106 1 //无限循环,等待
107 1 loop:while(receive_en==1); //查询是否接收到pc命令?
108 1 do_pc_cmd(); //处理命令
109 1 receive_en =1; //允许接收下一个命令
110 1 EA =1; //命令处理完毕后EA被自动清零,
111 1 goto loop; //此处必须插入EA=1语句
112 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 166 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V7.00 MAIN_2051 03/16/2005 20:37:53 PAGE 3
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 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 + -