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