网站大量收购闲置独家精品文档,联系QQ:2885784924

按键中断处理程序设计与调试.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
按键中断处理程序设计与调试

/************************************************ 按键中断处理程序设计与调试 设计: 2010年12月02日 关键词:定时器,中断处理,时钟程序设计 程序采用模块化设计,由定时器中断数据产生、显示、按键中断处理、控制等模块组成。 单片机硬件连接:P1.0-P1.3接数码管的位控制,P0口接共阳极数码管段码,动态显示。 P3.2-P3.3接2个按键。P2.3、P2.7接时间控制输出指示灯。 ************************************************/ #include sbit P2_3 P2^3; //定义控制指示灯的端口。 sbit P2_7 P2^7; //数组,定义共阳极数码管显示段码:0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F,H,L,P,-,熄灭。 unsigned char duanma[] 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0xc7,0x8c,0xbf,0xff ; //数组,定义显示位码。 unsigned char wm[] 0xfe,0xfd,0xfb,0xf7 ; char hour 11,min 29,sec 0; unsigned int ms; //定义时钟控制起始和终止单元 unsigned char hour_start 11,min_start 30,hour_end 11,min_end 33; //初始设置控制启动时间11:30,控制终止时间11:33。 //延时函数,带参数i。 void delay int i //在调用函数时通过设置参数,改变延时时间。 int j 0,k 0; for j 0;j i;j++ for k 0;k 121;k++ ; //动态显示函数 void display char v1,char v2 P0 duanma[v1/10];P1 wm[0];delay 2 ; //第1位显示V1的十位,显示时长2ms。 if sec0x01 P0 duanma[v1%10]0x7f; //秒单元是奇数,数码管的小数点点亮;否则小数点灭。小数点1秒闪烁。 else P0 duanma[v1%10];P1 wm[1];delay 2 ; //第2位显示V1的个位,显示时长2ms。 P0 duanma[v2/10];P1 wm[2];delay 2 ; //第3位显示V2的十位,显示时长2ms。 P0 duanma[v2%10];P1 wm[3];delay 2 ; //第4位显示V2的个位,显示时长2ms。 //时钟数据产生函数 void t0_int interrup 1 TH0 0x3C; //50ms的定时器初始值 TL0 0xb8; if ms 20 //20个50ms,1秒。 ms 1; //产生数据sec、min if sec 59 sec 0; if min 59 min 0; if hour 23 hour 0; else hour++; else min++; else sec++; else ms++; //中断初始化函数 void int_init TMOD 0x01; //T0工作在模式1,非门控,定时方式。 TH0 0x3c; //50ms定时器初始值 TL0 0Xb8; // PT0 1; //T0高优先级 EA 1; //开总中断。 ET0 1; //开定时器0中断。 EX0 1; //开外中断int0。 IT0 1; //设置外中断0为下降沿中断触发方式。 EX1 1; //开外中断int1。 IT1 1; //设置外中断1为下降沿中断触发方式。 TR0 1; //启动定时器0。 //中断服务函数0:按键处理函数:A键对hour单元循环增1; void key_int_a interrupt 0 //外中断0, 中断号为0。A键处理函数 if hour 23 hour 0; else hour++; //A键按下,如果hour是23,则送0,否则hour加1。 //中断服务函数2:按键处理函数:B键对min单元循环增1; void key_int_b interrupt 2 //外中断1, 中断号为2。B键处理函数 if min 59 min 0; else min++; //B键按下,如果min是59,则送0,否则min加1。 //时钟控制程序。 void time_controller if ho

文档评论(0)

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

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

1亿VIP精品文档

相关文档