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

📄 pump.lst

📁 毕业设计做的东西的硬件程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 182      =1  sbit F1    = PSW ^ 1;               /* USER FLAG 1             */
 183      =1  sbit P     = PSW ^ 0;               /* ACCUMULATOR PARITY FLAG */
 184      =1  
 185      =1  /* PCA0CN D8H */
 186      =1  sbit CF    =   PCA0CN ^ 7;          /* PCA 0 COUNTER OVERFLOW FLAG   */
 187      =1  sbit CR    =   PCA0CN ^ 6;          /* PCA 0 COUNTER RUN CONTROL BIT */
 188      =1  sbit CCF4  =   PCA0CN ^ 4;          /* PCA 0 MODULE 4 INTERRUPT FLAG */
 189      =1  sbit CCF3  =   PCA0CN ^ 3;          /* PCA 0 MODULE 3 INTERRUPT FLAG */
 190      =1  sbit CCF2  =   PCA0CN ^ 2;          /* PCA 0 MODULE 2 INTERRUPT FLAG */
 191      =1  sbit CCF1  =   PCA0CN ^ 1;          /* PCA 0 MODULE 1 INTERRUPT FLAG */
 192      =1  sbit CCF0  =   PCA0CN ^ 0;          /* PCA 0 MODULE 0 INTERRUPT FLAG */
 193      =1  
 194      =1  /* ADC0CN E8H */
 195      =1  sbit ADCEN    =   ADC0CN ^ 7;       /* ADC 0 ENABLE                              */
 196      =1  sbit ADCTM    =   ADC0CN ^ 6;       /* ADC 0 TRACK MODE                          */
 197      =1  sbit ADCINT   =   ADC0CN ^ 5;       /* ADC 0 CONVERISION COMPLETE INTERRUPT FLAG */
 198      =1  sbit ADBUSY   =   ADC0CN ^ 4;       /* ADC 0 BUSY FLAG                           */
 199      =1  sbit ADSTM1   =   ADC0CN ^ 3;       /* ADC 0 START OF CONVERSION MODE BIT 1      */
 200      =1  sbit ADSTM0   =   ADC0CN ^ 2;       /* ADC 0 START OF CONVERSION MODE BIT 0      */
 201      =1  sbit ADWINT   =   ADC0CN ^ 1;       /* ADC 0 WINDOW COMPARE INTERRUPT FLAG       */
 202      =1  sbit ADLJST   =   ADC0CN ^ 0;       /* ADC 0 RIGHT JUSTIFY DATA BIT              */
 203      =1  
 204      =1  /* SPI0CN F8H */
 205      =1  sbit SPIF     =   SPI0CN ^ 7;       /* SPI 0 INTERRUPT FLAG                     */
 206      =1  sbit WCOL     =   SPI0CN ^ 6;       /* SPI 0 WRITE COLLISION FLAG       */
 207      =1  sbit MODF     =   SPI0CN ^ 5;       /* SPI 0 MODE FAULT FLAG            */
 208      =1  sbit RXOVRN   =   SPI0CN ^ 4;       /* SPI 0 RX OVERRUN FLAG            */
 209      =1  sbit TXBSY    =   SPI0CN ^ 3;       /* SPI 0 TX BUSY FLAG                       */
 210      =1  sbit SLVSEL   =   SPI0CN ^ 2;       /* SPI 0 SLAVE SELECT                       */
 211      =1  sbit MSTEN    =   SPI0CN ^ 1;       /* SPI 0 MASTER ENABLE                      */
 212      =1  sbit SPIEN    =   SPI0CN ^ 0;       /* SPI 0 SPI ENABLE                         */                      
   8          #include <intrins.h>
   1      =1  /*--------------------------------------------------------------------------
   2      =1  INTRINS.H
   3      =1  
   4      =1  Intrinsic functions for C51.
   5      =1  Copyright (c) 1988-2004 Keil Elektronik GmbH and Keil Software, Inc.
   6      =1  All rights reserved.
   7      =1  --------------------------------------------------------------------------*/
   8      =1  
   9      =1  #ifndef __INTRINS_H__
  10      =1  #define __INTRINS_H__
  11      =1  
  12      =1  extern void          _nop_     (void);
  13      =1  extern bit           _testbit_ (bit);
  14      =1  extern unsigned char _cror_    (unsigned char, unsigned char);
  15      =1  extern unsigned int  _iror_    (unsigned int,  unsigned char);
  16      =1  extern unsigned long _lror_    (unsigned long, unsigned char);
  17      =1  extern unsigned char _crol_    (unsigned char, unsigned char);
  18      =1  extern unsigned int  _irol_    (unsigned int,  unsigned char);
  19      =1  extern unsigned long _lrol_    (unsigned long, unsigned char);
  20      =1  extern unsigned char _chkfloat_(float);
  21      =1  extern void          _push_    (unsigned char _sfr);
