全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/*00.0099.99 秒计时*/#include #include unsigned char data dis_digit;unsigned char key_s, key_v;unsigned char code dis_code11=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x00;/ 09, off unsigned char dis_buf8;/ 显示缓冲区unsigned char sec_bcd8; / 秒计数值, BCD码unsigned char dis_index;/ dis_index - 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量unsigned char key_times;/ K1 按一下,开始计时,再按一下,停止计时,按第三下,清零/*函数全局声明*/void clr_time();void update_disbuf();bitscan_key();void proc_key();void delayms(unsigned char ms);sbitK1 = P32;/管脚定义void main(void)P0 = 0xff;P1 = 0xff; /关闭数码管显示TMOD = 0x11;/ 定时器0, 1 工作模式1, 16位定时方式TH1 = 0xdc; /?TL1 = 0; TH0 = 0xFC; /TL0 = 0x17;clr_time();/ 赋初值 dis_digit = 0x7f;/ 初始显示P1口数码管dis_index = 0;/ 赋初值key_times = 0;key_v = 0x01;IE = 0x8a;/ 使能timer0, timer1中断,即令EA=1,ET1=1,ET0=1TR0 = 1; /启动定时器0TR1 = 0; /关定时器1,为下面开启做铺垫while(1)if(scan_key()delayms(10);if(scan_key()key_v = key_s;proc_key();void clr_time()sec_bcd0 = 0x0;sec_bcd1 = 0x0;sec_bcd2 = 0x0;sec_bcd3 = 0x0;sec_bcd4 = 0x0;sec_bcd5 = 0x0;sec_bcd6 = 0x0;sec_bcd7 = 0x0; update_disbuf();bit scan_key()key_s = 0x00;key_s |= K1;return(key_s key_v);/key_s key_v只要对应位的值中有一个为1,一个为0,结果就为1;否则为0void proc_key()if(key_v & 0x01) = 0)key_times+;if(key_times = 1)TR1 = 1;/开启定时器1else if(key_times = 2)TR1 = 0;elseclr_time();/赋初值全是0key_times = 0;void timer0() interrupt 1/ 定时器0中断服务程序, 用于数码管的动态扫描/ dis_index - 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量/ dis_digit - 位选通值, 传送到P1口用于选通当前数码管的数值, 如等于0xfe时,/选通P2.0口数码管/ dis_buf - 显于缓冲区基地址TH0 = 0xFC;TL0 = 0x17;P1 = 0xff;/ 先关闭所有数码管P0 = dis_bufdis_index;/ 显示代码传送到P0口P1 = dis_digit;/ 主函数中已有dis_digit = 0x7f;打开最高位dis_digit = _cror_(dis_digit,1);/ 位选通值右移(P30-P37), 下次中断时选通下一位数码管dis_index+;/ dis_index &= 0x07;/ 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描,0x07与0x07得到的还是0x07,由0到0x07,扫描完8个void timer1() interrupt 3unsigned char i;TH1 |= 0xdc; /?for(i = 0; i 8; i+)sec_bcdi+;/ 低位加1if(sec_bcdi 10)/ 如果低位满10则向高位进1break;/ 低位未满10sec_bcdi = 0;/ 低位满10清0update_disbuf();/ 更新显示缓冲区void update_disbuf()/ 更新显示缓冲区dis_buf0 = dis_codesec_bcd0;dis_buf1 = dis_codesec_bcd1;dis_buf2 = dis_codesec_bcd2 & 0xff;/ 加上小数点,00.0099.99秒计时,高电平点亮,其余部分与1相与,还是本身;低电平点亮时是0x7fdis_buf3 = dis_codesec_bcd3;dis_buf4 = dis_codesec_bcd4;dis_buf5 = dis_codesec_bcd5;dis_buf6 = dis_codesec_bcd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年房地产项目新能源应用管理岗位晋升考核试卷
- 19.2025年医疗行业AI辅助骨肿瘤化疗耐药性分析医疗大数据能力考核试卷
- 2025年航空运输行业航空运输智能化解决方案研究报告及未来发展趋势预测
- 2025年教师工作量调研合规考核试卷
- 2025浙江绍兴市中心血站招聘编外人员1人考试笔试备考题库及答案解析
- 2025年南平邵武市金塘工业园区专职消防队招聘专职消防队员18人笔试考试参考题库及答案解析
- 2025云南楚雄永仁县统计局城镇公益性岗位人员招聘1人笔试考试备考题库及答案解析
- 2025广东惠州市博罗县自然资源局招聘编外人员76人笔试考试参考试题及答案解析
- 财务策略:驱动增长-以业绩和竞争力为导向
- 2025浙江嘉兴市体育彩票管理服务中心招聘编外人员4人笔试考试备考题库及答案解析
- JCT2460-2018 预制钢筋混凝土化粪池
- 芯片开发职业生涯规划与管理
- 认知行为疗法(CBT)实操讲座
- GB/T 3683-2023橡胶软管及软管组合件油基或水基流体适用的钢丝编织增强液压型规范
- 重说二十年前的作品亮出你的舌苔或空空荡荡
- 身份证前六位与省市县区对照表可直接存入数据库
- 内分泌专业临床路径大全
- 党建知识题库附答案
- 竖井施工方案
- 初中化学渗透“德育”教案
- 制梁场制存梁台座检测方案
评论
0/150
提交评论