用51单片机中断编写的4x4键盘程序_第1页
用51单片机中断编写的4x4键盘程序_第2页
用51单片机中断编写的4x4键盘程序_第3页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、: Mov TMOD,#66hMOV THO,#OffhMOV TL0,#0ffhMOV TH1,#0ffhMOV TL1,#0ffhSETB EASETB ET0SETB TR0SETB ET1SETB TR1SETB IT0SETB IT1SETB EXOSETB EX1Lcall Delay mov P1,#Ofdh Lcall Delay mov P1,#0fbh Lcall Delay mov P1,#0f7h Lcall Delay SJMP xhZDO: JNB P1.0,dat1JNB P1.1,dat2JNB P1.2,dat3JNB P1.3,dat4 dat1: mov

3、P2,#06h;1sjmp ZD0Rdat2: mov P2,#5bh;2sjmp ZD0Rdat3: mov P2,#4fh;3sjmp ZD0Rdat4: mov P2,#66h;4ZD0R: retiZD1: JNB P1.0,dat5JNB P1.1,dat6JNB P1.2,dat7JNB P1.3,dat8dat5: mov P2,#6dh;5 0110sjmp ZD1Rdat6: mov P2,#7dh;6sjmp ZD1Rdat7: mov P2,#07h;7sjmp ZD1Rdat8: mov P2,#7fh;8ZD1R: retiTZD0: JNB P1.0,dat9JNB

4、 P1.1,dat0JNB P1.2,dat10JNB P1.3,dat11 dat9:mov P2,#6fh;9sjmp ZD0R datO:mov P2,#3fh;0sjmp ZD0R dat10: mov P2,#77h ;Asjmp ZDORdatll: mov P2,#7ch ;BTZDOR:retiZD1: JNB P1.0,dat12JNB P1.1,dat13JNB P1.2,dat14JNB P1.3,dat15dat12: mov P2,#39h;Csjmp TZD1Rdat13:mov P2,#5eh;Dsjmp TZD1Rdat14:mov P2,#79h;Esjmp

5、TZD1Rdat15:mov P2,#71hTZD1R:retiDelay:mov r7,#10d djnz r7,$ ret end;F30pFC32QuF TEXTWkR2 wo29 円( f F1丄 :円2i 29活56f-?8-RSTPSENALEEAF10F1.1P1.2P1 3P1.4P1.5P1 6P1 7I umTP0.7fAD7P2.mP2.WA9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2 7/A15P3.D/RKDF3.1HXDP3 2丽帀P3.3/INTTP3.4/TDP3.5/FLP3E唾P3.7/RD1 AAT89C511b卜

6、烁卜亠-1眉12B0128节D1 31Q5J16C语言程序(扫描P1) #i ncludereg51.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(time-) for(i=0;iC2書幻j| CRYSTAL,I 讥小U13Op30pFThKTALIXTAL2f?STR1=-TEXTR110k-TP YTm.0.2.3/.5.6t Ji 1- 11- 1 11- 1 ppp

7、ppppp !亠cn4 占 cd 7 s IW5 3arPO.O/ADO PO 1/AD1 P0.2/AD2 P0.3/AD3 PO 4/AD4 P05/AD5 PO 8/AD6P0.7W7P23ASP2.1/A9 P2.2AM0 P2.3/A11 P2.4W12 P2.5/A13 P2.6rA14 P2.7M15P3.OJRXDP31/TXDP3.2J1TWF33MT-iP34MP3.5nZLP3.6.W_P3.7W-212425.26IQP1I3 ifP1J-QI陽斗亠M3串和前程序不同中断也#in cludereg51.h sbit pp0=P3A0; sbit pp 仁 P3A1; s

8、bit pp2=P3A6; sbit pp3=P3A7;int 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(time-) for(i=0;i120;i+);void main()P2=0x40;TMOD=Ox66; /设定定时计数器 TO、T1为方式2计数模式TH0=0xFF;TL0=0xFF;TH1=0xFF;TL1= 0xFF;IE=0x8F;/开总中断和定时计数器两个中断,两个

9、外中断IT0=1;IT仁1;/设置外中断为下降沿触发TR0=1;TR1=1;/打开定时计数器开始计数while(1) ppO=O;delay(5);pp0=1;pp 仁0;delay(5);pp1=1;Pp2=0;delay(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);*/using 1void intsvrO(void) interrupt 0temp=P3;switch(temp)case 0xfa:dat=0;br

10、eak;case 0xf9:dat=1;break;case 0xbb:dat=2;break;case 0x7b:dat=3;break; default: break;P2=yudat;void timerO(void) in terrupt 1 using 1 temp=P3;if(temp=Oxee) dat=8;if(temp=Oxed) dat=9;if(temp=0xaf) dat=10;if(temp=0x6f) dat=11;P2=yudat;void intsvr1(void) interrupt 2 using 3temp=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) int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论