- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
06外部中断控制数码管的启停
任务二 按键变数 子任务一 用外部中断控制数码管的启停 一、任务分析 利用单片机外部中断0和一个按键来控制数码管显示的启停。 二、硬件电路 三、程序设计 主程序完成中断初始化、数码管静态显示控制工作。 中断函数实现显示启停切换。每次产生外部中断0,显示启停切换一次。 void delay10ms(); //10ms延时函数说明 void int0(void)interrupt 0//外中断0中断服务程序 { delay10ms(); //调用10ms延时函数 if(P3_2==0) //确认按键按下 { flag=~flag; //启停标志取反 } while(P3_2==1); //等待按键松开 } void delay() //定义延时函数 { unsigned int i; for(i=0;i30000;i++); } void delay10ms() //定义10ms延时函数 { uchar i,j; for(i=20;i0;i--) //执行1次i=20,20次i0、i-- for(j=250;j0;j--); //执行20次j=250,20×250次j0、j-- * * void delay(); //延时函数说明 uchar Table_yin[10]={0x3f,0x06,0x5b, 0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; char shu=0; //外部变量,数码管显示数值 bit flag=1; //外部变量,启停控制位,1时启动显示 void main( ) //主函数 { IT0=1; //外中断0下降沿触发 EA=1; //开总中断 EX0=1; //外中断0允许 while(1) // 无限循环 { while(flag) { P0=Table_yin[shu]; //P2口输出十位数的字型编码 delay(); //调用延时函数 shu++; //显示值加1 if(shu9)shu=0; //显示值过大,清0 } } } 注意: 1、函数说明应写在程序开头。 2、需要包含头文件。 若头文件用reg51.h,P3_2需要自行定义;若头文件用at89x51.h,P3_2无需定义。
原创力文档


文档评论(0)