📄 text1.lst
字号:
C51 COMPILER V7.50 TEXT1 05/27/2008 09:37:07 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND TABS(2)
line level source
1 #include <REG938.h> /*头文件的包含*/
2 #include <intrins.h>
3
4 #define uchar unsigned char /*宏定义*/
5 #define uint unsigned int
6 #define ulong unsigned long
7 #define _Nop() _nop_() /*定义空指令*/
8
9 uint pwm_b = 1000,pwm_c = 1000;
10 //sbit motor_stop=P0^3;
11 sbit cw_flag=P0^3;
12 sbit ccw_flag=P0^2;
13
14
15 uchar cw=0;
16 uchar ccw=0;
17
18 void CCU_init(void);
19 void outb_pwm(void);
20 void outc_pwm(void);
21 void key_scan(void);
22 void dally_Nus(uint data us);
23
24
25 void dally_Nus(uint data us)
26 {
27 1 do
28 1 {
29 2 us--;
30 2 }
31 1 while (us > 0);
32 1
33 1 }
34
35 /***********************************************************
36 CCU初始化
37 ************************************************************/
38 void CCU_init(void)
39 {
40 1 OCB=1;//P89LPC938的引脚P1.6
41 1 OCC=1;//P89LPC938的引脚P1.7
42 1 TPCR2H=0x00; //
43 1 TPCR2L=0x18; // 设置CCU预分频系数为25
44 1 TCR21=0x04; // 设置锁相环输入为7372800Hz
45 1 CCCRB=0x01; // PWM 输出通道 B
46 1 CCCRC=0x01; // PWM 输出通道 C
47 1
48 1 TCR20=0x80; // 启动 PLL, 输出方式: stop
49 1 OCB=1; // 等待一个周期
50 1 OCC=1;
51 1 while(PLEEN==0);// 等待 PLL 锁定
52 1
53 1 TOR2H=0x07; // 重装值 0x1770=6000
54 1 TOR2L=0xD0; //
55 1
C51 COMPILER V7.50 TEXT1 05/27/2008 09:37:07 PAGE 2
56 1 TCR21|=0x80; // 更新重装值
57 1
58 1 OCRBH=0x00; // 初始化占空比 B
59 1 OCRBL=0x00;
60 1 TCR21|=0x80; // 更新占空比数据
61 1
62 1 TCR20=0x82; // 设置输出模式为不对称 PWM
63 1 }
64
65 /***********************************************************
66 通道B电压控制
67 ************************************************************/
68 void outb_pwm(void)
69 {
70 1 uchar data pwmh,pwml;
71 1 pwmh = pwm_b / 256;
72 1 pwml = pwm_b % 256;
73 1 OCRBH = pwmh;
74 1 OCRBL = pwml;
75 1 TCR21 |= 0x80;
76 1 }
77
78
79 /***********************************************************
80 通道C电压控制
81 ************************************************************/
82 void outc_pwm(void)
83 {
84 1 uchar data pwmh,pwml;
85 1 pwmh = pwm_c / 256;
86 1 pwml = pwm_c % 256;
87 1 OCRCH = pwmh;
88 1 OCRCL = pwml;
89 1 TCR21 |= 0x80;
90 1 }
91
92 /********************************************************************
93 键盘检测
94 ********************************************************************/
95 void key_scan(void)
96 {
97 1
98 1 if(cw_flag==0)
99 1 {
100 2 cw=1;
101 2 ccw=0;
102 2 }
103 1 if(ccw_flag==0)
104 1 {
105 2 cw=0;
106 2 ccw=1;
107 2 }
108 1 }
109
110
111 /********************************************************************
112 初始化、主控制
113 ********************************************************************/
114 void main(void)
115 {
116 1 int i,j;
117 1
C51 COMPILER V7.50 TEXT1 05/27/2008 09:37:07 PAGE 3
118 1 AUXR1=0x00;
119 1
120 1 P0M1=0x00; //0000 0000
121 1 P0M2=0x00; //0000 0000 准双向
122 1
123 1 P1M1=0xC0; //0000 0000
124 1 P1M2=0xC0; //0000 0000 P1.7 P1.6开漏
125 1
126 1 P2M1=0x00; //0000 0000
127 1 P2M2=0x00; //0000 0000 准双向
128 1
129 1 P3M1=0x00; //0000 0000
130 1 P3M2=0x00; //0000 0000 准双向
131 1
132 1 P0 = 0xbf;
133 1 P1 = 0xff;
134 1 P2 = 0xff;
135 1 P3 = 0xff;
136 1
137 1 SP = 0x7f; //初始化堆栈
138 1 CCU_init();
139 1 dally_Nus(5000);
140 1 while(1)
141 1 {
142 2 key_scan();
143 2 if(cw==1)
144 2 {
145 3 for(i=200;i>0;i--)
146 3 {
147 4 outb_pwm();
148 4 }
149 3 while(1);
150 3 cw=0;
151 3 }
152 2
153 2 if(ccw==1)
154 2 {
155 3 for(j=400;j>0;j--)
156 3 {
157 4 outc_pwm();
158 4 }
159 3 ccw=0;
160 3 }
161 2 }
162 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 206 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
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 + -