📄 模拟中断shou.lst
字号:
C51 COMPILER V8.05a 模拟中断SHOU 03/30/2009 17:11:43 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 模拟中断SHOU
OBJECT MODULE PLACED IN 模拟中断shou.OBJ
COMPILER INVOKED BY: D:\Program Files\keil c51 v8.05\C51\BIN\C51.EXE 模拟中断shou.c COMPACT BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<STC12C5410AD.H>
2 sbit BT_REC=P3^4;
3 #define F_TM F0
4 unsigned char msm[23];
5 unsigned char rspoint,x,z;
6 sbit ACC0= ACC^0;
7 sbit ACC1= ACC^1;
8 sbit ACC2= ACC^2;
9 sbit ACC3= ACC^3;
10 sbit ACC4= ACC^4;
11 sbit ACC5= ACC^5;
12 sbit ACC6= ACC^6;
13 sbit ACC7= ACC^7;
14 void sendasc(unsigned char asc);//发送一个ASCII码
15 void sendtogsm(unsigned char *p,int L);//发送字符串
16
17 //--------------发送字符串---------------------
18 void sendtogsm(unsigned char *p,int L)//1、字符串数组 2、字符串长度
19 {
20 1 while (L--)
21 1 {
22 2 sendasc(*p++);
23 2 }
24 1 }
25
26 /**********************延时*****************/
27 void delay(int x)
28 {
29 1 int i;
30 1 for (i=0;i<=x;i++);
31 1 }
32
33 /**********检测起始位**********************/
34 bit StartBitOn()
35 {
36 1 return (BT_REC==0);
37 1
38 1 }
39 /***************外部中断*******************/
40 void time() interrupt 0
41 {
42 1 F_TM=1;
43 1
44 1 }
45
46 /*************外部中断初始化**************/
47 void init()
48 {
49 1 IT0=1;
50 1 EA=1;
51 1 EX0=1;
52 1 ACC=0XFF;
53 1 }
54
55 /***********串口通讯设置**************/
C51 COMPILER V8.05a 模拟中断SHOU 03/30/2009 17:11:43 PAGE 2
56 void cksz()
57 {
58 1
59 1 TMOD=0x20; //波特率设置
60 1 TH1=0xfd;
61 1 TL1=0xfd;
62 1 TR1=1;
63 1
64 1 REN=1;//工作方式设置
65 1 SM0=0;
66 1 SM1=1;
67 1 EA=1; //开启中断
68 1 ES=1;
69 1 }
70
71 //-----------发送一个ASCII码----------------
72 void sendasc(unsigned char asc)
73 {
74 1 bit es;
75 1 es=ES;
76 1 ES=0;
77 1 TI=0;
78 1 SBUF=asc;
79 1 while(!TI);
80 1 TI=0;
81 1 ES=es;
82 1 }
83
84
85
86
87 /********************接收函数***************/
88 unsigned char PGetChar()
89 {
90 1 F_TM=0;
91 1 while(!F_TM); //等过起始位
92 1 ACC0=BT_REC;
93 1
94 1 F_TM=0;
95 1 while(!F_TM);
96 1 ACC1=BT_REC;
97 1
98 1 F_TM=0;
99 1 while(!F_TM);
100 1 ACC2=BT_REC;
101 1
102 1 F_TM=0;
103 1 while(!F_TM);
104 1 ACC3=BT_REC;
105 1
106 1 F_TM=0;
107 1 while(!F_TM);
108 1 ACC4=BT_REC;
109 1
110 1 F_TM=0;
111 1 while(!F_TM);
112 1 ACC5=BT_REC;
113 1
114 1 F_TM=0;
115 1 while(!F_TM);
116 1 ACC6=BT_REC;
117 1
C51 COMPILER V8.05a 模拟中断SHOU 03/30/2009 17:11:43 PAGE 3
118 1 F_TM=0;
119 1 while(!F_TM);
120 1 ACC7=BT_REC;
121 1
122 1 F_TM=0;
123 1 while(!F_TM)
124 1 {
125 2 if(BT_REC)
126 2 {
127 3 break;
128 3 }
129 2 }
130 1 return ACC;
131 1 }
132
133
134
135 /**************主函数****************/
136 void main()
137
138 {
139 1 //PCON=0x80;//设置波特率为19200 若想变成9600删除此行即可
140 1 cksz();
141 1 rspoint=0;
142 1 init();
143 1 z=0;
144 1 while(1)
145 1 {
146 2
147 2
148 2
149 2 if(StartBitOn())
150 2
151 2 {
152 3
153 3 x=PGetChar();
154 3 if(x=='~')
155 3 {
156 4 z=1;
157 4 }
158 3 if(x=='!')
159 3 {
160 4 rspoint=0;
161 4 z=0;
162 4 sendtogsm(msm,23);
163 4 }
164 3 if(z==1)
165 3 {
166 4 msm[rspoint]=x;
167 4
168 4 if(rspoint==3)
169 4 {
170 5 if(x=='A') P0=0x00;
171 5 if(x=='B') P0=0XFF;
172 5 }
173 4 rspoint++;
174 4 }
175 3
176 3
177 3
178 3 }
179 2
C51 COMPILER V8.05a 模拟中断SHOU 03/30/2009 17:11:43 PAGE 4
180 2 }
181 1
182 1 }
183 void time4() interrupt 4
184 {
185 1 RI=0;
186 1
187 1 }
188
189
190
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 334 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = 26 5
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -