- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 2012国家公务员考试申论(副省级)真题及答案解析.doc
- 建筑做法内容1.doc
- 2012国网计算机考试题库.docx
- 建筑做法表.doc
- 2012在职攻硕GCT数学B卷考试真题.doc
- 2012基本能力试题模拟题.doc
- 2012备战高考高中政治全套哲学知识点总结.doc
- 2012大理市学车开理论考试C1小型手动档汽车试题.doc
- 2012学年七上语文期中测试卷.doc
- 建筑制图练习册答案1.doc
- 某县纪委监委开展“校园餐”突出问题专项整治工作汇报22.docx
- 中小学校园食品安全与膳食经费管理专项整治工作自查报告66.docx
- 某县委常委、宣传部部长年度民主生活会“四个带头”个人对照检查发言材料.docx
- XX县委领导班子年度述职述廉报告3.docx
- 某县纪委关于校园餐问题整治工作落实情况的报告.docx
- 中小学校园食品安全与膳食经费管理专项整治工作自查报告22.docx
- 某县税务局党委领导班子年度民主生活会“四个带头”对照检查材料.docx
- 某县委书记在县委常委班子年度民主生活会专题学习会上的讲话.docx
- 某县纪委校园餐问题整治工作落实情况的报告.docx
- 某区委副书记、区长年度民主生活会对照检查材料.docx
文档评论(0)