中断控制数码管显示程序解释讲解.ppt

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
简易数码秒表设计示例程序 ? #include<reg51.h> 51 单片机寄存器定义的头文件 ? unsigned char code Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f}; 数码管显示 0~9 的断码表 ? unsigned char int_time; 定义无符号字符变量, 中断次数 ? unsigned char second; 定义秒 ? void delay(void) 延时函数 ? { ? unsigned char i; ? for(i=0;i<200;i++) 延时时间, for 循环语句 ? ; ? } 秒显示函数 ? void Display_Second(unsigned char k) 定义入口参数 ? { ? P2=0xfd; P2, P2.1 引脚低电平, DS2 亮 ? P0=Tab[k/10]; 显示十位 ? delay(); 调用延时函数 ? P2=0xfe; P2, P2.0 引脚低电平, DS1 亮 ? P0=Tab[k]; 显示个位 ? delay(); ? P2=0xff; P2,关闭所有数码管 ? } 主函数 ? void main(void) ? { ? TMOD=0X01; 工作方式控制寄存器 TMOD,使用 定时器 T0 工作方式 1 ? TH0=(65536-46083)/256; 将定时时间设为 50ms ? TL0=(65536-46083)%6; 存入寄存器 TH0 和 TL0 ? EA=1; 开启总中断 ? ET0=1; 定时器 T0 中断允许 ? TR0=1; 启动定时器 T0 开始运行 ? int_time=0; 中断次数初始化 ? second=0; 秒初始化 ? while(1) 无限循环 ? { ? Display_Second(second); 调用秒的显示子程序 ? } ? } 实际计数值 = = =46083 机器周期 定时时间 us ms 085 . 1 50 ? void Time0_serve(void)interrupt 1 using 1 定时器 T0 的中断服务函数, T0 的中断编号为 1 ,使 用第一组工作寄存器 ? { ? TR0=0; 关闭定时器 T0 ? int_time ++; 每来一次中断,中断次数自加 1 ? if(int_time==20) 20 次中断,即 1s 进行一次时间 控制 定时器 T0 的中断服务程序 PSW . 4 (RS1) PSW . 3 (RS0) 当前使用的工作 寄存器区 R0 - R7 0 0 0 区 ( 00 - 07H ) 0 1 1 区 ( 08 - 0FH ) 1 0 2 区 ( 10 - 17H ) 1 1 3 区 ( 18 - 1FH ) CPU 通过对 PSW 中的 D4 、 D3 位内容 的修改,就能任选一个工作寄存器区, 例如: SETB PSW . 3 CLR PSW . 4 ;选定第1区 S

您可能关注的文档

文档评论(0)

sunhongz + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档