欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    用51单片机中断编写的4x4键盘程序.docx

    • 资源ID:8922679       资源大小:297.05KB        全文页数:9页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    用51单片机中断编写的4x4键盘程序.docx

    1、用51单片机中断编写的4x4键盘程序用51单片机中断编写的4x4键盘程序 应用查询扫描编写键盘程序,由于要给按键去抖动,程序变得比较复杂和冗长(详见2013年9月29日博文MSP430和AT89C51单片机4x4键盘C程序),如果用中断编写,设置中断响应在下降沿时执行中断,则程序编写不用去抖动判断,所以相比较要简单很多!下面用汇编和C语言两种方式编写4X4键盘程序!一、汇编程序 ORG 0000H LJMP MAIN ORG 0003hLjmp ZD0 ORG 000Bh LJMP TZD0ORG 0013h Ljmp ZD1 ORG 001Bh LJMP TZD1 ORG 0040HMAIN

    2、: Mov TMOD,#66h MOV TH0,#0ffh MOV TL0,#0ffh MOV TH1,#0ffh MOV TL1,#0ffh SETB EA SETB ET0 SETB TR0 SETB ET1 SETB TR1 SETB IT0 SETB IT1 SETB EX0 SETB EX1xh: mov P1,#0feh Lcall Delay mov P1,#0fdh Lcall Delay mov P1,#0fbh Lcall Delay mov P1,#0f7h Lcall Delay SJMP xhZD0: JNB P1.0,dat1 JNB P1.1,dat2 JNB P

    3、1.2,dat3 JNB P1.3,dat4dat1: mov P2,#06h ;1 sjmp ZD0Rdat2: mov P2,#5bh ;2 sjmp ZD0Rdat3: mov P2,#4fh ;3 sjmp ZD0Rdat4: mov P2,#66h ;4ZD0R: retiZD1: JNB P1.0,dat5 JNB P1.1,dat6 JNB P1.2,dat7 JNB P1.3,dat8dat5: mov P2,#6dh ;5 0110 sjmp ZD1Rdat6: mov P2,#7dh ;6 sjmp ZD1Rdat7: mov P2,#07h ;7 sjmp ZD1Rdat

    4、8: mov P2,#7fh ;8ZD1R: retiTZD0: JNB P1.0,dat9 JNB P1.1,dat0 JNB P1.2,dat10 JNB P1.3,dat11dat9: mov P2,#6fh ;9 sjmp ZD0Rdat0: mov P2,#3fh ;0 sjmp ZD0Rdat10: mov P2,#77h ;A sjmp ZD0Rdat11: mov P2,#7ch ;BTZD0R:retiTZD1: JNB P1.0,dat12 JNB P1.1,dat13 JNB P1.2,dat14 JNB P1.3,dat15dat12: mov P2,#39h ;C s

    5、jmp TZD1Rdat13:mov P2,#5eh ;D sjmp TZD1Rdat14:mov P2,#79h ;E sjmp TZD1Rdat15:mov P2,#71h ;FTZD1R:retiDelay:mov r7,#10d djnz r7,$ ret end二、C语言程序(扫描P1)#includereg51.hint yu=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;int i,j,k,time,temp,dat;void delay(time) while(t

    6、ime-) for(i=0;i120;i+);void main() P2=0x40; TMOD=0x66; /设定定时计数器T0、T1为方式2计数模式 TH0=0xFF; TL0=0xFF; TH1=0xFF; TL1=0xFF; IE=0x8F; /开总中断和定时计数器两个中断,两个外中断 IT0=1; IT1=1; /设置外中断为下降沿触发 TR0=1; TR1=1; /打开定时计数器开始计数 while(1) P1=0xfe; delay(1); P1=0xfd; delay(1); P1=0xfb; delay(1); P1=0xf7; delay(1); void intsvr0(

    7、void) interrupt 0 using 1 temp=P1; switch(temp) case 0xfe:key=0;break; case 0xfd:key=1;break; case 0xfb:key=2;break; case 0xf7:key=3;break; default:break; P2=yudat;void timer0(void) interrupt 1 using 1 temp=P1; if(temp=0xfe) dat=4; if(temp=0xfd) dat=5; if(temp=0xfb) dat=6; if(temp=0xf7) dat=7; P2=yu

    8、dat;void intsvr1(void) interrupt 2 using 1 temp=P1;if(temp=0xfe)dat=8; if(temp=0xfd) dat=9; if(temp=0xfb) dat=10; if(temp=0xf7) dat=11; P2=yudat;void timer1(void) interrupt 3 using 1 int dat; temp=P1; switch(temp) case 0xfe:key=12;break; case 0xfd:key=13;break; case 0xfb:key=14;break; case 0xf7:key=

    9、15;break; default:break; P2=yudat; /*/三、C语言(扫描P3的P3.0、P3.1、P3.6、P3.7)从这个程序也可以看出51单片机I/O口没有方向性,输入输出都可读写,而且在一个寄存器中。注意该程序对应电路图与上图的区别。#includereg51.hsbit pp0=P30;sbit pp1=P31;sbit pp2=P36;sbit pp3=P37;int yu=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;int i,j,k,time,

    10、temp,dat;void delay(time) while(time-) for(i=0;i120;i+);void main() P2=0x40; TMOD=0x66; /设定定时计数器T0、T1为方式2计数模式 TH0=0xFF; TL0=0xFF; TH1=0xFF; TL1=0xFF; IE=0x8F; /开总中断和定时计数器两个中断,两个外中断 IT0=1; IT1=1; /设置外中断为下降沿触发 TR0=1; TR1=1; /打开定时计数器开始计数 while(1) pp0=0; delay(5); pp0=1; pp1=0; delay(5); pp1=1; pp2=0; d

    11、elay(5); pp2=1; pp3=0; delay(5); pp3=1;/*以上可用下列这段代替 P3=0xfe; delay(5); P3=0xfd; delay(5); P3=0xbf; delay(5); P3=0x7f; delay(5);*/ void intsvr0(void) interrupt 0 using 1 temp=P3; switch(temp) case 0xfa:dat=0;break; case 0xf9:dat=1;break; case 0xbb:dat=2;break; case 0x7b:dat=3;break; default: break; P

    12、2=yudat;void timer0(void) interrupt 1 using 1 temp=P3; if(temp=0xee) dat=8; if(temp=0xed) dat=9; if(temp=0xaf) dat=10; if(temp=0x6f) dat=11; P2=yudat;void intsvr1(void) interrupt 2 using 3 temp=P3; if(temp=0xf6) dat=4; if(temp=0xf5) dat=5; if(temp=0xb7) dat=6; if(temp=0x77) dat=7; P2=yudat;void timer1(void) interrupt 3 using 1 int dat; temp=P3; switch(temp) case 0xde:dat=12;break; case 0xdd:dat=13;break; case 0x9f:dat=14;break; case 0x5f:dat=15;break; default: break; P2=yudat;


    注意事项

    本文(用51单片机中断编写的4x4键盘程序.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开