从44矩阵键盘输入一个2位数后用中断进行倒数,到0后显示1001.docVIP

从44矩阵键盘输入一个2位数后用中断进行倒数,到0后显示1001.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
从44矩阵键盘输入一个2位数后用中断进行倒数,到0后显示1001

从4*4矩阵键盘输入一个2位数后用中断进行倒数,到0后显示1001 在输入一个数如44后只倒数而且只显示了一次43就不会倒数下去了,但是输入01后可以显示1001,请问是我的中断的问题还是主函数里有问题 #includereg52.h #define uchar unsigned char #define uint unsigned int uchar buff[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9的数码管数字数组 uint i,j,a,b,c,f,n; uint keyscan(); uint keyscan1(); void delay(uint a) //延时子程序 { uint b; while(a--!=0) {for(b=0;b100;b++);} } void tim(void) interrupt 1 using 1 { unsigned char count; uint k; //初值99 TH0=0xd8; TL0=0xf0; TR0=1; count++; if(count==100) { i=keyscan1(); j=i; count=0; j--;//秒减1 if(j==0) { //这里添加定时到0的代码 ,可以是灯电路,继电器吸合等,或者执行一个程序 j=i; //减到0是重新赋值99 for(k=0;k200;k++) { P0=buff[1];P2=0x01;delay(3); P0=buff[0];P2=0x02;delay(3); P0=buff[0];P2=0x04;delay(3);//十位显示值处理 P0=buff[1];P2=0x08;delay(3);P2=0x00; //个位显示处理 } } for(k=0;k200;k++) { P0=buff[0];P2=0x01;delay(3); P0=buff[0];P2=0x02;delay(3); P0=buff[j/10];P2=0x04;delay(3);//十位显示值处理 P0=buff[j%10];P2=0x08;delay(3);P2=0x00; //个位显示处理 } }EA=1; } void main() { uint a; TMOD |=0x01;//定时器设置 10ms in 12M crystal TH0=0xd8; TL0=0xf0; IE= 0x82; //打开中断 TR0=1; while(1) { ;} } uint keyscan()//扫描键盘 { uint cord_h,cord_l; uint num; P3=0x0f; while(P3==0x0f);//等待键盘的变化(即输入) cord_h=P30x0f; if(cord_h!=0x0f) { delay(10); if(cord_h!=0x0f) { cord_h=P30x0f; P3=cord_h|0xf0; cord_l=P30xf0; num=cord_h|cord_l; switch(num) { case 0xee:num=0;break;//0 按了矩阵键盘后可以的到相应的数 case 0xde:num=1;break;//1 case 0xbe:num=2;break;//2 case 0x7e:num=3;break;//3 case 0xed:num=4;break;//4 case 0xdd:num=5;break;//5 case 0xbd:num=6;break;//6 case 0x7d:num=7;break;//7 case 0xeb:num=8;break;//8 case 0xdb:num=9;break;//9 }return(num); } }return(0xff); } uint keyscan1() //等待和检测键盘上得到的数,并作出相应的显示,以及返回给main函数 { uint h,l,k=0xff,m; h=keyscan(); //从键盘输入一个数作十位数 P0=buff[h]; //回显刚才输入的数字 P2=0x01; delay(2

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档