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

📄 board.lst

📁 单片机控制面板程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.06   BOARD                                                                 03/19/2009 21:23:59 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE BOARD
OBJECT MODULE PLACED IN Board.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE Board.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<reg51.h>
   2          #include<absacc.h>
   3          #include<math.h>
   4          //============================================
   5          //程序作者:胡庆波
   6          //程序版本号:LB80G-PAN Ver 1.0
   7          //创作时间:2008.08
   8          //单位:宁波欣达集团有限公司
   9          //============================================
  10          //EEPROM/IAP寄存器申明
  11          //============================================
  12          sfr ISP_DATA=0xE2;//数据专用寄存器
  13          sfr ISP_ADDRH=0xE3;//地址专用高位寄存器
  14          sfr ISP_ADDRL=0xE4;//地址专用低位寄存器
  15          sfr ISP_CMD=0xE5;//寄存器命令专用寄存器
  16          sfr ISP_TRIG=0xE6;//开始触发专用寄存器
  17          sfr ISP_CONTR=0xE7;//等待专用寄存器
  18          //============================================
  19          //eeprom编程定义值
  20          //============================================
  21          #define ISP_IAP_BYTE_READ       0x1//表示是字节读操作
  22          #define ISP_IAP_BYTE_PROGRAM    0x2//表示是字节编程操作
  23          #define ISP_IAP_SECTOR_ERASE    0x3//表示是扇区擦除操作
  24          #define ENABLE_ISP              0x83//使能EEPROM,以及设置等待时间操作
  25          //============================================
  26          //单片机应用程序,电路图设计功能申明
  27          //============================================
  28          sfr  AUXR=0x8e;//单片机内部专用寄存器,用于调节12拍还是单拍控制
  29          
  30          sbit DI = P1^5;//控制595芯片的数据线,数据进行口
  31          sbit CLK= P1^7;//595芯片、166芯片复用时钟线
  32          sbit RCK= P2^0;//595芯片的锁存输出使能线,高电平将锁存器内的值输出
  33          sbit QH= P2^2;//166芯片按键读取数据线
  34          sbit SL= P2^1;//166芯片锁存和移位控制线,高电平移位,低电平锁存
  35          //===================================
  36          //数码管显示相关的自定义寄存器
  37          //===================================
  38          char led_show_value[4];//数码管最终的显示字符
  39          char led_show_byte_number=0;//数码管当前显示位码
  40          char led_show_number=0;//数码管显示当前位的硬件序号(9012的使能端)
  41          //===================================
  42          //485通讯中发送相关自定义寄存器
  43          //===================================
  44          int  send_show_count=0;//显示参数发送计时器
  45          int  send_hand_count=0;//通讯握手时间间隔
  46          int  send_heart_count=0;//通讯心跳时间间隔
  47          int  send_fault_count=0;//通讯故障请求时间间隔
  48          int  send_heart_last_count=0;//心跳故障时间间隔
  49          
  50          char send_kind=0;//发送数据类型标志,根据发送优先级高低进行发送处理
  51          char send_on_kind=0;//一类数据正在发送类标志
  52          bit  send_on_flag=0;//正在发送标志位,每个8位发送标志,在发送程序中设置,在发送完中断中清除
  53          char send_over_kind=0;//当前已经发送完的一类数据类型,该值在发送程序中设置,在接收程序中清除
  54          bit  send_over_flag=0;//一类数据发送完标志,用于开启20ms计时
  55          char send_inter_count=0;//一类数据发送完计时器,20ms计时器
