




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
51单片机按键控制花样灯时间:2012-09-10 13:50:11 来源:51hei 作者:/* 本程序实现用按键控制花样灯。 * 当K1按下时,灯从0xfe向左跑一遍; * 当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置; * 当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。 * 当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。 * 当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。 */*连接方法:P0接独立按键JP5;P2接LED灯接口JP1 */#include /头文件,函数声明#include /定义按键所在位sbit K1=P00;sbit K2=P01;sbit K3=P02;sbit K4=P03;sbit K5=P04;unsigned char led;unsigned char j;void delayms(unsigned char ms) / 1ms标准延时 while(ms-)for(j=0;j110;j+); /还是无法设置比较标准的延时,如1S等;所以应该用定时器延时才最准确void main() /P2=led; unsigned int i; while(1) /* 当K1按下时,灯从0xfe向左跑一遍; * */ if(K1=0) delayms(10); /消除键盘抖动 if(K1=0) led=0xfe; for(i=0;i7;i+) /i可以去8的倍数,表示本电路执行多少次 /led=0x7f; / P端口的初定义要在循环外面,不然会使效果错乱 P2=led; /由于这里已经初设一个灯,所以for里面要加上这一个 delayms(100); /起初这里设置500MS,使按键每按一下灯彩走一个,不能达到要求。 led=_crol_(led,1); P2=led; delayms(100); while(!K1); /这里强调松开就没再次执行程序 P2=led; /说明执行完上面的程序的最后状态 /P2=led; / 如果把本行放在这里,虽然在开头中没有说明程序烧写好之后就先显示一个灯,但由于本行在if外面,所有最后还是会显示/*当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置 * */ if(K2=0) delayms(10); if(K2=0) led=0x7f; for(i=0;i7;i+) P2=led; delayms(100); led=_cror_(led,1); P2=led; delayms(100); while(!K1); P2=led; delayms(100); for(i=0;i7;i+) led=_crol_(led,1); P2=led; delayms(100); /跑回去怎么就那么快呀? /此时led=0x7f /*当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。 * */ if(K3=0) delayms(10); /消除抖动 if(K3=0) led=0xfe; delayms(200); for(i=0;i7;i+) P2=led; delayms(200); led=led1; / 备注led=_crol_(led,1)等于led7; P2=led; delayms(200); if(led=0x00) break; /这里一定要有个break,跳出循环,然后别忘了此时的状态是00,而不是7f while(!K1); led=0x7f; P2=led; delayms(200 ); for(i=0;i1; P2=led; delayms(200); /*当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。* */ if(K4=0) delayms(10); /消除抖动 if(K4=0) for(i=0;i4;i+) /执行四次 led=0xf0; P2=led; delayms(500); led=0x0f; P2=led; delayms(500); /*当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。* */ if(K5=0) delayms(10); if(K5=0) P2=0xff; /* */时钟+秒表+流水灯的单片机汇编程序时间:2012-09-10 13:49:42 来源: 作者:/HJSMSY-V1.0单片机开发板测试程序/-/ /-/=主函数=ORG 0000H LJMP MAIN ORG 000BH LJMP T00/ ORG 001BH/ LJMP T11 ORG 0030H/=程序初始化=MAIN: MOV TMOD,#11H MOV TH0,#3CH MOV TL0,#0B0H MOV TH1,#0F0H MOV TL1,#0B0H SETB EA SETB ET0/ SETB ET1 SETB TR0/ SETB TR1 CLR P3.4 MOV R7,#00H ;秒值 MOV 30H,#00H ;秒个位值 MOV 31H,#00H ;秒十位值 MOV 32H,#00H ;分个位 MOV 33H,#00H ;分十位 MOV 34H,#00H ;时个位 MOV 35H,#00H ;时十位 MOV 44H,#00H ;秒表毫秒十位 MOV 45H,#00H ;秒表秒毫秒百位 MOV 46H,#00H ;秒表秒个位 MOV 47H,#00H ;秒表秒十位 MOV 48H,#00H ;秒表分个位 MOV 49H,#00H ;秒表分十位 MOV P2,#0F0H ;P2口按键初始化 MOV 40H,#01H ;数码管休眠值 /流水灯/秒表开关数 MOV 41H,#08H ;流水灯循环值 MOV 42H,#00H ;秒表暂停/ ACALL T11/- MAIN1: MOV P0,#0FFH MOV P1,#0FFH MOV R0,40H CJNE R0,#01H,ACL1 ACALL MAIN2 ;时钟显示ACL1:CJNE R0,#02H,ACL2 ACALL MAIN3 ;秒表ACL2:CJNE R0,#03H,ACL3 ACALL LED ;流水灯ACL3:ACALL KEY ;按键扫描/ ACALL BAO ;定时报警 LJMP MAIN1/=报警子程序=BAO:MOV R4,33H CJNE R4,#03H,YY1 CLR P3.2 ACALL KEY LJMP YY2YY1:CJNE R4,#05H,YY2 SETB P3.2 ACALL KEYYY2:RET/=时钟扫描子程序=MAIN2: MOV A,30H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.0 ACALL DELAY MOV A,31H MOV DPTR,#TAB MOVC A,A+ DPTR MOV P0,A CLR P1.1 SETB P1.0 ACALL DELAY MOV A,32H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.2 SETB P1.1 ACALL DELAY MOV A,33H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.3 SETB P1.2 ACALL DELAY MOV A,34H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.4 SETB P1.3 ACALL DELAY MOV A,35H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.5 SETB P1.4 ACALL DELAY MOV P0,#7FH MOV P1,#0EBH ACALL DELAY MOV P1,#0FFH RET/=秒表扫描子程序=MAIN3: MOV A,44H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.0 ACALL DELAY MOV A,45H MOV DPTR,#TAB MOVC A,A+ DPTR MOV P0,A CLR P1.1 SETB P1.0 ACALL DELAY MOV A,46H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.2 SETB P1.1 ACALL DELAY MOV A,47H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.3 SETB P1.2 ACALL DELAY MOV A,48H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.4 SETB P1.3 ACALL DELAY MOV A,49H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.5 SETB P1.4 ACALL DELAY MOV P0,#7FH MOV P1,#0EBH ACALL DELAY MOV P1,#0FFH RET/=定时器T0中断服务=T00:MOV TH0,#0D8H MOV TL0,#0F0H INC R7 CJNE R7,#64H,AA MOV R7,#00H/-时钟跑值- TK1:INC 30H ;每秒钟秒个位增一 MOV R6,30H CJNE R6,#0AH,AA MOV 30H,#00HTK2:INC 31H MOV R6,31H CJNE R6,#06H,AA MOV 31H,#00H TK3:INC 32H MOV R6,32H CJNE R6,#0AH,AA MOV 32H,#00HTK4:INC 33H MOV R6,33H CJNE R6,#06H,AA MOV 33H,#00HTK5:INC 34H MOV R5,34H MOV R6,35H CJNE R5,#04H,TK6 CJNE R6,#02H,TK6 MOV 34H,#00H MOV 35H,#00HTK6:CJNE R5,#0AH,AA MOV 34H,#00H INC 35H/-秒表跑值- AA: MOV R5,42H CJNE R5,#01H,TK7 INC 44HTK7:MOV R5,44H CJNE R5,#0AH,AA1 MOV 44H,#00H INC 45H MOV R5,45H CJNE R5,#0AH,AA1 MOV 45H,#00H INC 46H MOV R5,46H CJNE R5,#0AH,AA1 MOV 46H,#00H INC 47H MOV R5,47H CJNE R5,#06H,AA1 MOV 47H,#00H INC 48H MOV R5,48H CJNE R5,#0AH,AA1 MOV 48H,#00H INC 49H MOV R5,49H CJNE R5,#06H,AA1 MOV 49H,#00H AA1:RETI/=定时器T1中断服务子程序=/T11:MOV TH1,#0F0H / MOV TL1,#0B0H/ RETI/*定时时间调整子程序*/TBAO: MOV 50H,#00H MOV 51H,#00H MOV 52H,#00H MOV 53H,#00H MOV 54H,#00H MOV 55H,#00H MOV R3,50H DJNZ 30H,RET1RET1: RET/=键盘扫描子程序= KEY:MOV P2,#0F0H MOV R3,P2 CJNE R3,#0F0H,KE0 LJMP KK13KE0:CJNE R3,#0E0H,KE1 ;P2.4行 MOV P2,#0EFH JB P2.3,KK1 /用作调定时时间 ;K13 秒个位增一 ACALL DELAY1 ACALL TK1KK1:JB P2.2,KK2 ;K14 秒十增一 ACALL DELAY1 ACALL TK2KK2:JB P2.1,KK3 ;K15 分个位增一 ACALL DELAY1 ACALL TK3KK3:JB P2.0,KE1 ;K16 分十位增一 ACALL DELAY1 ACALL TK4KE1:MOV P2,#0DFH ;P2.5行 JB P2.3,KK4 ;K9 时个位增一 ACALL DELAY1 ACALL TK5KK4:JB P2.2,KK5 ;K10 时十位增一 ACALL DELAY1 INC 35H MOV R3,35H CJNE R3,#03H,HH0 MOV 35H,#00H LJMP KK5HH0:CJNE R3,#02H,HH1 LJMP KK5HH1:CJNE R3,#01H,HH2 LJMP KK5HH2:MOV 35H,#00HKK5:JB P2.1,KK6 ACALL DELAY1 ;K11 开/关蜂鸣器 CPL P3.2KK6:JB P2.0,KE2 ;K12 秒表暂停 MOV 42H,#00H KE2:MOV P2,#0BFH ;P.6行 JB P2.3,KK7 ;K5 时钟暂停/取消暂停 ACALL DELAY1 CPL ET0 KK7:JB P2.2,KK8 ;K6 显示/休眠/流水灯 ACALL DELAY2 INC 40H MOV R3,40H CJNE R3,#04H,KK8 MOV 40H,#01HKK8:JB P2.1,KK9 / ACALL DELAY3 ;K7 秒表清0 MOV 44H,#00H MOV 45H,#00H MOV 46H,#00H MOV 47H,#00H MOV 48H,#00H MOV 49H,#00HKK9:JB P2.0,KE3 ;K8 秒表开始跑 MOV 42H,#01H KE3:MOV P2,#7FH ;P2.7行 JB P2.3,KK10 ;K1 秒十位减一 ACALL DELAY1 MOV R3,31H CJNE R3,#00H,JA1 LJMP KK10JA1:DEC 31HKK10:JB P2.2,KK11 ;K2 分个位减一 ACALL DELAY1 MOV R3,32H CJNE R3,#00H,JA2 LJMP KK11JA2: DEC 32HKK11:JB P2.1,KK12 ;K3 分十位减一 ACALL DELAY1 MOV R3,33H CJNE R3,#00H,JA3 LJMP KK12JA3:DEC 33HKK12:JB P2.0,KK13 ;K4 时个位减一 ACALL DELAY1 MOV R3,34H CJNE R3,#00H,JA4 L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《小学教师招聘》过关检测试卷及参考答案详解【预热题】
- 押题宝典教师招聘之《幼儿教师招聘》题库含答案详解【巩固】
- 教师招聘之《小学教师招聘》复习提分资料含答案详解(完整版)
- 教师招聘之《幼儿教师招聘》及一套完整答案详解
- 教师招聘之《小学教师招聘》试卷(能力提升)附答案详解
- 2025年教师招聘之《小学教师招聘》练习题库包含答案详解(满分必刷)
- 2025年四川天府新区党工委管委会工作机构所属事业单位选调10人笔试高频难、易错点备考题库参考答案详
- 教师招聘之《小学教师招聘》模拟题库讲解及参考答案详解【培优b卷】
- 2025年江西省农村商业银行招聘考试(申论)历年参考题库含答案详解
- 合肥市高新技术企业信息服务市场:自主创新驱动与发展策略
- 实变函数课件讲义
- DB15T 2416-2021蒙餐 风干羊背子
- 弹簧设计基础知识概要课件
- 中国文化概论 第1章 中国文化的历史地理环境课件
- 危险源登记检查及记录表
- 科研诚信课件
- 汽车维修常用工量具使用ppt课件(完整版)
- 1.1地球和地球仪-2022-2023学年新人教版地理七年级上册一课一练(Word版含答案)
- 商业银行监管评级简表
- 产褥期保健PPTPPT课件
- 代理记账电话销售技巧PPT课件
评论
0/150
提交评论