📄 computer2.lst
字号:
C51 COMPILER V8.05a COMPUTER2 04/25/2008 17:59:14 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE COMPUTER2
OBJECT MODULE PLACED IN computer2.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE computer2.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************/
2 /* 2006-05-24 */
3 /******************* RS232接收不定数据长度的程序 ********************/
4 /***************************** Ver 1.0 ******************************/
5
6 #include <reg51.h>
7 #include <math.h>
8 #include <stdio.h>
9 #include <absacc.h>
10 #include <intrins.h>
11 #include <string.h>
12 #include <stdlib.h>
13 /* 直接访问方式地址定义,根据用户平台接口修改 */
14 //PARA1 EQU 20H ; 应用于DMF682(256*128)
15 //PARA1 EQU 28H ; 应用于DMF50081/50174(320*240)
16 //PARA1 EQU 50H ; 应用于DMF50036(640*200)
17
18 #define wcadd1 XBYTE[0xbf00] /* 写指令代码地址 */
19 #define wdadd1 XBYTE[0x3f00] /* 写参数及显示数据地址 */
20 #define rdadd1 XBYTE[0xbf00] /* 读参数及显示数据地址 */
21 #define rbadd1 XBYTE[0x3c00] /* 读忙状态地址 */
22 #define Io8155 XBYTE[0xef00]
23 #define M8155 XBYTE[0xcf00]
24 #define M8155_1 XBYTE[0xcf10]
25 #define Io8155_A XBYTE[0xef01]
26 #define Io8155_B XBYTE[0xef02]
27 #define Io8155_C XBYTE[0xef03]
28
29 /* 程序参数定义,根据用户选择的LCM型号修改 32K(7FFFH)*/
30 #define True 1
31 #define False 0
32 #define PARA 0x28;
33 #define AD_Value 0x2c;
34
35 #define Rs232_Input_LEN 10
36 #define Rx_start_data 0x81
37
38 typedef unsigned char uchar;
39 typedef unsigned int uint;
40 sfr16 DPTR = 0x82;
41 sfr16 flash = 0xb3;
42 sfr SMOD = 0x87;
43 sfr SFCF = 0xb1;
44 sfr SFCM = 0xb2;
45 sfr SFAL = 0xb3;
46 sfr SFAH = 0xb4;
47 sfr SFDT = 0xb5;
48 sfr SFST = 0xb6;
49
50 sbit RS485 = P1^2; //S52
51 sbit MCU_LED = P1^0;
52 sbit MCU_LED2 = P0^0;
53 sbit Ds1302_clock = P2^2;
54 sbit Ds1302_data = P2^1;
55 sbit Ds1302_rst = P2^0;
C51 COMPILER V8.05a COMPUTER2 04/25/2008 17:59:14 PAGE 2
56
57
58 //sbit RS485 = P3^5; //C2051
59 //sbit MCU_LED = P1^7;
60 //sbit Ds1302_clock = P1^6;
61 //sbit Ds1302_data = P1^5;
62 //sbit Ds1302_rst = P1^4;
63 sbit Video = P3^7;
64 /*********************************/
65
66 /* 定义调用子程序 */
67 void Close_write_bit(void);
68 void Open_write_bit(void);
69 void Init_ds1302(void);
70 void Read_ds1302();
71 void Write_ds1302(uchar address,uchar numb);
72
73 uchar TXD_pc(uchar icode);
74 void delay_2();
75 void delay(uint count0);
76 void delay_3(uchar count0);
77
78 //;-------------- DMF-50081/50174 的SYSTEM SET 参数 --------------
79 //SYSTAB: DB 30H,87H,07H,27H,42H,0F0H,28H,00H ; P1-P8参数
80 //SCRTAB: DB 00H,00H,0F0H,00H,30H,0F0H,00H,60H,00H,00H ; P1-P10参数
81 /*-------------------240128的SYSTEM SET 参数-------------------------------*/
82 //code uchar SYSTAB[8]={0x30,0x87,0x07,0x1e,0x21,0x80,0x1f,0x00};
83 //code uchar SCRTAB[10]={0x00,0x00,0x80,0xf0,0x01,0x80,0x00,0x00,0x00,0x00};
84 /*-------------------320240的SYSTEM SET 参数-------------------------------*/
85 code uchar SYSTAB[8] = {0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00};
86 code uchar SCRTAB[10] = {0x00,0x00,0xf0,0x00,0x30,0xf0,0x00,0x60,0x00,0x00};
87 //code uchar SCRTAB[10]={0x00,0x00,0xf0,0xce,0x04,0xf0,0x80,0x00,0x00,0x00};
88 /* 在此可以观察文本方式下的字符及光标的显示效果(写入内容为"Sevicer tel:") */
89 code uchar DRAG_1[6][5] = {0,1,2,3,0xfe,0,1,4,5,0xfe,6,7,8,9,0xfe,10,8,4,5,0xfe,11,12,13,14,0xfe,53,54
-,55,56,0xff};
90 code uchar TXT_2[] = {0x84,0x84,0x84,0x84,0x84,0x84,0xff};
91 code uchar TXT_1[] = {0x80,0x80,0x80,0x80,0x80,0x82,0xff};
92 code uchar TXT_3[] = {23,23,23,23,23,23,0xff};
93 code uchar TXT_4[] = {59,57,58,60,0xff};
94 code uchar TXT_5[] = {67,68,69,63,64,0xff};
95 /* 文本方式下的汉字显示方法
96 在文本方式下显示汉字, 需要在SED1335 等显示RAM 内建立一个自定义字符库
97 CGRAM,然后通过在相应的单元写入相应的字符代码来实现汉字的显示.
98 SED1335 等的字符代码对应的是8x8 点阵的字符块, 而一个汉字需要四个8x8
99 点阵的字符块组合显示, 所以在建立汉字的CGRAM 时, 需要四个字符代码管理一个
100 汉字, 一般是按左上部, 左下部, 右上部和右下部四部分分配代码. 比如在演示程
101 序中建立 "清华" 两个汉字的CGRAM,那么这两个汉字的代码为80H(81H,82H,83H)和
102 84H(85H,86H,87H). */
103
104 uchar menu = 0;
105 uchar TH0_T,TL0_T;
106 uchar Buffer;
107 uint V_ml;
108 uchar Speed_V;
109 uchar bdata AD;
110 uint bdata Adend;
111 sbit AD_0 = AD^0;
112 sbit AD_1 = AD^1;
113 sbit AD_7 = AD^7;
114
115 bit Read_Flag;
116 bit Write_Flag;
C51 COMPILER V8.05a COMPUTER2 04/25/2008 17:59:14 PAGE 3
117
118 bit Stop;
119 bit Stop1;
120 bit Ack;
121 bit Work;
122 bit Work1;
123 /**************************/
124 /*******串口接收设置*******/
125 bit Rs232_Rece_Error;
126 bit Start_Rxd;
127 uchar Rs_buf[Rs232_Input_LEN];
128 uchar M_D[8];
129 unsigned char g_cReceNum;
130 bit Rs232_Flag;
131 /*********************/
132 /* 演示主程序 */
133 /*********************/
134 void main()
135 {
136 1
137 1
138 1
139 1
140 1 TH1 = TL1 = 0xFD; //9600Kbps
141 1 Ack = False;
142 1 g_cReceNum = 0;
143 1 Work = False;
144 1 Stop = False;
145 1 TH0_T = 0; TL0_T = 0;
146 1 delay_2();
147 1 _nop_();
148 1
149 1
150 1 MCU_LED = 0;
151 1 delay(500);
152 1 MCU_LED = 1;
153 1 delay(500);
154 1 MCU_LED = 0;
155 1 delay(500);
156 1 MCU_LED = 1;
157 1 delay(500);
158 1 MCU_LED = 0;
159 1 delay(500);
160 1 MCU_LED = 1;
161 1 Init_ds1302();
162 1
163 1
164 1
165 1
166 1 ES = 1;
167 1 delay_3(1);
168 1 SCON = SCON|0x50;
169 1 while(1)
170 1 {
171 2
172 2 TMOD = TMOD|0x21;
173 2 //PCON |= 0x80;
174 2 TR1 = True; EA = True;
175 2 TR0 = True; ET0 = True;
176 2 ES = True;
177 2 if (Rs232_Rece_Error) {
178 3 Rs232_Rece_Error = False;
C51 COMPILER V8.05a COMPUTER2 04/25/2008 17:59:14 PAGE 4
179 3 TXD_pc(0xBD);TXD_pc(0x90);TXD_pc(0x90);
180 3 TXD_pc(0x90);TXD_pc(0x90);TXD_pc(0x90);
181 3 }
182 2 if (Rs232_Flag)
183 2 {
184 3 Rs232_Flag = 0;
185 3 if (Rs_buf[2] == 0xB1)
186 3 {
187 4 RS485 = False;
188 4 MCU_LED = 0;
189 4 Work = True;
190 4 TXD_pc(0xBD);TXD_pc(0xA0);TXD_pc(0xA0);
191 4 TXD_pc(0xA0);TXD_pc(0xA0);TXD_pc(0xA0);
192 4 }
193 3 if (Rs_buf[2] == 0xB2)
194 3 {
195 4 RS485 = True;
196 4 MCU_LED = 1;
197 4 Stop = True;
198 4 TXD_pc(0xBD);TXD_pc(0xA3);TXD_pc(0xA3);
199 4 TXD_pc(0xA3);TXD_pc(0xA3);TXD_pc(0xA3);
200 4 }
201 3 if (Rs_buf[2] == 0xB3)
202 3 {
203 4 Ack = True;
204 4 }
205 3 if (Rs_buf[2] == 0xB4) //读时间秒 ,分,小时,日,月,年
206 3 {
207 4 MCU_LED = 0;
208 4 delay(10);
209 4 MCU_LED = 1;
210 4 Read_ds1302();
211 4 TXD_pc(M_D[0]);
212 4 TXD_pc(M_D[1]);
213 4 TXD_pc(M_D[2]);
214 4 TXD_pc(M_D[3]);
215 4 TXD_pc(M_D[4]);
216 4 TXD_pc(M_D[6]);
217 4 }
218 3 if (Rs_buf[2] == 0xB5) //写秒
219 3 {
220 4 MCU_LED = 0;
221 4 delay(10);
222 4 MCU_LED = 1;
223 4 Open_write_bit();
224 4 Write_ds1302(0,Rs_buf[1]);
225 4 Close_write_bit();
226 4 }
227 3 if (Rs_buf[2] == 0xB6) //写分
228 3 {
229 4 MCU_LED = 0;
230 4 delay(100);
231 4 MCU_LED = 1;
232 4 Open_write_bit();
233 4 Write_ds1302(1,Rs_buf[1]);
234 4 Close_write_bit();
235 4 }
236 3 if (Rs_buf[2] == 0xB7) //写时
237 3 {
238 4 MCU_LED = 0;
239 4 delay(10);
240 4 MCU_LED = 1;
C51 COMPILER V8.05a COMPUTER2 04/25/2008 17:59:14 PAGE 5
241 4 Open_write_bit();
242 4 Write_ds1302(2,Rs_buf[1]);
243 4 Close_write_bit();
244 4 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -