?? 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 + -