蓝桥杯单片机之主函数设计技巧

本文分享了蓝桥杯单片机竞赛中的主函数设计技巧和调试经验,包括模块化测试、按位操作避免LED闪烁、数码管异常排查、按键处理注意事项以及数据处理的频率控制。通过实例分析了数码管闪烁、数据溢出等问题的解决办法,强调了底层代码的重要性。同时,给出了模块编写和测试的顺序,以帮助读者理解和提高单片机编程能力。
摘要由CSDN通过智能技术生成

主函数结构设计:

#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值