📄 rs232.lst
字号:
C51 COMPILER V8.06 RS232 04/08/2008 13:40:56 PAGE 1
C51 COMPILER V8.06, COMPILATION OF MODULE RS232
OBJECT MODULE PLACED IN Rs232.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Rs232.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*实验名称:RS232通信实验
2 功能:接收电脑送过来的数据,并且显示16进制数,并将数据回传到电脑
3 作者:http://www.mcuprog.com
4 08-04-008
5 */
6 #include <reg51.h>
7 //LCD的口线
8 sbit E=P2^2;
9 sbit RW=P2^1;
10 sbit RS=P2^0;
11
12
13 unsigned char recdata; //RS232收到的值
14 unsigned char bdata myflag;
15 sbit recokbit = myflag^0;
16 void Delay(unsigned int t);
17 void SendCommandByte(unsigned char ch);
18 void SendDataByte(unsigned char ch);
19 void InitLcd(void);
20 void disprec(void);
21
22 void rs232(void);
23
24 void main(void)
25 {
26 1
27 1 InitLcd();
28 1 myflag=0x00;
29 1 SendCommandByte(0x80);
30 1 Delay(2);
31 1 SendDataByte('R');
32 1 SendDataByte('E');
33 1 SendDataByte('C');
34 1 SendDataByte('D');
35 1 SendDataByte('A');
36 1 SendDataByte('T');
37 1 SendDataByte('A');
38 1 SendDataByte(':');
39 1 TMOD=0x20;
40 1 TH1=0xfd;
41 1 TL1=0xfd;
42 1 SCON=0x50;
43 1 TR1=1;
44 1 REN=1;
45 1 IE=0x90;
46 1 while(1)
47 1 {
48 2 if(recokbit==1)
49 2 {
50 3 recokbit=0;
51 3 disprec();
52 3 }
53 2 }
54 1 }
55
C51 COMPILER V8.06 RS232 04/08/2008 13:40:56 PAGE 2
56 //以下为串口中断程序
57 void rs232(void) interrupt 4
58 {
59 1 if(RI==1)
60 1 {
61 2 RI=0;
62 2 recdata=SBUF;
63 2 SBUF=recdata;
64 2 recokbit=1;
65 2 }
66 1 else
67 1 {
68 2 TI=0;
69 2 }
70 1 }
71
72 void Delay(unsigned int t) // delay 40us
73 {
74 1 for(;t!=0;t--) ;
75 1 }
76 //=============================================
77 void SendCommandByte(unsigned char ch)
78 {
79 1 RS=0;
80 1 RW=0;
81 1 P0=ch;
82 1 E=1;
83 1 Delay(1);
84 1 E=0;
85 1 Delay(100); //delay 40us
86 1 }
87 //-------------------------------------------------------
88 void SendDataByte(unsigned char ch)
89 { RS=1;
90 1 RW=0;
91 1 P0=ch;
92 1 E=1;
93 1 Delay(1);
94 1 E=0;
95 1 Delay(100); //delay 40us
96 1 }
97 //-------------------------------------------------
98 void InitLcd(void)
99 {SendCommandByte(0x30);
100 1 SendCommandByte(0x30);
101 1 SendCommandByte(0x30);
102 1 SendCommandByte(0x38); //设置工作方式
103 1 SendCommandByte(0x0c); //显示状态设置
104 1 SendCommandByte(0x01); //清屏
105 1 SendCommandByte(0x06); //输入方式设置
106 1 }
107
108 void disprec(void)
109 {
110 1 SendCommandByte(0x89);
111 1 SendDataByte(recdata);
112 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 199 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V8.06 RS232 04/08/2008 13:40:56 PAGE 3
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
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 + -