C51 COMPILER V8.01   PUMP                                                                  09/19/2006 11:35:54 PAGE 5   

  22      =1  extern void          _pop_     (unsigned char _sfr);
  23      =1  
  24      =1  #endif
  25      =1  
   9          
  10          /********************************************变量类型缩略定义***********************************/
  11          #define uint unsigned int                    //缩略定义
  12          #define uchar unsigned char 
  13          #define ulint unsigned long 
  14          
  15          /***********************************************常量定义****************************************/
  16          #define Time_1ms    6                            //时间常量(12M) 6x-x/8
  17          #define Time_5ms    30          
  18          #define Time_10ms   59
  19          #define Time_15ms   88
  20          #define Time_20ms   118
  21          #define Time_50ms   294
  22          #define Time_80ms   470          
  23          #define Time_100ms  588
  24          #define Time_200ms  1175
  25          
  26          #define DAC0_DATA   0x01BC                       //斩波驱动参考电压设定值
  27          #define DAC1_DATA   0x0C00                   //比较器参考电压设定值
  28          #define Delay_STime 0x09C4                       //检测到气泡报警的时间延迟(短)
  29          #define Delay_LTime 0xF424                       //检测到气泡报警的时间延迟(长)
  30          #define Bubble_NUM  0x0001                   //累计气泡为150个
  31          /*******************************************I/O端口对应输出声明*********************************/
  32          sbit SDA=P0^0;                                       //SMBUS设置
  33          sbit SCL=P0^1;                                           //用作T3定时器的自动重载触发源
  34          sbit CEX0=P0^2;                                          //PCA第一个比较、捕捉模块
  35          sbit T1=P0^3;                                            //定时器T1计数源输入端,对小气泡进行计数
  36          sbit INT1=P0^4;                                          //键盘中断
  37          sbit T2EX=P0^5;                                          //由内部计数器2对气泡检测脉冲进行计数
  38          sbit CNVSTR=P0^6;                            //时钟输出
  39          sbit SM_RST=P0^7;                                        //L297复位控制位
  40          sbit Balarm_flag=P1^0;                       //气泡报警标志位,为1时正常,为0时报警
  41          sbit Heat_flag=P1^1;                         //加热标志位
  42          //sbit SHIFT_DATA=P1^2;                      //移位寄存器串行数据输入位,H时为1,L时为0
  43          sbit DI2PIN=P1^2;                                                        //LCD2时钟输入引脚
  44          sbit Lpower_LED=P1^3;                                            //低电压报警
  45          //sbit SHIFT_CLK=P1^3;                       //移位寄存器时钟输入
  46          sbit CLK2PIN=P1^4;                                                       //LCD2数据输入引脚
  47          //sbit SHIFT_CLR=P1^4;                       //移位寄存器清零端
  48          sbit CLKPIN = P1^5;                          //用户自定义CLK对应引脚
  49          sbit T1IN=P1^6;                              //定时器T1的输入
  50          sbit State_LED=P1^7;                         //状态标志位
  51          sbit DIPIN = P2^0;                           //用户自定义DI对应引脚
  52          sbit SM_CLK1=P2^2;                               //步进电机时钟位
  53          sbit SM_EN=P2^3;                                         //L297使能位
  54          sbit SM_CW=P2^4;                                         //L297方向控制位
  55          sbit SM_MODE=P2^5;                                       //L297环形分配器分配方式控制位
  56          /*******************************************全局变量定义****************************************/
  57          uchar temp[4];                               //LCD显示数字缓存
  58          uchar temp2[4];                              //LCD2显示数字缓存
  59          uchar code temp_code[4]={0,1,0,0};                   //LCD显示数字的十进制形式
  60          uchar code temp2_code[4]={0,5,0,0};                  //LCD2显示数字的十进制形式
  61          uchar Point_Flag;                                                //小数点标志位
  62          uchar data l_data[5];                        //用户自定义LCD缓冲区
  63          uchar lcd_data[10];                                              //0~9对应的显示代码缓存;
  64          uchar code lcd_data_code[10]={0x88,0xbb,0xc1,0x91,0xb2,0x94,0x84,0xb9,0x80,0xb0};  //0~9对应的显示代码;
  65          uchar code_h;                                //行扫描值
  66          uchar code_l;                                //列扫描值
