只需一步,快速开始
热门: 51单片机 | 24小时必答区 | 单片机教程 | 单片机DIY制作 | STM32 | Cortex M3 | 模数电子 | 电子DIY制作 | 音响/功放 | 拆机乐园 | Arduino | 嵌入式OS | 程序设计
51hei.png (16.78 KB, 下载次数: 1)
下载附件
主函数与定时器
2024-4-1 20:31 上传
51hei1.png (33.52 KB, 下载次数: 1)
增大时基的设置
51hei2.jpg (41.99 KB, 下载次数: 1)
51hei3.jpg (19.83 KB, 下载次数: 1)
2024-4-1 20:33 上传
51hei4.jpg (8.39 KB, 下载次数: 1)
51hei5.jpg (9.87 KB, 下载次数: 1)
2024-4-1 20:35 上传
51hei6.jpg (12.31 KB, 下载次数: 1)
51hei7.jpg (20.54 KB, 下载次数: 1)
51hei8.jpg (12.07 KB, 下载次数: 2)
2024-4-1 20:37 上传
51hei9.jpg (40.4 KB, 下载次数: 1)
51hei10.jpg (15.74 KB, 下载次数: 2)
51hei11.jpg (40.93 KB, 下载次数: 2)
2024-4-1 20:39 上传
51hei12.jpg (17.13 KB, 下载次数: 2)
typedef enum{ STATE_OFF, STATE_ON, STATE_STOP }ENUM_STATE; //定义ENUM_STATE枚举类型 ENUM_STATE system_state = STATE_OFF; //定义枚举变量system_state, 初始化为STATE_OFF bit key_on_flag, key_off_flag, work_too_long_flag; //定义3个触发条件的bit变量(其实用2个就行) void systemStateCtrl(){ if(key_on_flag){ if(system_state==STATE_ON || system_state==STATE_STOP) system_state = STATE_OFF; } else if(key_off_flag){ if(system_state==STATE_OFF) system_state = STATE_ON; } else if(work_too_long_flag){ if(system_state==STATE_ON) system_state = STATE_STOP; } else{ ; } systemStateWork();//把状态工作程序放这里 } void systemStateWork(){ //设计你各个状态下的工作 switch( system_state ){ case STATE_OFF: do_sth1(); //关机时的工作 break; case STATE_ON: do_sth2(); //开机时的工作 break; case STATE_STOP: do_sth3(); //超时停机时的工作 break; default: break; } }
查看全部评分
使用道具 举报
nsush 发表于 2019-6-7 00:36 我对delay1s(); delay500ms()这样的延时函数就很不爽,当然程序流程很简单的,用用也没什么,如果是一个还 ...
kissme 发表于 2019-6-16 11:24 新手完全不晓得你说的啥玩意
tesrsm 发表于 2019-6-20 12:01 去除按键的抖动 不用延时函数的话,怎么处理
lianzai 发表于 2019-6-20 13:46 好文章,不知楼主能否弄成pdf格式上传呢,想保存起来
2448289424 发表于 2019-7-8 01:36 楼主是出来工作了还是还在读书自学单片机,看了你发了这篇写得挺好的,之前读书那会对时钟这东西根本就没概 ...
m182892 发表于 2019-7-8 08:21 我觉得这个帖子可以继续加深,例程要多,到一定的程度可以出版书籍。
ccdmcu 发表于 2019-8-2 16:22 按键的松手检测呢?怎么用定时器写?
laishu12345 发表于 2019-8-9 17:08 if(++key_press_time
IdeaMing 发表于 2019-8-14 10:27 我想问,怎么把DS18B20的加入到你这种机制里?一次通讯时间都要好几毫秒
IdeaMing 发表于 2019-8-16 16:25 如果同时存在数码管的刷新呢,比如一秒读一次18B20,读的时候数码管的刷新就被卡了一下
lovestc 发表于 2019-10-16 12:55 if(++flag10ms>=10) { flag10ms=0;
13303022280 发表于 2020-1-7 14:29 如果我只需要执行一次按键之后的程序,为了避免按键长按导致的重复运行,就用一个变量,在每次进入中断检 ...
hubj627 发表于 2020-1-13 09:20 这种针对代码量小的项目实时性没有问题。但代码量大的整个程序架构就会显得臃肿,也需针对同一个事情,在主 ...
神出没 发表于 2020-1-13 22:21 楼主是否在其他帖子发布了PDF及源码?想下载先来,没事多看看,望回复
涛之雨 发表于 2020-12-18 15:24 模块化的编程确实是好习惯。。。 不过楼主的排版确实有点。。
mm36d 发表于 2021-2-24 10:52 新手完全不晓得你说的啥玩意
queen11 发表于 2021-7-29 11:13 想问楼主,key press time是怎样和按压按键时间联系的,也就是按多长时间,time增加多少,这点我有点想不 ...
小麦种子 发表于 2021-8-2 21:33 我想问一下,这里的 “从微观上看,单片机是没法在同一时刻做2件事情的!所以,每到10ms的时候,单片机会 ...
不将就123 发表于 2021-11-24 17:20 if(++key_press_time
CC51hei6 发表于 2022-2-11 17:52 大神请教个问题,如果if用多了会不会影响结果, 简单函数能执行 MENU++;但复杂函数就不很,百思不得其解。
highcolddog 发表于 2022-11-2 10:37 楼主如果执行函数需要的时间必须很长,比如说485通信去轮询从机必须要加入delay延时而且可能需要个十几秒的 ...
本版积分规则 发表回复 回帖后跳转到最后一页
手机版|小黑屋|51黑电子论坛 | 管理员QQ:125739409;技术交流QQ群281945664
Powered by 单片机教程网