📄 mc145170.lst
字号:
C51 COMPILER V8.01 MC145170 03/16/2008 21:34:52 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE MC145170
OBJECT MODULE PLACED IN mc145170.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mc145170.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /**************************************
2 MC145170D的驱动程序
3 *************************************/
4
5 #include <regx52.h>
6 #include <intrins.h>
7 #include<absacc.h>
8 //#include "lcd1602.H"
9
10 /**************************************
11 MC145170D控制引脚宏定义
12 *************************************/
13 sbit CLK = P0^0; /*MC145170时钟*/
14 sbit DIN = P0^2; /*MC145170输入*/
15 sbit _ENB = P0^1 ;/*MC145170片选*/
16 //sbit _ENB = P1^1 ;
17 #define Uchar unsigned char
18 #define Uint unsigned int
19 #define Ulong unsigned long
20 Uint Frequence=5500;
21 #define BaseFre 400
22 #define uint unsigned int
23 #define uchar unsigned char
24
25 uchar code DisplayBuffer[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0x40,0xFF}; //显示0到
-9和不显示和显示“-”负号,和显示乱码
26 uchar data c[8]={0,10,10,10,10,10,10,10}; //初始值为10是为了让数码管不显示任何数字;c[5],c[4],c[3],c[
-2],c[1]分别显示的万位,千位,百位,十位,个位
27 void Delay400Ms(void)
28 {
29 1 Uchar i = 5;
30 1 Uint j;
31 1 while(i--)
32 1 {
33 2 j=7269;
34 2 while(j--);
35 2 };
36 1 }
37 // 短延时
38 void Delay5Ms(void)
39 {
40 1 Uint i = 552;
41 1 while(i--);
42 1 }
43
44 void delay_1ms() //延时?汇编是1ms
45 { int q;
46 1 for(q=300;q>0;q--);
47 1 }
48 /**************************************
49 名称:delay vf
50 功能:延时模块
51 输入参数:n要延时的周期数
52 输出参数:无
53 *************************************/
C51 COMPILER V8.01 MC145170 03/16/2008 21:34:52 PAGE 2
54 /*void delay(uint n)
55 {
56 uchar i;
57 i=n;
58 while(i--);
59 }*/
60 /**************************************
61 名称:write_MC145170D
62 功能:MC145170D驱动模块
63 输出参数:CLK_mode所用时钟数,value为向Register所送数据值
64 说明:mode=C表示要向C Register送数据,CLK=8;
65 mode=N表示要向N Register送数据,CLK=16;
66 mode=R1或R2表示要向R Register送数据,CLK=15或24;
67
68 C Register每位定义说明
69 C7 C7=HIGH时,PDout输出正脉冲,PDout=PHR;C7=LOW时,PDout输出负脉冲,PDout=PHV;PHR,PHV的输出选择,
70 C7=HIGH时PDout=PHR-PHV,C7=LOW时PDout=PHV-PHR;
71 C6 鉴相器输出选择 C6=HIGH时,从PDout输出,否则从PHR,PHV输出。
72 C5 =1时 锁定输出端 LD 有效
73 C4 C3 C2 REFout Frequency
74 0 0 0 dc (Static Low)
75 0 0 1 OSCin
76 0 1 0 OSCin /2
77 0 1 1 OSCin /4
78 1 0 0 OSCin /8 (POR Default)
79 1 0 1 OSCin /16
80 1 1 0 OSCin /8
81 1 1 1 OSCin /16
82 C1=1时 FVE启动频率输出
83 C0=1时 fRE启动频率输出
84 N Register取值范围40 to 65535
85 R Register取值范围5 to 32767
86 *************************************/
87 void writec(unsigned char d)
88 {
89 1 uchar i;
90 1 _ENB=1;
91 1 _nop_();
92 1 _ENB=0;//开始下降沿
93 1 _nop_();
94 1 for(i=0;i<8;i++)
95 1 { CLK=0;
96 2 d=d<<1;
97 2 DIN=CY;//将数据放好等待读入
98 2 _nop_();
99 2 CLK=1;//将数据读入
100 2 _nop_();
101 2 }
102 1 _ENB=1;
103 1 }
104 void write_R15(Uint r15)
105 {
106 1 uchar i,dh,dl;
107 1 dh=r15/256;
108 1 dl=r15%256;
109 1 dh=dh<<1;
110 1 _ENB=1;
111 1 _nop_();
112 1 _ENB=0;//开始下降沿
113 1 _nop_();
114 1
115 1 for(i=0;i<7;i++)
C51 COMPILER V8.01 MC145170 03/16/2008 21:34:52 PAGE 3
116 1 { CLK=0;
117 2 dh=dh<<1;
118 2 DIN=CY;//将数据放好等待读入
119 2 _nop_();
120 2 CLK=1;//将数据读入
121 2 _nop_();
122 2 }
123 1
124 1 for(i=0;i<8;i++)
125 1 { CLK=0;
126 2 dl=dl<<1;
127 2 DIN=CY;//将数据放好等待读入
128 2 _nop_();
129 2 CLK=1;//将数据读入
130 2 _nop_();
131 2 }
132 1 _ENB=1;
133 1 }
134 void write_N(Uint n)
135 {
136 1 uchar i,dh,dl;
137 1 dh=n/256;
138 1 dl=n%256;
139 1 _ENB=1;
140 1 _nop_();
141 1 _ENB=0;//开始下降沿
142 1 _nop_();
143 1
144 1 for(i=0;i<8;i++)
145 1 { CLK=0;
146 2 dh=dh<<1;
147 2 DIN=CY;//将数据放好等待读入
148 2 _nop_();
149 2 CLK=1;//将数据读入
150 2 _nop_();
151 2 }
152 1
153 1 for(i=0;i<8;i++)
154 1 { CLK=0;
155 2 dl=dl<<1;
156 2 DIN=CY;//将数据放好等待读入
157 2 _nop_();
158 2 CLK=1;//将数据读入
159 2 _nop_();
160 2 }
161 1 _ENB=1;
162 1 }
163 void write_R24(Uint r24)
164 {
165 1 uchar i,dh,dl;
166 1 dh=r24/256;
167 1 dl=r24%256;
168 1 _ENB=1;
169 1 _ENB=0;//开始下降沿
170 1
171 1 for(i=0;i<8;i++)
172 1 { CLK=0;
173 2 DIN=CY;//将数据放好等待读入
174 2 _nop_();
175 2 CLK=1;//将数据读入
176 2 _nop_();
177 2 }
C51 COMPILER V8.01 MC145170 03/16/2008 21:34:52 PAGE 4
178 1 for(i=0;i<8;i++)
179 1 { CLK=0;
180 2 dh=dh<<1;
181 2 DIN=CY;//将数据放好等待读入
182 2 _nop_();
183 2 CLK=1;//将数据读入
184 2 _nop_();
185 2 }
186 1
187 1 for(i=0;i<8;i++)
188 1 { CLK=0;
189 2 dl=dl<<1;
190 2 DIN=CY;//将数据放好等待读入
191 2 _nop_();
192 2 CLK=1;//将数据读入
193 2 _nop_();
194 2 }
195 1 _ENB=1;
196 1 }
197 /**************************************
198 名称:mc145170复位函数
199 功能:主函数
200 输入参数:无
201 输出参数:无
202 *************************************/
203 void mc145170reset()
204 {
205 1 unsigned char i;
206 1 //4个以上脉冲
207 1 ENB=1;
208 1 for(i=0;i<10;i++)
209 1 { CLK=0;
210 2 _nop_();
211 2 DIN=0;
212 2 _nop_();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -