📄 uart.lst
字号:
C51 COMPILER V7.20 UART 08/21/2007 08:38:59 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE uart.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include "MAX485.h"
3 uchar temp[8];
4 data uchar Tbuffer[TCOUNT]; //定义发送缓冲区
5 data uchar Rbuffer[RCOUNT];//定义接受缓冲器
6 data unsigned char Tpointer; //定义当前位子指针
7 data unsigned char Rpointer;
8 data uchar count_10ms;
9 uchar time_over_flag;
10 void serial_init(void);
11 uchar RS485(){
12 1
13 1 receive();
14 1 if(Rbuffer[0] == 'A'){
15 2 temp[1] = Rbuffer[1];
16 2 temp[2] = Rbuffer[2];
17 2 return(0);
18 2 }
19 1 else {
20 2 return(-1);}
21 1 }
22
23 void command(void){
24 1 Tpointer = 0x00;
25 1 while(Tpointer<TCOUNT) { /* 发送缓冲区初始化 */
26 2 Tbuffer[Tpointer] = 'T';
27 2 Tpointer++;
28 2 }
29 1 send();
30 1 }
31
32 void send(void){
33 1 RE = 1;
34 1 Tpointer=0x00;
35 1 EA = 1;
36 1 TI = 1;
37 1 while(Tpointer <= TCOUNT); /* 等待全部数据帧发送完毕 */
38 1 RE = 0;
39 1 }
40
41 void receive(void){
42 1 RE = 0;
43 1 Rpointer = 0 ;
44 1 time_over_flag = 0;
45 1 EA = 0;
46 1 ET0=1; //关闭定时器T0中断
47 1 TR0=1; //停止定时器T0
48 1 ES = 1;
49 1 PS = 1;
50 1 EA = 1;
51 1 while((Rpointer+1 <= RCOUNT)&&!time_over_flag);
52 1 ET0 = 0;
53 1 TR0 = 0;
54 1
55 1 }
C51 COMPILER V7.20 UART 08/21/2007 08:38:59 PAGE 2
56
57 /* 发送中断服务函数 */
58 void serial (void) interrupt 4 using 3 {
59 1 if (RI){
60 2 RI=0; /* 清接收中断标志 */
61 2 Rbuffer[Rpointer++]=SBUF;
62 2 if((Rpointer+1 == RCOUNT)&&!time_over_flag) return; /* 如果已接收完全部数据帧, 则此次通信结
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -