📄 serial.lst
字号:
C51 COMPILER V7.06 SERIAL 03/19/2008 09:00:19 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN serial.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE serial.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /**********************************************************************
2 * 文件名: serial.c *
3 * 功能:串口上相关功能的实现 *
4 **********************************************************************/
5
6 #define NEED_SERIAL_PROTOCOL
7 #ifdef NEED_SERIAL_PROTOCOL
8
9 /************************************************
10 *Header file segment *
11 ***********************************************/
12 #include "at89x52.h"
13 #include "SERIAL.h"
14 #include "DATATYPE.h"
15
16 /************************************************
17 *Globale variable segment *
18 ***********************************************/
19 uchar receive_number;
20 uchar receive_bool = FALSE; //判断是否有接收到数据
21
22 /************************************
23 * 名称:void DeviceIniSerial(uchar rcap2h, uchar rcap2l)
24 * 功能:设置串口工作方式1, T/C2波特率由rcap2h,rcap2l决定
25 (当rcap2h = 0xff, rcap2l = 0xb8时,波特率为:9600)
26 * 入口参数:uchar rcap2h, uchar rcap2l
27 * 返回值: 无
28 ************************************/
29 void DeviceIniSerial(uchar rcap2h, uchar rcap2l)
30 {
31 1 RCLK = 1; //由T/C2的溢出脉冲形成串行口的 接收 脉冲
32 1 TCLK = 1; //由T/C2的溢出脉冲形成串行口的 发送 脉冲
33 1
34 1 RCAP2H = rcap2h; //设置T/C2的初置,即设置波特率
35 1 RCAP2L = rcap2l;
36 1
37 1 REN = 1; //允许接收
38 1
39 1 SM0 = 0; //设置为串行口方式1:10位异步收发,波特率由定时器控制
40 1 SM1 = 1;
41 1
42 1 TR2 = 1; //T/C2运行工作
43 1 }
44
45
46 /***********************************
47 * 名称:Send(uchar send_number)
48 * 功能:发送send_number
49 * 入口参数:uchar send_number
50 * 返回值: 无
51 ************************************/
52 void ComSend(uchar send_number)
53 {
54 1 SBUF = send_number; //把要发送的数据放入SBUF中
55 1 while(TI == 0); //当发送完一个数据后,TI由硬件置位,跳出循环,结束等待
C51 COMPILER V7.06 SERIAL 03/19/2008 09:00:19 PAGE 2
56 1 TI = 0; //软件复位,以便发送下一个数据
57 1 }
58
59 /***********************************
60 * 函数名:SerialInterrupt(void) (串口中断服务程序).
61 * 功能: 主要实现接收数据
62 * 入口参数:无
63 * 返回值:无
64 ************************************/
65 void SerialInterrupt(void) interrupt 4 //当发送或接收完一个数据的时候,都会产生串行口中断,
66 //但此中断服务程序主要是作用于 接收数据
67 {
68 1 if(RI == 1)
69 1 {
70 2 receive_number = SBUF;
71 2 RI = 0;
72 2 receive_bool = 1;
73 2 }
74 1 }
75
76 #endif
77
78 /******************************************************************************
79 * End of Entire File *
80 *****************************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 37 ----
CONSTANT SIZE = ---- ----
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 + -