51单片机控制灯试验(共四个).doc_第1页
51单片机控制灯试验(共四个).doc_第2页
51单片机控制灯试验(共四个).doc_第3页
51单片机控制灯试验(共四个).doc_第4页
51单片机控制灯试验(共四个).doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

第一个是用汇编写程序控制八个灯循环的亮第二个是加加两个按键控制其开始和停止第三个是用汇编控制数字led灯,其是一个可以从0-9循环的第四个是加两个键控制其从0-9和9-0循环(可用汇编和c写)ORG 0000HlJMP MAINMAIN: MOV A,#11111110B DD:MOV P1,A LCALL DELAY RL A LJMP DDDELAY:MOV R0,#20LOOP1:MOV R1,#100LOOP2:MOV R2,#250LOOP3:DJNZ R2,LOOP3 DJNZ R1,LOOP2 DJNZ R0,LOOP1 RET END ORG 0000H lJMP MAIN MAIN: JB P2.0,MAIN AA: MOV A,#11111110B DD: MOV P1,A LCALL DELAY RL A LJMP DDDELAY: MOV R0,#20LOOP1: MOV R1,#100LOOP2: MOV R2,#250LOOP3: JNB P2.0,AA JNB P2.1,CC DJNZ R2,LOOP3 DJNZ R1,LOOP2 DJNZ R0,LOOP1 RET CC: MOV A,11111111B MOV P1,A LCALL DELAY LJMP MAIN END ORG 0000HLJMP MAINMAIN:MOV R0,#00 MOV R1,#10 MOV DPTR,#TABLELOOP: MOV A,R0 MOVC A,A+DPTR MOV P2,A LCALL DELAY INC R0 MOV A,R0 DJNZ R1,LOOP LJMP MAINDELAY:MOV R3,#10LOOP1:MOV R4,#100LOOP2:MOV R5,#250LOOP3:DJNZ R5,LOOP3 DJNZ R4,LOOP2 DJNZ R3,LOOP1 RETTABLE:DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H ENDORG 0000HLJMP MAINMAIN:MOV R0,#00 MOV R1,#10 MOV DPTR,#TABLELOOP: MOV A,R0 MOVC A,A+DPTR MOV P2,A LCALL DELAY INC R0 MOV A,R0 DJNZ R1,LOOP LJMP MAINDG: MOV R6,#9 MOV R7,#10 MOV DPTR,#TABLE LOOP4:MOV A,R6 MOVC A,A+DPTR MOV P2,A LCALL DELAY DEC R6 MOV A,R6 DJNZ R7,LOOP4 LJMP CCDELAY:MOV R3,#10LOOP1:MOV R4,#100LOOP2:MOV R5,#250 JNB P1.1,CC JNB P1.0,MAINLOOP3:DJNZ R5,LOOP3 DJNZ R4,LOOP2 DJNZ R3,LOOP1 RET TABLE:DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H END最后这个我还用c语言写了程序,程序如下#includesfr p2=0xa0;sfr p1=0x90;sbit p1_0=0x90;sbit p1_1=0x91;int kk10=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; DELAY(); int a,b;int main()if(p1_0=0) while(1) b=1; for(a=0;a=0;a-) p2=kka; DELAY(); if(p1_0=0) b=1;break; DELAY() unsigned char i,j,p; for(i=10;i0;i-) for(j=100;j0;j-) if(p1_1=0) b=0;a=10;break; if(p1_0=0) b=1;a=-1;break; for(p=200;p0;p-) ; 或者如以下程序:#includesfr p2=0xa0;sfr p1=0x90;sbit p1_0=0x90;sbit p1_1=0x91;int kk10=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;DELAY();int flag=2 ,i,t;/*flag先设置一个值(这个值不能为1和0),如果不设的话默认为0*/ int main() while(1) if(p1_0=0) flag=0; if(p1_1=0) flag=1; /*循环一开始就得先检测有没有按键按下*/ if(flag=0|flag=1) while(1) if(flag=0) for(i=0;i=0;t-) p2=kkt; DELAY(); if(flag=0) break; DELAY() int j,p; for(j=100;j0;j-) if(p1_0=0) flag=0;i=-1;break; /*跟下面一样的道理,考虑一下t不取0而取-1*/ else if(p1_1=0) flag=1;t=10;break; /*循环过程中按键1按下,程序有两种情况,第

温馨提示

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

评论

0/150

提交评论