📄 int.lst
字号:
C51 COMPILER V7.10 INT 08/29/2005 13:02:03 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE INT
OBJECT MODULE PLACED IN .\out\INT.obj
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE c\INT.C BROWSE INTVECTOR(0XC000) DEBUG OBJECTEXTEND PRINT(.\l
-st\INT.lst) OBJECT(.\out\INT.obj)
line level source
1
2 #include "..\h\INT.h"
3
4
5 void Finish() interrupt 2 //using 0
6 {
7 1 }
8
9 static byte MS10=0,uS100=0,SEC=0; //单位为10mS,100uS
10
11 word TASK_TIMER;
12 void timer0() interrupt 1 //T0
13 {
14 1 uS100++;
15 1 if(uS100==100) {uS100=0;MS10++;}
16 1 if(MS10==100) {MS10=0;SEC++;}
17 1
18 1 TASK_TIMER--;
19 1
20 1 }
21
22 void Delay100uS(word time)
23 {
24 1 TASK_TIMER=time;
25 1 //while(TASK_TIMER); //wait TASK_TIMER reduced to 0,may execute other task
26 1 //可能导致恰好错过,造成无响应。
27 1 while(TASK_TIMER<10); //设置1mS的缓冲时间。
28 1 }
29
30 word GetCurruntTime(void) //10mS为单位
31 {
32 1 return(SEC*100+MS10);
33 1 }
34
35 void in_int() interrupt 0
36 {
37 1 }
38
39 /*
40 void time1() interrupt 3
41 {}
42 */
43
44 byte COMFRAME[8]={COMFLAGSTART,'0','0','0','0','0','0',COMFLAGEND}; //接收缓存
45 bit FRAMEEND=0; //接受完一帧数据置1
46 byte RECEIVE_BYTE=0; //接收到的字节数
47 byte transmite_num=0; //已经发送的字节数
48 byte FRAME_T[8]={COMFLAGSTART,'0','0','0','0','0','0',COMFLAGEND};
49 bit transmite_finish=1; //桢发送完毕置1,只有发送完一桢后才能发送下一桢
50
51 void com() interrupt 4
52 {
53 1
54 1 if(RI) //接收部分
C51 COMPILER V7.10 INT 08/29/2005 13:02:03 PAGE 2
55 1 {
56 2 if(RECEIVE_BYTE==0)
57 2 {
58 3 if(SBUF==COMFLAGSTART) {RECEIVE_BYTE=1;COMFRAME[0]=COMFLAGSTART;}
59 3 }
60 2 else if(RECEIVE_BYTE<7)
61 2 {
62 3 COMFRAME[RECEIVE_BYTE]=SBUF;
63 3 RECEIVE_BYTE++;
64 3 }
65 2 else if(RECEIVE_BYTE==7)
66 2 {
67 3 if(SBUF==COMFLAGEND) FRAMEEND=1;
68 3 RECEIVE_BYTE=0;
69 3 }
70 2 RI=0;
71 2 }
72 1
73 1 if(TI) //发送部分
74 1 {
75 2 TI=0;
76 2 if(transmite_num<7) //一桢尚未发送完
77 2 {
78 3 transmite_num++;
79 3 SBUF=FRAME_T[transmite_num];
80 3 }
81 2 else
82 2 {transmite_num=0; //一桢发送完成则重置状态
83 3 transmite_finish=1;}
84 2 }
85 1 }
86
87
88
89 void ecc(void) //发送数据的校验,从COMFLAGSTART一直加到ECC的结果为0
90 {
91 1 byte i,e=0;
92 1 byte *frame=&FRAME_T;
93 1
94 1 for(i=0;i<6;i++) e+=*(frame+i);
95 1 *(frame+6)=0x100-e;
96 1 }
97
98
99 void ComTransmite(void) //发送一桢数据,仅启动,其余工作由中断完成
100 {
101 1 extern bit transmite_finish;
102 1
103 1 while(!transmite_finish);
104 1 transmite_finish=0;
105 1 SBUF=COMFLAGSTART;
106 1 }
107
108 bit ComRecieve(void) //接收完一桢后后,置1,返回响应
109 {
110 1 byte *p=&COMFRAME;
111 1 byte *frame=&FRAME_T;
112 1
113 1 if(FRAMEEND)
114 1 {
115 2 FRAMEEND=0;
116 2 //*frame=COMFLAGSTART;
C51 COMPILER V7.10 INT 08/29/2005 13:02:03 PAGE 3
117 2 *(frame+1)=COMRECIEVE_OK;
118 2 *(frame+2)=*(p+1);
119 2 ecc();
120 2 ComTransmite(); //??
121 2
122 2 return(1);
123 2 }
124 1 else return(0);
125 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 300 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 23 9
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -