📄 main.lst
字号:
C51 COMPILER V7.00 MAIN 06/09/2006 21:08:03 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 # include <reg51.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 void keyscan(void);
5 uint a,b,c,d;
6 /*a为舵机1的脉冲宽度,b为舵机2的脉冲宽度,单位1/1000 ms */
7 /*c、d为中间变量*/
8 /*以下定义输出管脚*/
9 sbit p12=P1^2;
10 sbit P13=P1^3;
11 sbit p16=P1^6;
12 sbit p15=P1^5;
13 sbit p17=P1^7;
14 void delay(void);
15 /*以下两个函数为定时器中断函数*/
16 /*定时器1,控制舵机1,输出引脚为P12,可自定义*/
17 void timer0(void) interrupt 1 using 1
18 {p12=!p12; /*输出取反*/
19 1 c=18432-c; /*20000代表20 ms,为一个周期的时间*/
20 1 TH0=-(c/256); TL0=-(c%256); /*重新定义计数初值*/
21 1 if(c>=470&&c<=2300)c=a;
22 1 else c=18432-a; /*判断脉宽是否在正常范围之内*/
23 1 }
24 /*定时器2,控制舵机2,输出引脚为P13,可自定义*/
25 void timer1(void) interrupt 3 using 1
26 {P13=!P13;
27 1 d=18432-d;
28 1 TH1=-(d/256); TL1=-(d%256);
29 1 if(d>=470&&d<=2304)d=b;
30 1 else d=18432-b;
31 1 }
32 /*主程序*/
33 void main(void)
34 {TMOD=0x11; /*设初值*/
35 1 p12=1;
36 1 P13=1;p17=1;
37 1 a=2000;
38 1 b=566; /*数值1500即对应1.5ms,为舵机的中间90度的位置*/
39 1 c=a;d=b;
40 1 TH0=-(a/256); TL0=-(a%256);
41 1 TH1=-(b/256); TL1=-(b%256); /*设定定时器初始计数值*/
42 1 EA=1;
43 1 ET0=1; TR0=1;EX0=1;EX1=1;
44 1 ET1=1; TR1=1;
45 1 PX0=0;PX1=0;PT1=1;PT0=1;/*设定中断优先级*/
46 1 for(;;)
47 1 {
48 2 keyscan();
49 2
50 2 }
51 1 }
52 /*在这个for循环中,可以根据程序需要
53 在任何时间改变a、b值来改变脉宽的输
54 出时间,从而控制舵机*/
55 void keyscan(void)
C51 COMPILER V7.00 MAIN 06/09/2006 21:08:03 PAGE 2
56 {
57 1 if(p16==0)
58 1 {
59 2 delay();
60 2 if(p16==0)
61 2 {
62 3 if(500<=a&&a<=2100)a+=50;
63 3 p17=!p17;
64 3 while(p16==0);
65 3 }
66 2 }
67 1 if(p15==0)
68 1 {
69 2 delay();
70 2 if(p15==0)
71 2 {
72 3 if(550<=a&&a<=2150)a-=30;
73 3 p17=!p17;
74 3 while(p15==0);
75 3 }
76 2 }
77 1 }
78 void delay (void)
79 {
80 1 uint uidata;
81 1 for(uidata=1;uidata<=500;uidata++);
82 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 344 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 ----
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 + -