📄 jiankong.lst
字号:
C51 COMPILER V7.06 JIANKONG 05/07/2005 20:29:54 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE JIANKONG
OBJECT MODULE PLACED IN JianKong.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE JianKong.c ROM(COMPACT) REGFILE(.\ShiLong.ORC) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /////////////////////////////////////////////////////////////////////////////////////////////////////////
2 //FileName: JianKong.c
3 //Function: System control, I2c bus, display control
4 //Version: 1.0
5 //ModifyTime: 2005.3.10
6 //CopyRight: jtshi
7 /////////////////////////////////////////////////////////////////////////////////////////////////////////
8
9 #include "reg51.h"
10 #include <intrins.h>
11 #include "shilongdianzi.h"
12
13 //constant define
14 #ifndef uchar
15 #define uchar unsigned char
16 #endif
17
18 #ifndef uint
19 #define uint unsigned int
20 #endif
21
22 #define _Nop() _nop_() //NULL
23 /////////////////////////////////////////////////////////////////////////////////////////////////////////
24 // X5045 related contant
25 /*#define WREN 0x06
26 #define WRDI 0x04
27 #define RSDR 0x05
28 #define WRSR 0x01
29 #define READ 0x03
30 #define WRITE 0x02
31 #define STATUS_REG 0x00
32 #define MAX_POLL 0x99*/
33
34 //Pin Define
35 //////////////////////////////////////////////////////////////////////////////////////////////////////////
36 //Control line
37 sbit KEY_LINE_1 = P1^0; //Control line 1(1)
38 sbit KEY_LINE_2 = P1^1; //Control line 2(2)
39 sbit KEY_LINE_3 = P1^2; //Control line 3(3)
40 sbit KEY_LINE_4 = P1^3; //Control line 4(4)
41 sbit KEY_LINE_5 = P2^0; //Control line 5(21)
42 sbit KEY_LINE_6 = P2^1; //Control line 6(22)
43
44 //Display pin
45 sbit DISPLAY_CS = P2^4; //LCD Control Write Ctrl(25)
46 sbit DISPLAY_WR = P3^6; //LCD Control Write Ctrl(16)
47 sbit DISPLAY_RD = P3^7; //LCD Control Read Ctrl(17)
48
49 sbit DISPLAY_A0 = P2^7; //LCD Address 0(28)
50 sbit DISPLAY_A1 = P2^6; //LCD Address 1(27)
51 sbit DISPLAY_A2 = P2^5; //LCD Address 2(26)
52
53 sbit DISPLAY_D0 = P0^0; //LCD Data 0(39)
54 sbit DISPLAY_D1 = P0^1; //LCD Data 1(38)
55 sbit DISPLAY_D2 = P0^2; //LCD Data 2(37)
C51 COMPILER V7.06 JIANKONG 05/07/2005 20:29:54 PAGE 2
56 sbit DISPLAY_D3 = P0^3; //LCD Data 3(36)
57 sbit DISPLAY_D4 = P0^4; //LCD Data 4(35)
58 sbit DISPLAY_D5 = P0^5; //LCD Data 5(34)
59 sbit DISPLAY_D6 = P0^6; //LCD Data 6(33)
60 sbit DISPLAY_D7 = P0^7; //LCD Data 7(32)
61
62 //watch dog and EPROM
63 sbit WD_CS = P1^5; //Watch dog CS(6)
64 sbit WD_SO = P1^4; //Watch dog SO(5)
65 sbit WD_SCK = P1^7; //Watch dog SCK(8)
66 sbit WD_SI = P1^6; //Watch dog SI(7)
67
68 //I2C Bus
69 sbit SDA=P2^2; //I2C data
70 sbit SCL=P2^3; //I2C clk
71
72 //Other
73 //sbit C51_2P2 = P2^2; //Other 1(23)
74 //sbit C51_2P3 = P2^3; //Other 2(24)
75 sbit C51_3P2 = P3^2; //Other 3(12)
76 sbit C51_3P3 = P3^3; //Other 4(13)
77 sbit C51_3P4 = P3^4; //Other 5(14)
78 sbit C51_3P5 = P3^5; //Other 6(15)
79
80 //////////////////////////////////////////////////////////////////////////////////////////////////////////
-/////
81 //global variables
82 uchar fontMask[] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};//0x08/0x88
83 // 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E
- 0x0F 0x10 0x11 0x12
84 uchar SAAreg[] = {0x00, 0x00, 0xc0, 0x33, 0x00, 0x00, 0xeb, 0xe0, 0x08, 0x01, 0x80, 0x47, 0x40, 0x00, 0x01
-, 0x00, 0x48, 0x0c, 0x00};
85
86 bit ack; //acknologe
87 //Function Declear
88 //////////////////////////////////////////////////////////////////////////////////////////////////////////
-//////
89 //watch dog
90 /*void x5045_initial();
91 void x5045_rst_wdog();*/
92
93 //Display Ctrl
94 void InitLcd();
95 void ControlLcd(uchar clr, uchar xinc, uchar single);
96 void WriteAddrToLcd(uchar type, uchar dataA); //type: Xlow-0; Xhigh-1; Ylow-2; Yhigh-3
97 void WriteSingleDataToLcd(uchar type, uchar dataA, uchar iFb); //type: data-6; FrontColor-4; IFb: Word-1;
- Video and Word-0
98 void WriteMultiDataToLcd(uchar type, uchar dataA); //type: data-6;
99 void ClearScreen(); //Clear Screen
100 void SetPosXY(uint x, uint y); //Set position
101 void WriteMultiWord(uint x, uint y, uint xNum, uint yNum, uchar *pData); //write word at Screen
102 void Write3Digit(uint x, uint y, uchar num); //write word at Screen
103 //I2C bus
104 void Start_I2c();
105 void Stop_I2c();
106 void SendByte(uchar c);
107 uchar RcvByte();
108 void Ack_I2c(bit a);
109 bit ISendByte(uchar sla, uchar c);
110 bit IRcvByte(uchar sla, uchar *c);
111
112 //SAA7111A
C51 COMPILER V7.06 JIANKONG 05/07/2005 20:29:54 PAGE 3
113 void ConfigSAA7111A();
114
115 //定时器0
116 void InitTimer0() reentrant;
117 void Timer0ISR();
118
119 //////////////////////////////////////////////////////////////////////////////////////////////////////////
-/
120 void main (void)
121 {
122 1
123 1 uchar flag = 0, switchInput = 0, swVideoWord = 0; //start position
124 1 uint t; //tmp
125 1 EA = 0; //disable all int
126 1
127 1 //Initial Lcd
128 1 InitLcd();
129 1 //Word and Video, Xinc, multiWrite
130 1 ControlLcd(0, 1, 1);
131 1 //write frontcolor(black)
132 1 WriteSingleDataToLcd(4, 0, 0);
133 1 //clear screen
134 1 ClearScreen();
135 1 //write frontcolor(blue)
136 1 WriteSingleDataToLcd(4, 0x03, 1);
137 1 //coord(x = 20, y = 30) : WL
138 1 WriteMultiWord(20, 30, 8, 48, shangbiaoWL);
139 1 //write frontcolor(red)
140 1 WriteSingleDataToLcd(4, 0xe0, 1);
141 1 //coord(x = 20, y = 30):circle
142 1 WriteMultiWord(20, 30, 8, 48, shangbiaohuan);
143 1 //write frontcolor(blue)
144 1 WriteSingleDataToLcd(4, 0x03, 1);
145 1 //coord(x = 20, y = 80):世
146 1 WriteMultiWord(20, 80, 2, 16, CodeShi);
147 1
148 1 //coord(x = 20, y = 36):龙
149 1 WriteMultiWord(36, 80, 2, 16, CodeLong);
150 1
151 1 //coord(x = 20, y = 52):电
152 1 WriteMultiWord(52, 80, 2, 16, CodeDian);
153 1
154 1 //coord(x = 20, y = 68):子
155 1 WriteMultiWord(68, 80, 2, 16, CodeZi);
156 1
157 1 //coord(x = 500, y = 30):亮度
158 1 WriteMultiWord(150, 200, 6, 16, CodeLiangDu);
159 1 Write3Digit(200, 200, SAAreg[10]);
160 1
161 1 //coord(x = 500, y = 50):对比度
162 1 WriteMultiWord(134, 220, 8, 16, CodeDuiBiDu);
163 1 Write3Digit(200, 220, SAAreg[11]);
164 1
165 1 ////////////////////////////////////////////////////////////////////////////////
166 1 while(1) //Loop forever
167 1 {
168 2 //judge key press
169 2 if(KEY_LINE_1 == 1)
170 2 {
171 3 for(t = 0; t < 1000; t ++) ;
172 3 if(KEY_LINE_1 == 1) //Line1 Pressed
173 3 flag = 1;
C51 COMPILER V7.06 JIANKONG 05/07/2005 20:29:54 PAGE 4
174 3 }
175 2 else if(KEY_LINE_2 == 1)
176 2 {
177 3 for(t = 0; t < 1000; t ++) ;
178 3 if(KEY_LINE_2 == 1) //Line2 Pressed
179 3 flag = 2;
180 3 }
181 2 else if(KEY_LINE_3 == 1)
182 2 {
183 3 for(t = 0; t < 1000; t ++) ;
184 3 if(KEY_LINE_3 == 1) //Line3 Pressed
185 3 flag = 3;
186 3 }
187 2 else if(KEY_LINE_4 == 1)
188 2 {
189 3 for(t = 0; t < 1000; t ++) ;
190 3 if(KEY_LINE_4 == 1) //Line4 Pressed
191 3 flag = 4;
192 3 }
193 2 else if(KEY_LINE_5 == 1)
194 2 {
195 3 for(t = 0; t < 1000; t ++) ;
196 3 if(KEY_LINE_5 == 1) //Line5 Pressed
197 3 flag = 5;
198 3 }
199 2 else if(KEY_LINE_6 == 1)
200 2 {
201 3 for(t = 0; t < 1000; t ++) ;
202 3 if(KEY_LINE_6 == 1) //Line6 Pressed
203 3 flag = 6;
204 3 }
205 2
206 2 ////////////////////////////////////////////////
207 2 switch(flag)
208 2 {
209 3 case 1: //显示 切换
210 3 if(swVideoWord == 0)
211 3 {
212 4 swVideoWord = 1;
213 4 ControlLcd(1, 1, 1);
214 4 }
215 3 else
216 3 {
217 4 swVideoWord = 0;
218 4 ControlLcd(0, 1, 1);
219 4 }
220 3 break;
221 3 case 2: //输入通道切换
222 3 if(switchInput == 0)
223 3 {
224 4 SAAreg[2] = 0xc0;
225 4 ConfigSAA7111A();
226 4 switchInput = 1;
227 4 }
228 3 else
229 3 {
230 4 SAAreg[2] = 0xc2;
231 4 ConfigSAA7111A();
232 4 switchInput = 0;
233 4 }
234 3 break;
235 3 case 3: //亮度增加
C51 COMPILER V7.06 JIANKONG 05/07/2005 20:29:54 PAGE 5
236 3 //write frontcolor(black)
237 3 WriteSingleDataToLcd(4, 0x00, 0);
238 3 Write3Digit(200, 200, SAAreg[10]);
239 3 if(SAAreg[10] < 198)
240 3 SAAreg[10] += 1;
241 3 ConfigSAA7111A();
242 3 //write frontcolor(blue)
243 3 WriteSingleDataToLcd(4, 0x03, 1);
244 3 Write3Digit(200, 200, SAAreg[10]);
245 3 break;
246 3 case 4: //亮度减小
247 3 //write frontcolor(black)
248 3 WriteSingleDataToLcd(4, 0x00, 0);
249 3 Write3Digit(200, 200, SAAreg[10]);
250 3 if(SAAreg[10] > 61)
251 3 SAAreg[10] -= 1;
252 3 ConfigSAA7111A();
253 3 //write frontcolor(blue)
254 3 WriteSingleDataToLcd(4, 0x03, 1);
255 3 Write3Digit(200, 200, SAAreg[10]);
256 3 break;
257 3 case 5://对比度增加
258 3 //write frontcolor(black)
259 3 WriteSingleDataToLcd(4, 0x00, 0);
260 3 Write3Digit(200, 220, SAAreg[11]);
261 3 if(SAAreg[11] < 120)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -