c_main.lst
来自「433.92m无线模块的接收到有效数据后」· LST 代码 · 共 421 行 · 第 1/2 页
LST
421 行
C51 COMPILER V7.02b C_MAIN 08/06/2007 21:11:12 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE C_MAIN
OBJECT MODULE PLACED IN c_main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.exe c_main.c DEBUG OBJECTEXTEND NOCOND PREPRINT(.\c_main.i)
stmt level source
1 /////////////////////////////////////////////////////
2 /////////////////////////////////////////////////////
3 #include <Reg935.h>
4 #include <intrins.h>
5 #include <cewen.h>
6 #include <UART2.H>
7 #include <W_R_E2RAM.h>
8 ////////////////////////////////////////////////////
9 unsigned char sendRQ=0;
10 unsigned char ch=0;
11 char text[]="response at 9600 baud";
12 ////////////////////////////////////////////////////
13 //////////////////////////////////////////////////////
14 ////////////////////////////////////////////////////////////////////
15 //---------------------------------------------------------------------------------------
16 //delayms: 在使用内部RC震荡器时延时毫秒子程序
17 //入口参数: i 延时MS数
18 //出口参数: (无)
19 //---------------------------------------------------------------------------------------
20 void delayms(int i)
21 {
22 1 unsigned int k;
23 1 while(i>0)
24 1 {
25 2 for(k=0;k<670;k++);
26 2 i--;
27 2 }
28 1 }
29 //---------------------------------------------------------------------------------------
30 //InitTimer: 初始化系统定时器
31 //---------------------------------------------------------------------------------------
32 void InitTimer(void)
33 {
34 1 AUXR1=0x10; //ENT0=1,允许T0溢出触发输出
35 1 TMOD = 0x12; //TIMER0工作在MODE6,TIMER1工作在MODE1
36 1 TAMOD = 0x01;
37 1 //TH0=0x80; //赋初值
38 1 TR0=0; //启动定时器0
39 1 ET1=1;
40 1 EA=1;
41 1 }
42 /////////////////////////////////////////////////////////////////////////////////////////
43 void Init_Serial(void)
44 {
45 1 SSTAT=0x60; // separate Rx / Tx interrupts
46 1 PCON&=0x3f; /*UART 设置工作方式3,11 位数据*/
47 1 if(WorkMode==0x01) SCON=0x50;
48 1 else SCON=0xd0; // select BRG as UART Baud Rate Gen
49 1 BRGCON=0x00; /*装入波特率常数,0--1200bps 1--2400bps 2--4800bps*/
50 1 if(botelv==1) BRGR1_DATA=0x17;
51 1 else if(botelv==2)BRGR1_DATA=0x0b;
52 1 else if(botelv==3)BRGR1_DATA=0x05;
53 1 else if(botelv==4)BRGR1_DATA=0x02;
54 1 BRGR0_DATA=0xf0;
55 1 //////////////////////////////////////////////////////////////////////
C51 COMPILER V7.02b C_MAIN 08/06/2007 21:11:12 PAGE 2
56 1 BRGR1=BRGR1_DATA;
57 1 BRGR0=BRGR0_DATA;
58 1 BRGCON=0x03; //enable BRG
59 1 EST=0;
60 1 ESR=1;
61 1 ES = 1;
62 1 EA=1;
63 1 }
64 ////////////////////////////////////////////////////////////////////////////////////////
65 void UART_ISR(void) interrupt 4
66 {
67 1 RI = 0; // clear receive interrupt flag
68 1 TI = 0;
69 1 ser_dat[ch]=SBUF; // copy input bufffer to ch
70 1 ch++;
71 1 if(sendRQ==0) sendRQ=1; // set flag for polling in main loop
72 1 }
73 ////////////////////////////////////////////////////////////////////////////////////////
74 /********************************************************************
75 串口发送一个字节
76 功能:发送一个字节数据
77 入口参数:发送数据
78 出口参数:无
79 ********************************************************************/
80 void Send_Data(uchar Serial_data)
81 {
82 1 ACC=Serial_data;
83 1 TB8=P;TI=0;
84 1 SBUF=Serial_data;
85 1 while(!TI);
86 1 TI=0; /*发送一个字节,并进行偶校验*/
87 1 }
88 ////////////////////////////////////////////////////////////////////////////////////////
89 /*void sendtoPC(char* dat)
90 {
91 int j=0;
92 if(WorkMode==1)
93 {while(dat[j]) // send string
94 {
95 TI=0; // clear transmit interrupt flag
96 SBUF=dat[j]; // start sending one byte
97 while (!TI); // wait until sent
98 j++;
99 }
100 }
101 else
102 { while(dat[j]) // send string
103 {Send_Data(dat[j]); j++;}
104
105 }
106
107 }*/
108 ////////////////////////////////////////////////////////////////////////////////////////
109 void sendtoPCa(void)
110 { int j=0;
111 1 if(WorkMode==1)
112 1 {while(ch--) // send string
113 2 {
114 3 TI=0; // clear transmit interrupt flag
115 3 SBUF=ser_dat[j]; // start sending one byte
116 3 while (!TI); // wait until sent
117 3 j++;
C51 COMPILER V7.02b C_MAIN 08/06/2007 21:11:12 PAGE 3
118 3 }
119 2 }
120 1 else
121 1 { while(ch--) // send string
122 2 {Send_Data(ser_dat[j]);j++; }
123 2
124 2 }
125 1 }
126 /////////////////////////////////////////////////////////////////////////////////////////
127 //初始化CPU——IO口
128 ////////////////////////////////////////////////////////////////////////////////////////
129 void Init_cpuio(void)
130 { P0M1=0x5e; //01011110 //P0.4~p0.1设置为仅为输入状态AD_io//
131 1 P0M2=0x80; //10000000 //p0.0-key1,p.05-key2//p0.6-RX,p0.7-TX 无线接收发射//
132 1 /////////////////////////////////////////////////////////////////////////////////////
133 1 P1M1=0x3e; //00111111 //P10-RXD,P11-TXD
134 1 P1M2=0xff; //11111111 //P16-LED_RED,LED-GREE
135 1 /////////////////////////////////////////////////////////////////////////////////////
136 1 P2M1=0x6c; //01101100 //RFC-P20,SD3-P21,
137 1 P2M2=0xff; //11111111 //SD2-P26,SD1-P27
138 1 /////////////////////////////////////////////////////////////////////////////////////
139 1 KF=1;
140 1 RFC=1; //无线接收状态控制位0为发送,1为接收状态
141 1 uart2txd=0; //无线发射端
142 1 CTRL485=1; //1为接收;0为发送485接收状态
143 1 LED_red=1; //
144 1 LED_green=1; //
145 1 ES = 1;
146 1 EA=1;
147 1 }
148 ////////////////////////////////////////////////////////////////////////////////////////
149 //--------------------------------------------------------------------------------------
150 //功能:RTC初始化
151 //--------------------------------------------------------------------------------------
152 void RTC_Init()
153 {
154 1 Time_S=0;
155 1 Time_M=0; //Time_M,Time_S初始化为0
156 1 IEN0|=0xC0; //使能RTC中断,使能EA中断
157 1 WDCON=0xE0; //关闭看门狗中断
158 1 RTCH=0xE0;
159 1 RTCL=0xFF; //7.3728MHz下,1s中断1次时,RTC的定时值
160 1 RTCCON=0x63; //开启RTC模块
161 1 }
162 /*------------------------------------------------------------------------------------*/
163 //-------------------------------------------------------------------------------------
164 //功能:模拟时钟变化,
165 //Time_S为秒,Time_M为分
166 //--------------------------------------------------------------------------------------
167 void Inc_time()
168 {
169 1 Time_S++;
170 1 if(Time_S>59)
171 1 {
172 2 Time_S=0;
173 2 Time_M++;
174 2 if(Time_M>59)
175 2 {
176 3 Time_M=0;
177 3 Time_x++;
178 3 if(Time_x>23) Time_x=0;
179 3 }
C51 COMPILER V7.02b C_MAIN 08/06/2007 21:11:12 PAGE 4
180 2 }
181 1 }
182 /////////////////////////////////////////////////////////////////////////////////////////
183 //-----------------------------------------------------------------------------
184 //功能:RTC中断服务程序
185 //-----------------------------------------------------------------------------
186 void RTC_ISR() interrupt 10
187 {
188 1 EA=0;
189 1 RTCCON&=0x63; //清除RTC中断标志位
190 1 Inc_time();
191 1 EA=1;
192 1 }
193 //////////////////////////////////////////////////////////////////////////////////////////
194 //////////////////////////////////////////////////////////////////////////////////////////
195 uchar Int_System(void)
196 { uchar count,num=0,i;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?