📄 485.lst
字号:
C51 COMPILER V8.02 485 08/16/2008 14:56:22 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 485
OBJECT MODULE PLACED IN 485.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 485.c ROM(COMPACT) BROWSE
line level source
1 #include <intrins.h>
2 #include <string.h>
3 #include "5410ad.h"
4
5 sbit CKXZA = P2^2; /* 4052选通(1) */
6 sbit CKXZB = P2^3; /* 4052选通(2) */
7 sbit EN485 = P2^5; /* 485使能 */
8 //AE 28 54 73 34 10 20 25
9 #define INBUF_LEN 8 //数据长度
10
11 unsigned char inbuf1[INBUF_LEN];
12 unsigned char checksum,count3;
13 bit read_flag=0;
14 void init_serialcomm(void)
15 {
16 1 SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
17 1 TMOD |= 0x20; //TMOD: timer 1, mode 2, 8-bit reload
18 1 PCON |= 0x80; //SMOD=1;
19 1 TH1 = 0xF4; //Baud:4800 fosc=11.0592MHz
20 1 IE |= 0x90; //Enable Serial Interrupt
21 1 TR1 = 1; // timer 1 run
22 1 // TI=1;
23 1 }
24 void send_char_com(unsigned char ch) // 发送一个字符
25 {
26 1 SBUF=ch;
27 1 while(TI==0);
28 1 TI=0;
29 1 }
30
31 void send_string_com(unsigned char *str,unsigned int strlen) //发送一个字符串,strlen为该字符串长度
32 {
33 1 unsigned int k=0;
34 1 do
35 1 {
36 2 send_char_com(*(str + k));
37 2 k++;
38 2 } while(k < strlen);
39 1 }
40 void serial () interrupt 4 using 3 //串口接收中断函数
41 {
42 1 if(RI)
43 1 {
44 2 unsigned char ch;
45 2 RI = 0;
46 2 ch=SBUF;
47 2 if(ch>127)
48 2 {
49 3 count3=0;
50 3 inbuf1[count3]=ch;
51 3 checksum= ch-128;
52 3 }
53 2 else
54 2 {
55 3 count3++;
C51 COMPILER V8.02 485 08/16/2008 14:56:22 PAGE 2
56 3 inbuf1[count3]=ch;
57 3 checksum ^= ch;
58 3 if( (count3==(INBUF_LEN-1)) && (!checksum) )
59 3 {
60 4 read_flag=1; //如果串口接收的数据达到INBUF_LEN个,且校验没错,
61 4 //就置位取数标志
62 4 }
63 3 }
64 2 }
65 1 }
66
67
68 main()
69 {
70 1 CKXZA = 0; CKXZB = 0;
71 1 EN485=0;
72 1 init_serialcomm(); //初始化串口
73 1 while(1)
74 1 {
75 2 if(read_flag) //如果取数标志已置位,就将读到的数从串口发出
76 2 {
77 3 EN485=1;
78 3 read_flag=0; //取数标志清0
79 3 _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
80 3 send_string_com(inbuf1,INBUF_LEN);
81 3 EN485=0;
82 3 _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
83 3 }
84 2 }
85 1
86 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 183 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 6
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 + -