C51 COMPILER V7.06   BOARD                                                                 03/19/2009 21:23:59 PAGE 2   

  56          bit  send_success_flag=0;//通讯正常标志位
  57          char send_point=0;//一类数据发送指针
  58          char send_or_number=0;//异或校验寄存器
  59          
  60          bit  send_ask_set_flag=0;//发送设置参数请求命令
  61          bit  send_ask_fault_flag=0;//发送故障堆栈请求命令
  62          //=====================================
  63          //485通讯中接收相关自定义寄存器
  64          //=====================================
  65          unsigned char rx_buffer[5]=0;//接收缓冲器
  66          char rx_point=0;//接收指针
  67          //======================================
  68          //8个按键采样相关自定义寄存器
  69          //======================================
  70          int  key_sample_count_l=0;//按键采样计时器低位,用于200ms间隔按键的采样
  71          char key_sample_count_h=0;//按键采样计时器二(用做功能键的采样,长按1s以上才有效)
  72          char key_sample_code=0;//按键采样值
  73          //========================================
  74          //EEPROM相关寄存器
  75          //========================================
  76          char eeprom_addh=0x28;//eeprom地址高位
  77          char eeprom_addl=0x0;//eeprom地址低位
  78          char eeprom_data=0;//eeprom数据高位
  79          //========================================
  80          //参数读取和写入功能相关寄存器
  81          //========================================
  82          char function_key_kind=0;
  83          //========================================
  84          //指示灯显示相关自定义寄存器
  85          //========================================
  86          bit  light_power_flag=0;//灯-上电指示
  87          bit  light_set_flag=0;//灯-参数设置指示
  88          bit  light_fault_flag=0;//灯-故障显示指示
  89          bit  light_work_flag=0;//灯-反馈工作指示
  90          bit  light_copy_paste_flag=0;//灯-参数复制粘帖指示
  91          
  92          bit light_fault_flash_flag=0;//故障灯闪烁标志位
  93          int light_fault_flash_count=0;//故障灯闪烁计数器
  94          bit light_work_flash_flag=0;//运行灯闪烁标志位
  95          int light_work_flash_count=0;//运行灯闪烁计数器
  96          bit light_work_flash=0;//运行灯需要闪烁标志位
  97          //=================================
  98          //通讯协议相关自定义常量,发送类型有8种,具有优先级
  99          //=================================
 100          #define SEND_HAND      0x1//握手协议
 101          #define SEND_SET       0x4//参数设置
 102          #define SEND_SHOW      0x40//数值显示
 103          #define SEND_HEART     0x80//心跳数据
 104          #define SEND_FAULT     0x10//故障命令
 105          #define SEND_KEY       0x2//复位按钮命令
 106          #define SEND_FU        0x8//请求参数设置命令
 107          #define SEND_FAULT_STACK 0x20//故障堆栈显示命令
 108          //=================================
 109          //通讯协议自定义内容
 110          //=================================
 111          #define HAND_CMD       0x10//收到握手命令
 112          #define SET_CMD        0x20//收到参数设置命令
 113          #define SET_FU_CMD     0x21//收到参数请求命令
 114          #define SHOW_CMD       0x30//收到参数显示命令
 115          #define HEART_CMD      0x40//收到心跳数据命令
 116          #define FAULT_CMD      0x50//收到故障命令
 117          #define FAULT_STACK_CMD 0x51//收到故障堆栈命令
C51 COMPILER V7.06   BOARD                                                                 03/19/2009 21:23:59 PAGE 3   

 118          #define RESET_KEY_CMD  0x60//收到复位按键命令
 119          //================================
 120          //通讯协议中自定义的时间
 121          //================================
 122          #define SEND_SHOW_TIME      200  //200ms
 123          #define SEND_HAND_TIME      500  //500ms
 124          #define SEND_HEART_TIME     500  //500ms
 125          #define SEND_FAULT_TIME     100  //100ms
 126          #define SEND_COMM_ERROR     20   //20ms
 127          #define SEND_HEART_LAST_TIME 2000 //2s
 128          //=================================
 129          //按键采样,由硬件电路决定
 130          //=================================
 131          #define MODE_KEY       0x80//模式按键
 132          #define ENTER_KEY      0x40//确定按键
 133          #define ADD_KEY        0x20//加一按键
 134          #define SHIFT_ADD_KEY  0x10//左移按键
 135          #define COPY_KEY       0x28//参数复制键,加键和功能键组合而成
 136          #define PASTE_KEY      0x0c//参数粘帖键,减键和功能键组合而成
 137          #define SUB_KEY        0x04//减一按键
 138          #define SHIFT_SUB_KEY  0x02//后移按键
 139          #define RESET_KEY      0x01//系统重启按键
 140          //=================================
 141          //人机界面程序相关自定义寄存器
 142          //=================================
 143          int code *p;//查表指针
 144          int  show_num=0;//显示刷新计时器
 145          char confirm=0;//模式选择寄存器
 146          char point_flag=0;//小数点显示寄存器
 147          char led_pos=0;//数码管位置
 148          char led01=0;//数码管字符
 149          char led02=0;
 150          char led03=0;
 151          char led04=0;
 152          char ledcode01=0;//数码管显示字符
 153          char ledcode02=0;
 154          char ledcode03=0;
 155          char ledcode04=0;
 156          char ledcode01flash=0;//数码管闪烁字符
 157          char ledcode02flash=0;
 158          char ledcode03flash=0;
 159          char ledcode04flash=0;
 160          char led_data=0;//参数设置或显示序号
 161          int  buffer=0;//缓冲寄存器
 162          bit  neg_flag=0;//负值标志位
 163          bit  flash_code=0;//是否闪烁标志位
 164          bit  set_rev_flag=0;//上位机设置的数据已经接收到并显示标志位,为了防止enter键按的太快而造成的误设置参数
 165          char high_led_number=4;//显示最高位处于那个LED位上
 166          //=========================================
 167          //接收上位机数据自定义寄存器
 168          //=========================================
 169          int show_data;//显示数据寄存器
 170          int set_data;//设置数据寄存器
 171          int fault_data=0;//主机故障显示寄存器
 172          int error_data=0;//用于接收故障堆栈数据
 173          char sys_state=0;//从机获得主机的状态
 174          //=========================================
 175          //故障闪烁程序自定义寄存器
 176          //=========================================
 177          int  fault_temp=0x1;//故障检测中用
 178          char time_i=1;//故障检测中用(当前检查到故障16位的那个位)
 179          char fault_number=0;//故障类别(需要显示的故障内容)
C51 COMPILER V7.06   BOARD                                                                 03/19/2009 21:23:59 PAGE 4   

 180          bit  fault_flash_flag=0;//故障闪烁标志位
 181          
 182          bit  fault_first_flag=0;//通讯正常后,在没有模式键按下的时循环闪烁故障内容,有模式键按下后不现实故障代码
 183          bit  start_only_once_flag=0;//保证开机现实故障后,通讯正常界面只进入一次
 184          char fault_enter_flag=0;//为了让多个故障循环闪烁而设置的标志位
 185          //=========================================
 186          const int code led_table[29]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xfd,0x13,0xc5,0x31,0x85,0
             -xff,
 187                                      //  0    1   2    3    4    5    6    7    8    9    -    n    o    P    d   n
             -one
 188                                                                    0xfe,0x63,0x61,0x70,0x91,0xe3,0x03,0x31,0x11,0x49,0x83,0xf4,0x71};//数据管显示字符库
 189                                                                  //  .    C   E    F.   H    L    O    P    R    S    U    r.   F
 190          
 191          //========================================================================================================
             -=====
 192          //程序说明:该程序完成一个8位数码管的显示功能
 193          //========================================================================================================
             -=====
 194          void led_show_byte()
 195          {
 196   1           char led_show_data;
 197   1           bit led_show_bit;
 198   1           char j;
 199   1      
 200   1              led_show_data=led_show_value[led_show_byte_number];//读取需要显示的代码
 201   1              for(j=0;j<8;j++)
 202   1                 {
 203   2                  if(led_show_data&0x1==1)//按位值设置输出电平值
 204   2                    led_show_bit=1;
 205   2                  else
 206   2                    led_show_bit=0;

⌨️ 快捷键说明

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