主函数结构设计:
#include <main.h>//unsigned char time_fage_n=0;unsigned char time_flag_0=0;//bit name_mode_flag=0;bit mode_flag=0;bit ad_mode_flag=0;bit led_mode_flag=0;bit smg_mode_flag=0;//dat_para_setunsigned char da_para;void main(){//name_mode_init();Timer2Init(); //定时器2初始化,定时2mssmg_init(); //数码管初始化,即消隐board_init(); //继电器,蜂鸣器等初始化(关闭)led_init(); //led初始化(全部熄灭)while(1) //进入循环{/*时间片循环*//*利用定时器中断产生一定时间片循环,并在该循环周期内执行特定的函数。其中利用time_flag_n++来产生循环时间片*//*利用time_flag_n%para是在time_flag_n清零前多次执行该函数*//*利用time_flag_n==para是在time_flag_n清零前只执行一次,不同参数将不同函数执行时刻分割开来*//*利用不同的time_flag可以产生多个不同的周期,使得各个周期内执行的函数互相隔离,不产生干扰*///key_scanif(time_flag_0%5==0){key_scan(); //每10ms一次按键扫描}//da_out_and_ad_in/*切记,如果程序中同时需要数模转换或者模数转换时,请把两个函数放在一起,否则会发生数模转换失败的风险,并且如果两个函数之间间隔的时间越长,失败的风险越大。间隔时间的单位是毫秒级!!!!*/if(time_flag_0 == 120){ ad_in(); //操作全局变量ad_para(定义在模块中),类型为unsigned int,如果定义为unsigned char在进行转换为实际电压时会发生溢出,导致数据发生异常da_out(da_para); count = 0;}if(time_flag_0 == 60){tem_read();//操作全局变量tem_para,类型为unsinged int,避免计算过程中发生溢出}//fre_countif (time_flag_1 == 50){time_flag_1 = 0;fre_in();//操作全局变量f