📄 k1621.lst
字号:
C51 COMPILER V7.04 K1621 11/07/2007 09:51:31 PAGE 1
C51 COMPILER V7.04, COMPILATION OF MODULE K1621
OBJECT MODULE PLACED IN E:\RAR\STEPMO~1\K1621.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\RAR\STEPMO~1\K1621.C DB SB OE
stmt level source
1 /*MCU:AT89S51
2 *Freq:12M
3 .edit Tab:4
4 driver:ht1621 //judge communication namely 1621 work
5 **********************************/
6
7 #include <reg51.h>
8 #include <intrins.h>
9 #include <absacc.h>
10
11 #define uchar unsigned char
12 #define uint unsigned int
13 #define _Nop() _nop_()
14 //0b1000 0100 0000 1/2duty 2com for 0x40
15 #define BIAS 0x40 //0b1000 0101 0010 1/3duty 4com for 0x52
16 #define SYSDIS 0X00 //0b1000 0000 0000 关振系统荡器和LCD偏压发生器
17 #define LCDOFF 0X04 //0b1000 0000 0100 关LCD偏压
18 #define LCDON 0X06 //0b1000 0000 0110 打开LCD偏压
19 #define SYSEN 0X02 //0b1000 0000 0010 打开系统振荡器
20 #define XTAL 0x28 //0b1000 0010 1000 外部接时钟
21 #define RC256 0X30 //0b1000 0011 0000 内部时钟
22 #define TONEON 0X12 //0b1000 0001 0010 打开声音输出
23 #define TONEOFF 0X10 //0b1000 0001 0000 关闭声音输出
24 #define WDTDIS 0X0A //0b1000 0000 1010 禁止看门狗
25
26 //HT1621控制位(液晶模块接口定义,根据自已的需要更改)
27 sbit HT1621_DAT=P0^0;
28 sbit HT1621_CS=P0^2; //lower enable
29 sbit HT1621_WR=P0^1; //rising edge
30
31
32
33 //0,1,...4 //2 com also calculator 4 coms but other 2 com dont out
34 uchar code Ht1621Tab[]=
35 {
36 0xc4,0xc8,0x04,0x40,0x4c,0x88,0x4c,0x48,0x8c,0x40,
37 0xc8,0x48,0xc8,0xc8,0x44,0x40,0xcc,0xc8,0xcc,0x48
38 };
39 // 1 is display , 0 is off
40
41 //13_LED 5...8,9
42 uchar code Ht1621Tab1[]={0xeb,0x0a,0xad,0x8f,0x4e,0xc7,0xe7,0x8a,0xef,0xcf};
43
44 //uchar data DispBuffer;
45
46
47 //delay us
48 void Delay(uchar us) //5,7,9
49 {
50 1 while(--us);
51 1 }
52
53
54 //delay ms
55 void DelayMS(uint iMs)
C51 COMPILER V7.04 K1621 11/07/2007 09:51:31 PAGE 2
56 {
57 1 uint i,j;
58 1 for(i=0;i<iMs;i++)
59 1 for(j=0;j<65;j++) Delay(1);
60 1
61 1 }
62 //完成写一个命令包括头(100)
63 void Ht1621WrCmd(uchar ucTmpCmd)
64 {
65 1 uchar data i,ucCmdByte=0x80;
66 1 HT1621_CS=0;
67 1 _Nop();
68 1 _Nop();
69 1 for (i=0;i<4;i++)
70 1 {
71 2 if (ucCmdByte&0x80) HT1621_DAT=1;
72 2 else HT1621_DAT=0;
73 2 HT1621_WR=0;
74 2 _Nop();
75 2 _Nop();
76 2 HT1621_WR=1;
77 2 _Nop();
78 2 ucCmdByte<<=1;
79 2 }
80 1 for (i=0;i<8;i++)
81 1 {
82 2 if (ucTmpCmd&0x80) HT1621_DAT=1;
83 2 else HT1621_DAT=0;
84 2 HT1621_WR=0;
85 2 _Nop();
86 2 _Nop();
87 2 HT1621_WR=1;
88 2 _Nop();
89 2 ucTmpCmd<<=1;
90 2 }
91 1 HT1621_CS=1;
92 1 _Nop();
93 1 _Nop();
94 1 }
95
96 //写命令+地址
97 void Ht1621WrDataCmd(uchar ucAddr)
98 {
99 1 uchar data i,ucDataCmd=0x05; //101
100 1 ucDataCmd<<=5;
101 1 for (i=0;i<3;i++)
102 1 {
103 2 if (ucDataCmd&0x80) HT1621_DAT=1;
104 2 else HT1621_DAT=0;
105 2 HT1621_WR=0;
106 2 _Nop();
107 2 _Nop();
108 2 HT1621_WR=1;
109 2 _Nop();
110 2 ucDataCmd<<=1;
111 2 }
112 1 ucAddr<<=2;
113 1 for (i=0;i<6;i++)
114 1 {
115 2 if (ucAddr&0x80) HT1621_DAT=1;
116 2 else HT1621_DAT=0;
117 2 HT1621_WR=0;
C51 COMPILER V7.04 K1621 11/07/2007 09:51:31 PAGE 3
118 2 _Nop();
119 2 _Nop();
120 2 HT1621_WR=1;
121 2 _Nop();
122 2 ucAddr<<=1;
123 2 }
124 1
125 1 }
126
127 //完成写一个字节数据
128 void Ht1621WrByte(uchar ucTmpData)
129 {
130 1 uchar data i;
131 1
132 1 for (i=0;i<8;i++)
133 1 {
134 2 if (ucTmpData&0x80) HT1621_DAT=1;
135 2 else HT1621_DAT=0;
136 2 HT1621_WR=0;
137 2 _Nop();
138 2 _Nop();
139 2 HT1621_WR=1;
140 2 _Nop();
141 2 ucTmpData<<=1;
142 2 }
143 1
144 1 }
145
146
147 void CPU_Init()
148 {
149 1 P0=0XFF; //input
150 1 P1=0xff;
151 1 P2=0XFF;
152 1 P3=0XFF;
153 1 }
154
155
156 void Ht1621_Init()
157 {
158 1 HT1621_CS=1;
159 1 HT1621_WR=0;
160 1 HT1621_DAT=1;
161 1 DelayMS(2000); //延时使LCD工作电压稳定
162 1 Ht1621WrCmd(BIAS);
163 1 Ht1621WrCmd(RC256); //使用内部振荡器
164 1 Ht1621WrCmd(SYSDIS);
165 1 Ht1621WrCmd(WDTDIS);
166 1 Ht1621WrCmd(SYSEN);
167 1 Ht1621WrCmd(LCDON);
168 1 }
169
170 void main()
171 {
172 1 uchar data i;
173 1 CPU_Init();
174 1 Ht1621_Init(); //上电初始化LCD,init success full light
175 1
176 1
177 1 HT1621_CS=0;
178 1 Ht1621WrDataCmd(12); //往RAM的地址4写数据 这里的参数范围为:0-31
179 1 for (i=0;i<8;i++)
C51 COMPILER V7.04 K1621 11/07/2007 09:51:31 PAGE 4
180 1 {
181 2 Ht1621WrByte(Ht1621Tab[i]);
182 2 }
183 1 HT1621_CS=1;
184 1 DelayMS(2000); //2S
185 1 while(1) ;
186 1 }
C51 COMPILER V7.04 K1621 11/07/2007 09:51:31 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
Ht1621_Init. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
Ht1621Tab. . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0000H 20
HT1621_DAT . . . . . . . . . . . . . . ABSBIT ----- BIT 0080H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
_Ht1621WrDataCmd . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ucAddr . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
ucDataCmd. . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
_Ht1621WrCmd . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ucTmpCmd . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
ucCmdByte. . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
_Ht1621WrByte. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ucTmpData. . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
_Delay . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
us . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
Ht1621Tab1 . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0014H 10
HT1621_CS. . . . . . . . . . . . . . . ABSBIT ----- BIT 0082H 1
CPU_Init . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
HT1621_WR. . . . . . . . . . . . . . . ABSBIT ----- BIT 0081H 1
_DelayMS . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
iMs. . . . . . . . . . . . . . . . . * REG * DATA U_INT 0004H 2
i. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0002H 2
j. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0082H 2
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 299 ----
CONSTANT SIZE = 30 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -