📄 disdrive.lst
字号:
C51 COMPILER V7.50 DISDRIVE 08/20/2006 14:48:05 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE DISDRIVE
OBJECT MODULE PLACED IN DISDRIVE.OBJ
COMPILER INVOKED BY: E:\Program Files\keil\C51\BIN\C51.EXE DISDRIVE.C BROWSE DEBUG OBJECTEXTEND
line level source
1 //2003.1.10
2 //write by sunny
3
4 #include "main.h"
5 #include "disdrive.h"
6
7 void HardInitialLED()
8 {
9 1 LedReset(FALSE);
10 1 SetLedE_1();
11 1 SetLedReadDataMode();
12 1
13 1 DriveControlChip(0x00,0x00);
14 1 SetLedZAddress(0x00);
15 1 SetLedXAddress(0x00);
16 1 SetLedYAddress(0x00);
17 1 LedDisplay(TRUE);
18 1
19 1 DriveControlChip(0x00,0x08);
20 1 SetLedZAddress(0x00);
21 1 SetLedXAddress(0x00);
22 1 SetLedYAddress(0x00);
23 1 LedDisplay(TRUE);
24 1 }
25
26 void DataOnLine(UCHAR ucSend)
27 {
28 1 P0 = ucSend; //put data to LED data line
29 1 }
30 void SetLedDI_D()
31 {
32 1 P20 = 1; //DI=1
33 1 }
34
35 void SetLedDI_I()
36 {
37 1 P20 = 0;//DI=0
38 1 }
39
40 void SetLedRW_R()
41 {
42 1 P21 = 1;//WR=1
43 1 }
44
45 void SetLedRW_W()
46 {
47 1 P21 = 0;//WR=0
48 1 }
49
50 void SetLedE_1()
51 {
52 1 P22 = 1;//E=1
53 1 }
54
55 void SetLedE_0()
C51 COMPILER V7.50 DISDRIVE 08/20/2006 14:48:05 PAGE 2
56 {
57 1 P22 = 0;//E=0
58 1 }
59
60 void SelectLeft()
61 {
62 1 P23 = 1;//pc4=1 CSA=1
63 1 P24 = 0;//pc5=0 CSB=0
64 1 }
65
66 void SelectRight()
67 {
68 1 P23 = 0; //pc4=0 CSA=0
69 1 P24 = 1; //pc5=1 CSB=0
70 1 }
71
72 void LedReset(UCHAR Reset)
73 {
74 1 if (Reset) //the LED can't work normal ;i don't know why
75 1 {
76 2 // P25 = 0;//reset pc7=0
77 2 // delay(0xFFFF);
78 2 // SendLedInstruction(0xE2);
79 2 }
80 1 // else P25 = 1; //reset off pc7=1
81 1 P25 = 1; //reset off pc7=1 RST=1
82 1 P25 = 1; //reset off pc7=1 RST=1
83 1 }
84
85 //drive chips whih contral page and segment address
86 void DriveControlChip(UCHAR page_x, UCHAR seg_y)
87 {
88 1 page_x = page_x;
89 1 if ( seg_y < 8) //select segmetn drive chip 0
90 1 {
91 2 SelectLeft();
92 2 }
93 1 else //select segmetn drive chip 1
94 1 {
95 2 SelectRight();
96 2 }
97 1 }
98
99 void SetLedWriteInstructionMode()
100 {
101 1 SetLedDI_I();//D/I select I
102 1 SetLedRW_W();//R/W select W
103 1 }
104
105 void SetLedWriteDataMode()
106 {
107 1 SetLedDI_D();//D/I select D
108 1 SetLedRW_W();//R/W select W
109 1 }
110
111 void SetLedReadDataMode()
112 {
113 1 SetLedDI_I();
114 1 SetLedRW_R();
115 1 }
116
117 void SendLedData(UCHAR charData)
C51 COMPILER V7.50 DISDRIVE 08/20/2006 14:48:05 PAGE 3
118 {
119 1 DataOnLine(charData);
120 1 SetLedE_0();
121 1 SetLedWriteDataMode();
122 1 SetLedE_1();
123 1 SetLedE_0();
124 1 SetLedReadDataMode();
125 1 SetLedE_1();
126 1 }
127
128 void SendLedInstruction(UCHAR charData)
129 {
130 1 DataOnLine(charData);
131 1 SetLedE_0();
132 1 SetLedWriteInstructionMode();
133 1 SetLedE_1();
134 1 SetLedE_0();
135 1 SetLedReadDataMode();
136 1 SetLedE_1();
137 1 }
138
139
140 void LedDisplay(UCHAR On)
141 {
142 1 if (On) SendLedInstruction(0x3F);
143 1 else SendLedInstruction(0x3E);
144 1 }
145
146
147 void SetLedXAddress(UCHAR cXaddress)
148 {
149 1 SendLedInstruction(0xB8 | cXaddress);
150 1 }
151
152 void SetLedYAddress(UCHAR cYaddress)
153 {
154 1 SendLedInstruction(0x40 | cYaddress);
155 1 }
156
157 void SetLedZAddress(UCHAR cZaddress)
158 {
159 1 SendLedInstruction(0xC0 | cZaddress);
160 1 }
161
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 203 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 1
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -