?? 800.lst
字號:
C51 COMPILER V7.00 800 08/08/2006 18:57:28 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE 800
OBJECT MODULE PLACED IN 800.OBJ
COMPILER INVOKED BY: C:\Keil\C51\Bin\c51.exe 800.C DB SB OE ROM(LARGE) SMALL OT(6,SPEED) WL(2) RB(0)
stmt level source
1 #include<STC12C5410AD.H>
2 #include<800.h>
3 /*********************************************************/
4 #define key_num 150
5 //#include<STC89C51RC_RD.H>
6 /*******************************************************/
7 //uchar data *ATT1=0x
8 /********************************************************/
9 void delay_us(uint dat);
10 void delay_ms(uint dat);
11 void initial(void);
12 void initial_UART(void);
13 void Send_one_Byte(uchar dat);
14 void Send_AT(void);
15 void receive(void);
16 void input(void);
17 void Send_AA(uchar *dat,uchar len); //發(fā)送前l(fā)en個字符
18 void AT_IO(void); //短消息命令判斷處理
19 void Send_CMGS(uchar *dat); //發(fā)送短信
20 uchar Lookup(uchar *dat,uchar len); //
21 void ISP_IAP_enable(void); //
22 void ISP_IAP_disable(void);
23 void sector_erase(uint sector_addr);
24 uchar byte_read(uint byte_addr);
25 void byte_program(uint byte_addr, uchar original_data); //寫EEPROM一字節(jié)
26 bit Write_SN(uchar *dat,uchar *SN_); //寫密碼
27 bit Write_ATT(uchar *dat,uint addr); //寫手機號碼
28 void Send_Alarm(void); //發(fā)送報警短信
29 void Send_D001(void);
30 void Send_E001(void);
31 void ADC_read(uchar dat);
32 void charge(void);
33 //void incept(void);
34 /********************************************************/
35 bit comgnd=0;
36 //bit
37 uchar pointer;
38 uint key_delay=0;
39 uchar ADCdata=0;
40 uchar Send_num=0;
41 bit SNS=1;
42 bit WING=1;
43 sbit ON_OFF=P1^3;
44 sbit Alarm1=P2^6;
45 sbit Alarm2=P2^7;
46 //sbit ON_OFF=P3^5;
47 //sbit Alarm1=P3^4;
48 //sbit Alarm2=P3^3;
49 sbit DC34=P1^4;
50 sbit DC42=P1^5;
51 sbit A_IO=P2^0; //繼電器1
52 sbit B_IO=P2^1; //繼電器2
53 sbit LED=P3^7;
54 sbit DC_IO=P3^2; //充電
55 //uchar code ON[]={0x31,0x00,0x32,0x00,0x33,0x00,0x34,0x00,0x35,0x00,0x36,0x51,0x73,0x67,0x3A};
C51 COMPILER V7.00 800 08/08/2006 18:57:28 PAGE 2
56 //uchar code OFF[]={0x31,0x00,0x32,0x00,0x33,0x00,0x34,0x00,0x35,0x00,0x36,0x5F,0x00,0x67,0x3A};
57 //uchar pino[]={0x73,0x67,0x3A,0x31,0x00,0x32,0x00,0x33,0x00,0x34};
58 //uchar code AT_CMGS_[]={0x41,0x54,0x2B,0x43,0x4D,0x47,0x53,0x3D,0x33,0x2C,0x31,0x33,0x35};
59 // 0x35,0x33,0x34,0x38,0x34,0x34,0x34,0x2C,0x30,0x2C,0x30,0x2C,0x41,0x4B,0x0D,0x0A};
60 //uchar code CMGR[]={0x0D,0x0A,0x2B,0x43,0x4D,0x47,0x52,0x3A,0x20,0x30,0x30,0x30,0x30,0x31,0x32,0x33,0x30,
-0x2C,0x31,0x33,0x35,0x33,0x35,0x33,0x34,0x38,0x34,0x34,0x34,0x2C,0x31,0x33,0x35,0x33,0x35,0x33,0x34,0x38,0x34,0x34,0x34,
-0x2C,0x32,0x30,0x30,0x36,0x2F,0x30,0x34,0x2F,0x30,0x39,0x2F,0x31,0x33,0x3A,0x34,0x38,0x2C,0x39,0x2C,0x31,0x32,0x33};
-
61 void main(void)
62 {
63 1 // uchar i;
64 1 // OFF_3=0;
65 1 // OFF_4=0;
66 1 LED=1;
67 1 delay_ms(800);
68 1 initial();
69 1 initial_UART();
70 1 for(;;)
71 1 {
72 2 input();
73 2 charge();
74 2 if(comgnd==1)
75 2 {
76 3 AT_IO();
77 3 comgnd=0;
78 3 initial_UART();
79 3 }
80 2 }
81 1 }
82 /*************************************************************
83 初始化
84 **************************************************************/
85 void initial(void)
86 {
87 1 uchar i;
88 1 /*************************************************/
89 1 /*---------------ADC------------------*/
90 1 // P1M0=0x03; //P1.0,P1.1 為AD輸入腳
91 1 // P1M1=0x03;
92 1 // ADC_CONTR=ADC_CONTR|0xE0; //打開ADC電源 210個時鐘周期
93 1 /*************************************************/
94 1 pointer=0;
95 1 if(byte_read(0x2A00)!=0x5A)
96 1 {
97 2 sector_erase(0x2800);
98 2 delay_ms(25);
99 2 for(i=0;i<6;i++)
100 2 {
101 3 byte_program((0x2800+i),(0x31+i));
102 3 delay_ms(25);
103 3 }
104 2 sector_erase(0x2A00);
105 2 delay_ms(25);
106 2 byte_program((0x2A00),0x5A);
107 2 }
108 1 for(i=0;i<6;i++)
109 1 {
110 2 SN[i]=byte_read(0x2800+i);
111 2 }
112 1 /*************************************************/
113 1 }
114 /************************************************************
C51 COMPILER V7.00 800 08/08/2006 18:57:28 PAGE 3
115 串口初始化
116 115200bps 波特率, 8bit 數(shù)據(jù) 位,無奇偶校驗,1bit 停止位,硬件數(shù)據(jù)流控制。
117 SCON 地址98H
118 可位尋址 7 6 5 4 3 2 1 0
119 復位值 00H SM0/FE SM1 SM2 REN TB8 RB8 TI RI
120 位 符號 功能
121 SCON.7 FE 幀錯誤位當檢測到一個無效停止位時通過UART 接收器設置該位但它必須由
122 軟件清零要使該位有效PCON 寄存器中的SMOD0 位必須置1
123 SCON.7 SM0和SM1 定義串口操作模式要使該位有效PCON 寄存器中的SMOD0 必須置0
124 SCON.6 SM1和SM0 定義串行口操作模式見下表
125 SM0 SM1 UART 模式 波特率
126 0 0 0: 同步移位寄存器 fosc/12 12 時鐘模式或fosc/6 6 時鐘模式
127 0 1 1: 8 位UART 可變
128 1 0 2: 9 位UART fosc /64 或fosc /32(12 時鐘); fosc /32 或fosc /16(6 時鐘模式)
129 1 1 3: 9 位UART 可變
130 SCON.5 SM2 在模式2 和3 中多處理機通信使能位在模式2 或3 中若SM2=1 且接收到的第
131 9 位數(shù)據(jù)RB8 是0 則RI 接收中斷標志不會被激活在模式1 中若SM2=1
132 且沒有接收到有效的停止位則RI 不會被激活在模式0 中SM2 必須是0
133 SCON.4 REN 允許接收位由軟件置位或清除REN=1 時允許接收REN=0 時禁止接收
134 SCON.3 TB8 模式2 和3 中發(fā)送的第9 位數(shù)據(jù)可以按需要由軟件置位或清除
135 SCON.2 RB8 模式2 和3 中已接收的第9 位數(shù)據(jù)在模式1 中或sm2=0 RB8 是已接收的停止
136 位在模式0 中RB8 未用
137 SCON.1 TI 發(fā)送中斷標志模式0 中在發(fā)送完第8 位數(shù)據(jù)時由硬件置位其它模式中在
138 發(fā)送停止位之初由硬件置位在任何模式中都必須由軟件來清除TI
139 SCON.0 RI 接收中斷標志模式0 中接收第8 位結束時由硬件置位其它模式中在接收停
140 止位的中間時刻由硬件置位在任何模式(SM2 所述情況除外)必須由軟件清除RI
141 =======================================================================================
142 表7 中斷表
143 中斷源 優(yōu)先順序 請求位 硬件清除 入口地址
144 X0 1 IE0 N(L)1 Y(T)2 03H
145 T0 2 TP0 Y 0BH
146 X1 3 IE1 N(L) Y(T) 13H
147 T1 4 TF1 Y 1BH
148 PCA 5 CF,CCFn(n=0-4) N 33H
149 SP 6 R1,T1 N 23H
150 T2 7 TF2,EXF2 N 2BH
151 注
152 1 L= 電平激活
153 2 T= 翻轉激活
154 IE(0A8H) 7 6 5 4 3 2 1 0
155 EA EC ET2 ES ET1 EX1 ET0 EX0
156 使能位=1 使能中斷
157 使能位=0 禁止中斷
158 位 標號 功能
159 IE.7 EA 全局禁止位如果EA=0 禁止所有中斷如果EA=1 通過置
160 位或清除使能位對應的每個中斷被使能或禁止
161 IE.6 EC PCA中斷使能位
162 IE.5 ET2 定時器2 中斷使能位
163 IE.4 ES 串行口中斷使能位
164 IE.3 ET1 定時器1 中斷使能位
165 IE.2 EX1 外部中斷1 使能位
166 IE.1 ET0 定時器0 中斷使能位
167 IE.0 EX0 外部中斷0 使能位
168 圖20 IE 特殊功能寄存器
169 IP(0B8H) 7 6 5 4 3 2 1 0
170 PT2 PS PT1 PX1 PT0 PX0
171 中斷優(yōu)先級控制位=1 定義為高優(yōu)先級中斷
172 中斷優(yōu)先級控制位=0 定義為低優(yōu)先級中斷
173 位 標號 功能
174 IP.7
175 IP.6 PPC PCA 中斷優(yōu)先級控制位
176 IP.5 PT2 定時器2 中斷優(yōu)先級控制位
C51 COMPILER V7.00 800 08/08/2006 18:57:28 PAGE 4
177 IP.4 PS 串行口中斷優(yōu)先級控制位
178 IP.3 PT1 定時器1 中斷優(yōu)先級控制位
179 IP.2 PX1 外部中斷1 中斷優(yōu)先級控制位
180 IP.1 PT0 定時器0 中斷優(yōu)先級控制位
181 IP.0 PX0 外部中斷0 中斷優(yōu)先級控制位
182 / ***********************************************************/
183 void initial_UART(void)
184 {
185 1 SCON=0x50;
186 1 TMOD=0x20;
187 1 // SMOD=1;
188 1 PCON|=0x80;
189 1 TH1=0xF4;
190 1 AUXR|=0x40;
191 1 TR1=1; //啟動T1
192 1 ET1=0;
193 1 // ET2=0;
194 1 ES=1;
195 1 EA=1;
196 1 }
197 /*************************************************************
198 **************************************************************/
199 void delay_us(uint dat)
200 {
201 1 do
202 1 dat--;
203 1 while(dat);
204 1 }
205 /************************************************************
206 *************************************************************/
207 void delay_ms(uint dat)
208 {
209 1 do
210 1 {
211 2 delay_us(2000);
212 2 dat--;
213 2 }
214 1 while(dat);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -