📄 servomotor.lst
字号:
C51 COMPILER V8.02 SERVOMOTOR 08/20/2008 15:32:23 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE SERVOMOTOR
OBJECT MODULE PLACED IN servomotor.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE servomotor.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /////////////////////////////////////
2 // Generated Initialization File //
3 /////////////////////////////////////
4
5 #include "C8051F120.h"
6 #define M 5529
7 sbit p = P3 ^ 0; //伺服电机脉冲
8 sbit a = P4 ^ 0; //伺服电机son信号,实际上并不需要son信号了,因为BRKR一直处于on状态
9 sbit dirs = P3 ^ 1; //伺服电机方向信号
10 sbit m = P5^0;
11 sbit n = P2^4;
12 sbit k = P7^0;
13 unsigned long T=0;
14 // Peripheral specific initialization functions,
15 // Called from the Init_Device() function
16 void Reset_Sources_Init()
17 {
18 1 WDTCN = 0xDE;
19 1 WDTCN = 0xAD;
20 1 }
21
22 void Port_IO_Init()
23 {
24 1 // P0.0 - TX0 (UART0), Open-Drain, Digital
25 1 // P0.1 - RX0 (UART0), Open-Drain, Digital
26 1 // P0.2 - TX1 (UART1), Open-Drain, Digital
27 1 // P0.3 - RX1 (UART1), Open-Drain, Digital
28 1 // P0.4 - Unassigned, Open-Drain, Digital
29 1 // P0.5 - Unassigned, Open-Drain, Digital
30 1 // P0.6 - Unassigned, Open-Drain, Digital
31 1 // P0.7 - Unassigned, Open-Drain, Digital
32 1
33 1 // P1.0 - Unassigned, Open-Drain, Digital
34 1 // P1.1 - Unassigned, Open-Drain, Digital
35 1 // P1.2 - Unassigned, Open-Drain, Digital
36 1 // P1.3 - Unassigned, Open-Drain, Digital
37 1 // P1.4 - Unassigned, Open-Drain, Digital
38 1 // P1.5 - Unassigned, Open-Drain, Digital
39 1 // P1.6 - Unassigned, Open-Drain, Digital
40 1 // P1.7 - Unassigned, Open-Drain, Digital
41 1
42 1 // P2.0 - Unassigned, Open-Drain, Digital
43 1 // P2.1 - Unassigned, Open-Drain, Digital
44 1 // P2.2 - Unassigned, Open-Drain, Digital
45 1 // P2.3 - Unassigned, Open-Drain, Digital
46 1 // P2.4 - Unassigned, Open-Drain, Digital
47 1 // P2.5 - Unassigned, Open-Drain, Digital
48 1 // P2.6 - Unassigned, Open-Drain, Digital
49 1 // P2.7 - Unassigned, Open-Drain, Digital
50 1
51 1 // P3.0 - Unassigned, Push-Pull, Digital
52 1 // P3.1 - Unassigned, Push-Pull, Digital
53 1 // P3.2 - Unassigned, Push-Pull, Digital
54 1 // P3.3 - Unassigned, Push-Pull, Digital
55 1 // P3.4 - Unassigned, Push-Pull, Digital
C51 COMPILER V8.02 SERVOMOTOR 08/20/2008 15:32:23 PAGE 2
56 1 // P3.5 - Unassigned, Push-Pull, Digital
57 1 // P3.6 - Unassigned, Push-Pull, Digital
58 1 // P3.7 - Unassigned, Push-Pull, Digital
59 1
60 1 SFRPAGE = CONFIG_PAGE;
61 1 P3MDOUT = 0xFF;
62 1 P4MDOUT = 0xFF;
63 1 P5MDOUT = 0xFF;
64 1 P6MDOUT = 0xFF;
65 1 P7MDOUT = 0xFF;
66 1 XBR0 = 0x04;
67 1 XBR2 = 0x44;
68 1 }
69
70 void Oscillator_Init()
71 {
72 1 int i = 0;
73 1 SFRPAGE = CONFIG_PAGE;
74 1 OSCXCN = 0x67;
75 1 for (i = 0; i < 3000; i++); // Wait 1ms for initialization
76 1 while ((OSCXCN & 0x80) == 0);
77 1 CLKSEL = 0x01;
78 1
79 1 }
80
81 // Initialization function for device,
82 // Call Init_Device() from your main program
83 void Init_Device(void)
84 {
85 1 Reset_Sources_Init();
86 1 Port_IO_Init();
87 1 Oscillator_Init();
88 1 }
89
90 /******************************************************************************
91 函数:Timer0Isr
92 描述:定时器3中断服务程序,Timer0
93 参数:无
94 返回:无
95 ******************************************************************************/
96 void Timer0Isr (void) interrupt 1 using 1
97 {
98 1 ET0 = 0;
99 1 //TH0 = 0xF8;
100 1 //TL0 = 0xCD;
101 1 SFRPAGE = 0x00;
102 1 TH0 = -M/256;
103 1 TL0 = -M%256;
104 1 T++;
105 1 if(T <= 400)
106 1 {
107 2 p = !p;
108 2 }
109 1 else
110 1 {
111 2 SFRPAGE = 0x0F;
112 2 a = 1;
113 2 SFRPAGE = 0x00;
114 2 TR0 = 0;
115 2 T = 0;
116 2 }
117 1 ET0=1;
C51 COMPILER V8.02 SERVOMOTOR 08/20/2008 15:32:23 PAGE 3
118 1 }
119
120 void pulse(void)
121 {
122 1 p=0;
123 1 SFRPAGE = TIMER01_PAGE;
124 1 TMOD|= 0x01; //TMOD: timer 0, mode 1, 16-bit timer
125 1 //TH0 = 0xF8; //Timer0 TH0 high byte reload initial value
126 1 //TL0 = 0xCD; //Timer0 TL0 low byte write initial value(1ms)
127 1 TH0 = -M/256;
128 1 TL0 = -M%256;
129 1 EA = 1;
130 1 ET0 = 1; //Timer0 Interrupt Unable(IE.1)
131 1 SFRPAGE = 0x00;
132 1 TR0 = 1;
133 1
134 1 }
135 main()
136 {
137 1 /*
138 1 long j = 0;
139 1 Init_Device();
140 1 dirs = 1;
141 1 SFRPAGE = 0x0F;
142 1 a = 1;
143 1 for(;j <= 10000;j++);
144 1 pulse();
145 1 while(1);
146 1 */
147 1 Init_Device();
148 1 SFRPAGE = 0x0F;
149 1 //P5 = P2&0xFF;
150 1
151 1 P7 = 0x00;
152 1
153 1 m = k&n;
154 1 }
155
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 214 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
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 + -