C51 COMPILER V8.01   PUMP                                                                  09/19/2006 11:35:54 PAGE 6   

  67          uchar keycode=0x00;                          //最终键值
  68          uint k=0;                                    //LCD显示段位置序号
  69          uint kk=0;                                                                       //LCD2显示段位置序号
  70          uint BUFFER;                                         //步进电机转速控制
  71          uint Buffer_NUM;                             //T0循环次数
  72          uint PWM_Width;                              //定时器0溢出周期控制
  73          uint Drop_Num;                               //设定的液滴数
  74          ulint Flux_Pulse;                            //设定的流速对应的脉冲数
  75          ulint All_Pulse;                                                         //需要产生的全部脉冲数
  76          float Drop_NStep;                                //一滴所对应的步进电机的步数
  77          bit Fluxdrop_Flag;                           //流量和滴速单位标志位,为0单位是流量,为1时单位是滴速
  78          bit Speed_Set;                               //流速设置标志位,为0时设置保存,为1时允许设置
  79          bit Hold_Flag;                               //键盘锁定标志位,为1时键盘锁定,为0时允许键盘动作 
  80          bit SR_Flag;                                 // 运行/停止标志位,为0时停止,为1时运行
  81          bit PK_Flag;                                                             //排空标志位,为0停止排空操作,为1时开始排空操作
  82          bit Gross_Flag;                                                          //输液量设置标志,为1时允许设置,为0时保存设置
  83          /******************************************函数声明********************************************/
  84          void SYSCLK_Init(void);                      //系统时钟初始化
  85          void IO_Init(void);                                  //I/O端口设置初始化
  86          void ISR_Init(void);                             //系统中断设置初始化
  87          void Global_Init(void);                      //全局变量初始化
  88          void Bubble_alarm(void);                     //气泡检测报警
  89          void delay( uint t);                         //软件延迟,(102.647t+2.3646)us
  90          void nop(uint t);                            //软件短延迟函数
  91          void pk(void);                               //输液前的排空操作
  92          void lcdwbit(bit n);                         //LCD位传输函数
  93          void lcdwd(uchar data1);                     //LCD字节传输函数
  94          void lcdwd1();                               //LCD4段数据传输函数
  95          void l_set();                                //各段显示数据设置
  96          void display();                              //显示设置数据
  97          void noplay();                               //空白显示
  98          void lcd2wbit(bit n);                        //LCD2位传输函数
  99          void lcd2wd(uchar data1);                    //LCD2字节传输函数
 100          void lcd2wd1();                              //LCD2的4段数据传输函数
 101          void l2_set();                               //LCD2各段显示数据设置
 102          void display2();                             //LCD2显示设置数据
 103          void noplay2();                              //LCD2空白显示
 104          void SM_Set(void);                               //步进电机工作状态设置
 105          void T0_Set(void);                               //定时器T0设置
 106          void T0_ISR(void);                           //定时器T0中断服务函数
 107          void SM_SR(void);                            //步进电机运行停止控制函数
 108          void DAC0_Set(void);                         //步进电机参考电压设置
 109          void DAC1_Set(void);                         //比较器参考电压设置 
 110          void data_inv(void);                         //流量参数变换
 111          void pulse_inv(void);                                            //输液量参数变换
 112          void ADC_Set(void);                          //ADC窗口比较器设置
 113          void ADC_ISR(void);                          //ADC窗口比较器中断服务函数
 114          void T1_Set(void);                           //定时器T1参数设置
 115          void T1_ISR(void);                           //定时器T1中断服务函数
 116          void T2_Set(void);                           //定时器T2参数设置
 117          void T2_ISR(void);                                                   //定时器T2中断服务函数
 118          void T3_Set(void);                                                       //定时器T3参数设置
 119          void T3_ISR(void);                                                   //定时器T3中断服务函数
 120          void PCA_ADC(void);                                                  //PCA高速输出方式启动ADC
 121          void keyinterrupt(void);                     //INT1即键盘中断服务函数
 122          void main(void);                             //主函数
 123          /***************************************函数定义***********************************************/
 124          
 125          /**********************************************************************************************
 126           函数:void SYSCLK_Init(void)
 127           说明:系统时钟初始化,选择外部12M晶振,关闭看门狗。
 128          ***********************************************************************************************/
C51 COMPILER V8.01   PUMP                                                                  09/19/2006 11:35:54 PAGE 7   

 129          void SYSCLK_Init(void)            
 130          {
 131   1      int i;                          
 132   1      WDTCN=0x07;                                      //最大时间延迟
 133   1      WDTCN=0xDE;
 134   1      _nop_();
 135   1      WDTCN=0xAD;                                  //禁止看门狗中断   
 136   1      OSCXCN=0x77;                                 //外部时钟寄存器设置
 137   1      for(i=0;i<256;i++) ;                             // 至少等待1ms
 138   1      while(!(OSCXCN&0x80)) ;                      //等待晶振稳定,
 139   1      OSCICN=0x88;                                 // 采用外部晶振作为时钟源
 140   1      WDTCN=0xFF;                                                      //锁定看门狗禁止功能禁止,看门狗在程序中一直有效
 141   1      WDTCN=0xA5;                                                  //喂狗
 142   1      }
 143          /**********************************************************************************************
 144           函数:void IO_Init()
 145           说明:I/O端口设置初始化,内部资源和IO端口交叉开关设置;输入和5V输出采用开漏输出,3.3V输出采用
 146                 推挽输出,允许全局弱上拉
 147          ***********************************************************************************************/
 148          void IO_Init()                        

⌨️ 快捷键说明

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