⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wlm_n.lst

📁 一个有关单片机的小程序
💻 LST
字号:
C51 COMPILER V6.12  WLM_N                                                                  06/12/2005 13:36:33 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE WLM_N
OBJECT MODULE PLACED IN .\wlm_n.OBJ
COMPILER INVOKED BY: E:\学习类软件\KeilC51v612\C51\BIN\C51.EXE .\wlm_n.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //////////相关内容可查阅计算机硬件技术基础、课件、自动控制理论与单片机等书籍/////////////////
   2          
   3          ///////////////////////////////////程序基础//////////////////////////////////////////////////
   4          #pragma small
   5          #include<reg51f.h> ////包括51系列单片机的基本定义
   6          #include<intrins.h>////
   7          #include<math.h>
   8          #include<absacc.h> ////扩展板必备
   9          typedef unsigned char uchar;
  10          typedef unsigned int uint;
  11          
  12          ///////////////////电路设定////////////////////////
  13          #define BASE1 0x8100////扩展片选信号CS1(触动开关扩展)
  14          #define BASE2 0x8200////扩展片选信号CS2(双头检测板1)
  15          #define BASE3 0x8300////扩展片选信号CS3 (双头检测板2)
  16          #define BASE5 0x8500////发光二极管阵列
  17          #define BASE6 0x8600////CS_P0IN0
  18          #define BASE7 0x8700////CS_P0OUT0
  19          #define BASE8 0x8800////CS_P0IN1
  20          #define BASE9 0x8900////CS_P0OUT1
  21          
  22          sbit dir1=P1^3; ////鉴向信号,实质为反馈标志
  23          sbit dir2=P1^4;
  24          sbit en=P1^0;   ////电桥使能信号
  25          sbit ddir1=P1^1;////左轮方向标志。
  26          sbit ddir2=P1^2;////右轮方向标志。
  27          
  28          //////////////////////基本参数//////////////////////////////
  29          #define PI       3.1415926
  30          #define D        0.122      ////轮子直径
  31          #define DISTANCE 0.43      ////L轮子间距
  32          #define PANE     1000       ////码盘线数
  33          #define PRESPEED 9000      ////原始最高速度(单位:转/分)
  34          #define RESPEED  300       ////减速最高速度(单位:转/分)
  35          #define RATE     30        ////减速比(原始最高速度/减速最高速度)
  36          #define CONST    0.3       ////( 减速最高速度与码盘线数之比(300(转/分)/1000=0.3),可任意)
  37          #define RIGHT    1
  38          #define LEFT     0
  39          #define LINE     156546    ////走1米两个轮子的码盘线数(计算公式:2*(1/(PI*D))*RATE*PANE)
  40          #define TURN     590        ////转1度两个轮子的码盘线数(计算公式:((DISTANCE/D)*RATE*PANE)/180)
  41          
  42          /////////////////////////控制用变量//////////////////////////////
  43          struct discount
  44          {
  45          	int uk1;   ////上次输出值
  46          	int videal;////理想速度(单位:转/分)
  47          	int ek;    ////本次误差
  48          	int ek1;   ////上次误差
  49          	int ek2;   ////前次误差
  50          };
  51          
  52          /////////////////////////////////////////////////////////////////////////////////////////
  53          data int ukx,uky;           ////实际输出计数值
  54          data struct discount sm2,sm1;////左右轮结构体变量
  55          data uchar countl,counth;      ////计数值高低位
C51 COMPILER V6.12  WLM_N                                                                  06/12/2005 13:36:33 PAGE 2   

  56          data long temp;                ////每次中断时码盘线数(最大值为1500:((PRESPEED/60)*中断周期)/1000)*P
             -ANE)
  57          data long temp1=0,temp2=0;     ////左右轮总的码盘线数
  58          data long due;                 ////经PID调节后的偏差 
  59          data int uk;                   ////本次输出值
  60          data int kp1,ki1,kd1;          ////PID参数
  61          data int kp2,ki2,kd2;
  62          data uchar prestate=0x14,state;////巡线状态
  63          data int dv;                   ////速度调节量
  64          data int flag=0;               ////巡线开关
  65          data uchar keystate=0x3f;      ////碰撞开关状态
  66          
  67          //////////////////////结构体初始化//////////////////////////
  68          void initstruct(struct discount *p)
  69          {
  70   1      	p->ek2=0;
  71   1      	p->ek1=0;
  72   1      	p->ek=0;
  73   1      	p->uk1=0;
  74   1      }	
  75          
  76          ///////////////////////延时////////////////////////
  77          void delay(uchar i)              ////以0.1秒为基本单位
  78          {
  79   1      	uchar j,m;
  80   1          int l;
  81   1      	for(j=0;j<i;j++)
  82   1      	{
  83   2      		for(l=0;l<100;l++)
  84   2      		{
  85   3      			for(m=0;m<250;m++)
  86   3      			{}
  87   3      		}
  88   2      	}
  89   1      }
  90          
  91          ///////////////////////电机1速度输出////////////////////
  92          void motor1(int speed1)////PCA模块2
  93          {
  94   1      	if(speed1>=0)      ////正转
  95   1      		ddir1=0;
  96   1      	else
  97   1      	{
  98   2      		ddir1=1;       ////反转
  99   2      		speed1=-speed1;
 100   2      	}
 101   1      	CCAP2L=speed1;     ////转速,范围(-128,127)
 102   1      	CCAP2H=speed1;
 103   1      	CCAPM2=0x42;       ////8位PWM
 104   1      }
 105          
 106          ///////////////////////电机2速度输出////////////////////
 107          void motor2(int speed2)////PCA模块3
 108          {
 109   1          if(speed2>=0)
 110   1      		ddir2=1;       ////正转
 111   1      	else
 112   1      	{
 113   2      		ddir2=0;       ////反转
 114   2      		speed2=-speed2;
 115   2      	}
 116   1      	CCAP3L=speed2;     ////转速,范围(-128,127

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -