📄 seral_c.lst
字号:
C51 COMPILER V7.06 SERAL_C 05/14/2006 16:20:57 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SERAL_C
OBJECT MODULE PLACED IN seral_c.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE seral_c.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //*********************************************************************
2 //实现功能:用查询法实现单片机接收到电脑发送过来的数据之后把收到的数据
3 // 发回给电脑
4 //目标板:
5 //*********************************************************************
6
7 #include <reg51.h>
8
9
10 //************************定义函数**************************************
11 void serial_send(unsigned char send);
12 unsigned char serial_receive(void);
13 void timer_init(unsigned char time_num,unsigned char time_GATE,unsigned char time_CT,unsigned char time_mo
-de);
14 void serial_init(unsigned char serial_scon,unsigned char serial_smod);
15
16 //******************************主函数*********************************
17 //描 述:实现单片机接收到电脑发送过来的数据之后把收到的数据发回给电脑
18 //入口参数:无
19 //返回参数:无
20 //设 计:ycj
21 //最后修改:时间(2006.5.2) 修改人(ycj)
22 //*********************************************************************
23 int main(void)
24 {unsigned char i;
25 1 serial_init(0x51,0);//选择方式1,接受允许,波特率不加倍
26 1 timer_init(1,0,0,2);//T1,方式2
27 1 //设定波特率为9600b,Fosc=11.0592MHz ,TH1=0xfd,TL1=0xfd
28 1 TH1=0xfd;
29 1 TL1=0xfd;
30 1 TR1=1;//启动T1
31 1 RI=0;//清除接收完成位
32 1 serial_send('o');
33 1 serial_send('k');
34 1 while(1)
35 1 {
36 2 i=serial_receive();//调用接收子程序,接收数据
37 2 serial_send(i);//把收到的数据发送出去
38 2 }
39 1 }
40 //************************串口初始化函数***************************
41 //描 述:初始化串行口
42 //入口参数:unsigned char serial_scon : SCON的设定值
43 // unsigned char serial_smod : SMOD的设定值(0或1)
44 //返回参数:无
45 //设 计:ycj
46 //最后修改:时间(2006.5.2) 修改人(ycj)
47 //*****************************************************************
48 void serial_init(unsigned char serial_scon,unsigned char serial_smod)
49 {
50 1 SCON=serial_scon;
51 1 PCON&=0x7f;//清SMOD
52 1 PCON|=(serial_smod<<8);
53 1 }
54 //************************定时器初始化函数***************************
C51 COMPILER V7.06 SERAL_C 05/14/2006 16:20:57 PAGE 2
55 //描 述:对定时/计数器初始化
56 //入口参数:unsigned char time_num 定时/计数器的编号(0或者1)
57 // unsigned char time_GATE 定时/计数器的门控制位(0或者1)
58 // unsigned char time_CT 定时/计数器的功能选择位(0或者1)
59 // unsigned char time_mode 定时/计数器的方式选择(0~3)
60 //返回参数:无
61 //设 计:ycj
62 //最后修改:时间(2006.5.2) 修改人(ycj)
63 //*******************************************************************
64 void timer_init(unsigned char time_num,unsigned char time_GATE,unsigned char time_CT,unsigned char time_mo
-de)
65 {
66 1 if (time_num==0)
67 1 {
68 2 TMOD&=0xf0;
69 2 TMOD|=(time_GATE<<4)+(time_CT<<3)+(time_mode);
70 2 }
71 1 else if (time_num==1)
72 1 {
73 2 TMOD&=0x0f;
74 2 TMOD|=(time_GATE<<8)+(time_CT<<7)+(time_mode<<4);
75 2 }
76 1 }
77 //************************串口接收函数***************************
78 //描 述:用查询法接收串行口数据
79 //入口参数:无
80 //返回参数:接收到的8位数据
81 //设 计:ycj
82 //最后修改:时间(2006.5.2) 修改人(ycj)
83 //***************************************************************
84 unsigned char serial_receive(void)
85 {
86 1 while(RI==0);//等待接收数据
87 1 RI=0;//接收到数据,清除接收完毕标志
88 1 return(SBUF);//返回接收数据
89 1 }
90
91 //************************串口发送函数***************************
92 //描 述:用查询法发送串行口数据
93 //入口参数:要发送的8位数据
94 //返回参数:无
95 //设 计:ycj
96 //最后修改:时间(2006.5.2) 修改人(ycj)
97 //***************************************************************
98 void serial_send(unsigned char send)
99 {
100 1 while(TI!=0);//查询发送是否就绪
101 1 SBUF=send;//发送就绪,把要发送的数据发送出去
102 1 while(TI==0);//查询发送是否完毕
103 1 TI=0;//发送完毕,清除发送完成标志
104 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 121 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V7.06 SERAL_C 05/14/2006 16:20:57 PAGE 3
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -