📄 scitest.lst
字号:
C51 COMPILER V7.04 SCITEST 11/07/2005 20:35:29 PAGE 1
C51 COMPILER V7.04, COMPILATION OF MODULE SCITEST
OBJECT MODULE PLACED IN C:\DOCUME~1\GML\桌面\10-27\SCITEST.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\DOCUME~1\GML\桌面\10-27\SCITEST.C DB SB OE
stmt level source
1 #include <reg51.h>
2 #include <string.h>
3
4 #define INBUF_LEN 4 //数据长度
5
6 unsigned char inbuf1[INBUF_LEN];
7 unsigned char checksum,count3;
8 bit read_flag=0;
9
10 void init_serialcomm(void)
11 {
12 1 SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
13 1 TMOD |= 0x20; //TMOD: timer 1, mode 2, 8-bit reload
14 1 PCON |= 0x80; //SMOD=1;
15 1 TH1 = 0xF4; //Baud:4800 fosc=11.0592MHz
16 1 IE |= 0x90; //Enable Serial Interrupt
17 1 TR1 = 1; // timer 1 run
18 1 // TI=1;
19 1 }
20
21 //向串口发送一个字符
22 void send_char_com(unsigned char ch)
23 {
24 1 SBUF=ch;
25 1 while(TI==0);
26 1 TI=0;
27 1 }
28
29 //向串口发送一个字符串,strlen为该字符串长度
30 void send_string_com(unsigned char *str,unsigned int strlen)
31 {
32 1 unsigned int k=0;
33 1 do
34 1 {
35 2 send_char_com(*(str + k));
36 2 k++;
37 2 } while(k < strlen);
38 1 }
39
40
41 //串口接收中断函数
42 void serial () interrupt 4 using 3
43 {
44 1 if(RI)
45 1 {
46 2 unsigned char ch;
47 2 RI = 0;
48 2 ch=SBUF;
49 2 if(ch>127)
50 2 {
51 3 count3=0;
52 3 inbuf1[count3]=ch;
53 3 checksum= ch-128;
54 3 }
55 2 else
C51 COMPILER V7.04 SCITEST 11/07/2005 20:35:29 PAGE 2
56 2 {
57 3 count3++;
58 3 inbuf1[count3]=ch;
59 3 checksum ^= ch;
60 3 if( (count3==(INBUF_LEN-1)) && (!checksum) )
61 3 {
62 4 read_flag=1; //如果串口接收的数据达到INBUF_LEN个,且校验没错,
63 4 //就置位取数标志
64 4 }
65 3 }
66 2 }
67 1 }
68
69
70 main()
71 {
72 1 init_serialcomm(); //初始化串口
73 1 while(1)
74 1 {
75 2 if(read_flag) //如果取数标志已置位,就将读到的数从串口发出
76 2 {
77 3 read_flag=0; //取数标志清0
78 3 send_string_com(inbuf1,INBUF_LEN);
79 3 }
80 2 }
81 1
82 1 }
C51 COMPILER V7.04 SCITEST 11/07/2005 20:35:29 PAGE 3
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
serial . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ch . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
size_t . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
read_flag. . . . . . . . . . . . . . . PUBLIC DATA BIT 0000H 1
RI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1
TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
_send_string_com . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
str. . . . . . . . . . . . . . . . . AUTO DATA PTR 0000H 3
strlen . . . . . . . . . . . . . . . AUTO DATA U_INT 0003H 2
k. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0004H 2
_send_char_com . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ch . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
SBUF . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0099H 1
PCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0087H 1
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1
inbuf1 . . . . . . . . . . . . . . . . PUBLIC DATA ARRAY 0000H 4
init_serialcomm. . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
TH1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008DH 1
TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1
checksum . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0004H 1
count3 . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0005H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 163 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 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 + -