主函数main.c 子函数LCD1602.c 子函数头文件LCD1602.h 当共用变量的时候,变量在定义在主函数中,子函数中声明一下是外部变量 举例。 Main.c中 #include <stdio.h> #include "config.h" #include "ds1302.h" #include "delay.h" #include "1602.h" #include "delay.h" #include "key.h" #include "count.h" #include "EncoderEC11.h" #include "eeprom.h" #include "beep.h" sbit led1=P4^0; sbit led2=P4^1; sbit led3=P4^2; u8 tiems; u8 count; u16 count1,count2;//外部中断计数,时间设定值自加 bit finish,FLAG,t1;//工作完成标志,时间控制标志 bit close_pule,no_flag;//脉冲控制位 bit old_2TS,DO_Start; bit START_RUN=0; //运行函数启动标志 u8 low_high2; //0=无变化,1=上升沿,2、下降沿 20181113添加 u8 TAB10[]=" "; u8 TAB20[]=" "; bit ReadTimeFlag;//定义读时间标志 bit SetFlag; //更新时间标志位 u8 channel=1; unsigned char channel2=1; unsigned char time_buf2[16]; unsigned char temp[16];//定义显示区域临时存储数组 unsigned int temp2[4];//定义显示区域临时存储数组 unsigned int NO,ms=1000;// void Init_Timer0(void);//定时器初始化 void UART_Init(void); unsigned char qinp; unsigned char cnt = -1; //流水灯速查表偏移变量 unsigned char model=0; unsigned char disp_tmp[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //流水灯速查表 sbit Key3 = P1^2; sbit Key4 = P1^3; u8 kkvalue=0; sbit LED=P3^7; sbit relay_ok = P3^4; sbit relay_ng = P3^5; #define FOSC 11059200L //系统频率 #define BAUD 115200 //串口波特率 #define NONE_PARITY 0 //无校验 #define ODD_PARITY 1 //奇校验 #define EVEN_PARITY 2 //偶校验 #define MARK_PARITY 3 //标记校验 #define SPACE_PARITY 4 //空白校验 #define PARITYBIT EVEN_PARITY //定义校验位 #define S1_S0 0x40 //P_SW1.6 #define S1_S1 0x80 //P_SW1.7 bit busy; void SendData(u8 dat); void SendString(char *s); void Puls(); 在EncoderEC11.c中 //---->>>>----文件描述:EC11旋转编码器底层驱动程序---<<<<----// //---->>>>----文件版本:V1.0----<<<<----// #include "EncoderEC11.h" #include "config.h" #include "delay.h" #include "1602.h" #include "eeprom.h" #include "beep.h" 在EncoderEC11.h中 //---->>>>----文件描述:EC11旋转编码器底层驱动程序---<<<<----// //---->>>>----文件版本:V1.0----<<<<----// #include <STC15Fxxxx.H> #ifndef __EncoderEC11_H #define __EncoderEC11_H //----------------IO口定义----------------// #define EC11_A_Now P33 //EC11的A引脚,视为时钟线 #define EC11_B_Now P36 //EC11的B引脚,视为信号线 #define EC11_Key P47 //EC11的按键 //----------------编码器动作代码相关定义----------------// #define LED1 P40 #define LED2 P41 #define LED3 P42 extern unsigned char cnt ; //流水灯速查表偏移变量 extern unsigned char disp_tmp[]; //流水灯速查表 extern unsigned char qinp; extern unsigned char model; extern unsigned int NO,ms;// //extern bit channel; extern u8 channel; extern unsigned char channel2; //----------------编码器参数微调宏定义----------------// #define EC11_SCAN_PERIOD_MS 1 //EC11编码器扫描周期 #define KEY_COUNT_DESHAKING ( 12/EC11_SCAN_PERIOD_MS) //按键消抖时间 #define KEY_COUNT_LONGTIME (600/EC11_SCAN_PERIOD_MS) //长按按键判断时间 #define KEY_COUNT_DUALCLICKTIME (150/EC11_SCAN_PERIOD_MS) //双击按键判断时间 #define KEY_LONG_REPEAT_TIME (200/EC11_SCAN_PERIOD_MS) //长按按键的回报率的倒数,即一直长按按键时响应的时间间隔 //----------------局部文件内变量列表----------------// static char EC11_A_Last = 0; //EC11的A引脚上一次的状态 static char EC11_B_Last = 0; //EC11的B引脚上一次的状态 static char EC11_Type = 1; //定义变量暂存EC11的类型---->>>>---- 0:一定位对应一脉冲; 1:两定位对应一脉冲 //所谓一定位对应一脉冲,是指EC11旋转编码器每转动一格,A和B都会输出一个完整的方波。 //而 两定位对应一脉冲,是指EC11旋转编码器每转动两格,A和B才会输出一个完整的方波,只转动一格只输出A和B的上升沿或下降沿 static int EC11_KEY_COUNT = 0; //EC11按键动作计数器 static int EC11_KEY_DoubleClick_Count = 0; //EC11按键双击动作计数器 static char FLAG_EC11_KEY_ShotClick = 0; //EC11按键短按动作标志 static char FLAG_EC11_KEY_LongClick = 0; //EC11按键长按动作标志 static char FLAG_EC11_KEY_DoubleClick = 0; //EC11按键双击动作标志 static char FLAG_EC11_KEY_SK_ShotClick = 0; //EC11按键短按松开时的动作标志 声明:本站所有内容,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。 收藏 链接