📄 main.lst
字号:
C51 COMPILER V7.10 MAIN 06/05/2006 11:06:47 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /* This program is used for Signalmachine.
2 Copyright by Wangr
3 2006-05-27
4 LOG:
5 2006-05-27: C8051F020 configured
6 */
7 #include <intrins.h>
8 #include <absacc.h>
9 #include <math.h>
10 #include <string.h>
11 #include <config.c>
12 #include <maindef.h>
13 #include <Flash.c>
14 #include <ram.c>
15 #include <calender.c>
16
17 /******* parameter declare *********/
18 /******* *********/
19 uchar xdata Com0RecBuf[RecBufLen], Com1RecBuf[RecBufLen],Com0SendBuf[SendBufLen], Com1SendBuf[SendBufLen],
- ComProcessBuf[RecBufLen];
20 uchar xdata Com0RecBufIdx, Com1RecBufIdx;
21 bit Com0SaveEn, Com1SaveEn, Com0RecComplete, Com1RecComplete;
22
23 uchar xdata SystemState, PhaseNum, DectNum, RunMode, RunPlanNum, TotalPlanNum;
24
25
26 /******* function declare *********/
27 /******* *********/
28 void config (void);
29 void McuInit (void);
30
31 void delayus(uchar delayvalue);
32
33 void ComDataProcess(uchar *ComRecDataAdr, uchar *ComSendDataAdr);
34
35 void FlashWE(void) ;/*Write Enable (WREN) Instruction*/
36 void FlashWD(void);/*Write Disable (WRDI) Instruction*/
37 uchar FlashRDSR(void) ;/*Read Status Register (RDSR) Instruction*/
38 /*Status Register :bit7-2 non-used; bit1 WEL(write enable latch); bit0 WIP(write in progress)*/
39 void FlashRDB(uint PageAdr, uchar Colum, uchar length, uchar *FlashBuf);/*Read Data Bytes (READ)*/
40 void FlashReadFast(uint PageAdr, uchar Colum, uchar length, uchar *FlashBuf) ;/*Read Data Bytes at Higher
-Speed (FAST_READ)*/
41 void FlashPW(uint PageAdr, uchar Colum, uchar length, uchar *FlashBuf);/*Page Write (PW)*/
42 void FlashPE(uint PageAdr, uchar Colum) ;/*Page Erase (PE)*/
43 void FlashSE(uint PageAdr, uchar Colum) ;/*Sector Erase (SE)*/
44
45 void RamByteWR(uchar RowAdr, uchar ColumnAdr, uchar ramdata);/*write 1 byte to RAM*/
46 uchar RamByteRD(uchar RowAdr, uchar ColumnAdr);/*read 1 byte from RAM*/
47
48 /******* main function *********/
49 /******* *********/
50 void main()
51 {
52 1 config();
53 1 McuInit();
C51 COMPILER V7.10 MAIN 06/05/2006 11:06:47 PAGE 2
54 1
55 1 /*read info from flash*/
56 1 do
57 1 {
58 2 FlashRDB(BasicInfoStartAddr, 0x00, 256, FlashBuf);
59 2 }while(FlashBuf[0]==0xFF);/*judge the first use ?*/
60 1
61 1 PhaseNum = FlashBuf[64];
62 1 DectNum = FlashBuf[65];
63 1
64 1 FlashRDB(BasicInfoStartAddr+1, 0x00, 256, FlashBuf);
65 1 RunMode = FlashBuf[0];
66 1 RunPlanNum = FlashBuf[1];
67 1 TotalPlanNum = FlashBuf[2];
68 1
69 1 do
70 1 {
71 2 if(Com0RecComplete)
72 2 {
73 3 ComDataProcess(Com0RecBuf, Com0SendBuf);
74 3 Com0RecComplete = 0;
75 3 }
76 2 if(Com1RecComplete)
77 2 {
78 3 Com1RecComplete = 0;
79 3 }
80 2 }while(1);
81 1 }
82
83 /******* function body *********/
84 /******* *********/
85 void McuInit (void)
86 {
87 1 /*Timer2 for UART0; Timer4 for UART1; Timer3 for 1 second control
88 1 SPI for FLASH; I2C for calender IC*/
89 1
90 1 /***** UART *****/
91 1 Com0RecBufIdx = 0;
92 1 Com1RecBufIdx = 0;
93 1 Com0SaveEn = 0;
94 1 Com1SaveEn = 0;
95 1 Com0RecComplete = 0;
96 1 Com1RecComplete = 0;
97 1
98 1 /* FLASH */
99 1 FlashCS = 1;
100 1 FlashWD();/*Flash writtten disabled*/
101 1
102 1 /*I2C master mode*/
103 1 i2c_init();
104 1 }
105
106 /* delay function ; us unit for 22.1184 MHz*/
107 void delayus(uchar delayvalue)
108 {
109 1 uchar idata i;
110 1 for(i=0;i<delayvalue;i++)
111 1 {
112 2 _nop_();
113 2 _nop_();
114 2 _nop_();
115 2 _nop_();
C51 COMPILER V7.10 MAIN 06/05/2006 11:06:47 PAGE 3
116 2 _nop_();
117 2 _nop_();
118 2 _nop_();
119 2 _nop_();
120 2 _nop_();
121 2 _nop_();
122 2 _nop_();
123 2 _nop_();
124 2 _nop_();
125 2 _nop_();
126 2 _nop_();
127 2 _nop_();
128 2 _nop_();
129 2 _nop_();
130 2 _nop_();
131 2 _nop_();
132 2 _nop_();
133 2 _nop_();
134 2 }
135 1 }
136
137 /**** timer3 for 1 second control ****/
138 void timer3_int(void) interrupt 14 using 0
139 {
140 1 TMR3CN &= 0x7F;
141 1 }
142
143
144 void serial0_int(void) interrupt 4 using 1
145 {
146 1 if(RI0)
147 1 {
148 2 RI0 = 0;
149 2 if(Com0SaveEn)
150 2 {
151 3 Com0RecBuf[Com0RecBufIdx++] = SBUF0;
152 3 if(Com0RecBufIdx==RecBufLen)
153 3 {
154 4 Com0SaveEn = 0;
155 4 Com0RecComplete = 1;
156 4 }
157 3 }
158 2 else
159 2 {
160 3 Com0RecBuf[0] = Com0RecBuf[1];
161 3 Com0RecBuf[1] = SBUF0;
162 3 if(Com0RecBuf[0]==0xEB&&Com0RecBuf[1]==0x90)
163 3 {
164 4 Com0SaveEn = 1;
165 4 Com0RecBufIdx = 2;
166 4 }
167 3 }
168 2 }
169 1 if(TI0)
170 1 {
171 2 TI0=0;
172 2 /* if (PacketIdx < TxPacketLen) // Downlink Packet is unique to 32 Bytes.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -