📄 board.lst
字号:
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 + -