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

📄 ceshi.c

📁 电能表误差测试仪的代码.为c语言编写.实现测量实时保存功能.
💻 C
字号:
#include "PL3105.h"

#define uchar unsigned char
#define uint  unsigned int

/*常量定义*/
#define  CHECK_TIME  1000   //5秒钟
#define  PULSE_DZ_CN 3    //待测表收到PULSE_DZ_CN个脉冲后,显示误差
#define  PULSE_JX_CN 3    //机械表收到PULSE_JX_CN个脉冲后,显示误差

//写24XX不同空间的地址指令
#define  WR_2402    0xA0         // 24空间0-2K 不受保护的低半部分
#define  WR_2404    0xA2         // 24空间2-4K 受保护的高半部分



/****** I/O 口设置 ********/

sbit  pulse_bz_input  = P1^5;    //标准表脉冲采样
sbit  pulse_dc_input  = P1^6;    //待测表脉冲采样                
sbit  beep            = P1^4;    // 峰鸣器驱动                
sbit  relay           = P1^7;    // 继电器驱动
sbit  lamp            = P1^0;    // 调试时用的指示灯
sbit  S_Clk           = P1^2;                     // FM24C04的时钟口
sbit  S_Dat           = P1^3;                     // FM24C04的数据口


uchar data   pulse_bz_pb;  //标准表脉冲判别
uchar data   pulse_dc_pb;  //待测表脉冲判别

uchar data   pulse_bz_flag;  //标准表脉冲标志
uchar data   pulse_dc_flag;  //待测表脉冲标志
uchar data   clear_flag; //

uint  data   pulse_bz_cn;  //标准表脉冲计数器
uint  data   pulse_dc_cn;  //待测表脉冲计数器
uint  data   pulse_bz_time;  //标准表脉冲计时
uint  data   pulse_dc_time;  //待测表脉冲计时
uint  data   pulse_bz_t;  //标准表脉冲临时计时
uint  data   pulse_dc_t;  //待测表脉冲临时计时
uchar data   check_t_num;

uchar data  an_start_flag;    //
uchar  data  key_const_reg;     //
uchar  data  key_save_reg;     //
uchar  data  reset_flag;
uchar  data  key_stop_flag;
uchar data  check_step;    //
uint  data  check_time;     //
uchar data  error;          //检查脉冲时出错
uchar data  check_pulse;       //检查脉冲
uchar data  sign_flag;           //+-符号,数码显示用
uchar data  showing;        // 当前表常数正在显示.0隐藏
uchar data  const_num;

uchar data   current_flash_cn; //当前数码管闪烁的位置。
uchar data   time3;         //
uchar data   flash_stop;       //消除在设置常数时闪烁位为隐藏状态。
uchar xdata   led_show_list[6];//数码管显示的数据 译码后的数据。
uchar xdata   led_show_buf[6];
uchar xdata   user_id[6];
uchar xdata   user_wc[6];
uchar xdata   time_reg[7];
uchar xdata   constant_mtr[6]; //电表常数,BCD码中的个位十位百位千位。
uchar data  constant_cn;     //电表常数的排序位置。
uchar data  flashing_time;   //设置常数时数码管闪烁定时器
uchar bdata flashing_con;    //设置常数相关的位组合
sbit  flashing_pb=flashing_con^0; 
sbit  have_pulse= flashing_con^1;  //待测表有脉冲。数码管动态显示有脉冲 
sbit  FM24_Bit  = flashing_con^2;  //
uchar data have_pulse_cn;             //待测表有脉冲循环计数,用于数码管动态显示有脉冲
uchar data beep_time;             //响铃时间。
uchar data beep_time2;             //响铃时间2。

uchar data  led_show_flag;   //可刷新数码管显示的标志   
uchar data  key_cn;          //按键按下的时间(5毫秒的倍数)
uchar data  key_time;        //按键屏蔽时间
//uchar data  flash_flag;      //闪灯标志 
//uchar data  flash_cn;        //闪灯计数器
//uchar data  flash_time;      //闪烁节奏定时器
uchar data  hello_flag;
uchar data  Timer_RS_2;        //
uchar data  save_eff_flag1;
uchar data  save_eff_flag2;

uchar data  watchdog_reset; //看门狗可清标志

uchar data   constant_all_flag;  //='A'可以显示常数。
uchar data   constant_showing;  //='S'当前正在显示常数
uchar xdata  read_buf[16];                   // 读取FM24时用的中间缓冲区
uchar xdata  write_buf[16];                  // 写入FM24时用的中间缓冲区
uchar xdata  constant_all[60];               // 10个常数
uchar data   save_num;

uint  data   Timer_RS_3;
uint  data   Timer_RS;  		            // 232发射/接收定时器
uchar data   RS_Re_OK;
uchar data   RS232_State;	                // RS232接收过程标志:
uchar data   RS232_Pointer;                 // RE_232 BUF数据指针
//uchar data   RS232_Add_Len;                 // RE_232 规约中地址部分的长度
uchar data   RS232_Data_Len;                // RE_232 规约中数据部分的长度
uchar data   RS232_Data_CRC1;                // RE_232 规约中的校验和
uchar data   RS232_Data_CRC2;
uchar xdata  RS232_buf[60];                 // Com1中断所接收的数据(RS232数据)
uchar xdata  RS232_buf_bak[60];             // Com1中断所接收的数据(RS232数据)备份
//uint  data   Timer_RS_Answer;  		        // RS232应答时间

uchar xdata  Send_RS232[60];            // Com1中断所发射的数据(RS232数据)
uchar xdata  Send_RS232_SELF[60];           // 发送232数据缓冲区,自检用

⌨️ 快捷键说明

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