ORG 0000H AJMP MAIN ORG 0030H
MAIN:MOV P0,#11111110B ;P0低电平有效 LCALL DELAY ;调用延时程序 MOV P0,#11111101B LCALL DELAY MOV P0,#11111011B LCALL DELAY MOV P0,#11110111B LCALL DELAY MOV P0,#11101111B LCALL DELAY MOV P0,#11011111B LCALL DELAY MOV P0,#10111111B LCALL DELAY MOV P0,#01111111B LCALL DELAY JMP MAIN
DELAY:MOV R3,#20 ;(R3) <- 20,循环20次 LOOP1:MOV R1,#200 ;(R1) <- 200 循环200次LOOP2:MOV R2,#248 ;(R2) <- 248
LOOP3:DJNZ R2,LOOP3 ;(R2) <- (R2)-1 ,R2不等0 DJNZ R1,LOOP2 DJNZ R3,LOOP1 RET END 实验2:
MAIN:MOV A,#0FEH
WAIT:JB P3.0,WAIT LCALL DELAY10 JB P3.0,WAIT K: JNB P3.0,K LJMP LAMP LJMP WAIT LAMP: MOV P0,A RL A LCALL DELAY1S LJMP LAMP
DELAY1S:MOV R3,#20 ;(R3) <- 20,循环20次 DELAY:MOV R1,#200 ;(R1) <- 200 循环200次 LOOP1:MOV R2,#248 ;(R2) <- 248
LOOP2:DJNZ R2,LOOP2 ;(R2) <- (R2)-1 ,R2不等0 DJNZ R1,LOOP1 DJNZ R3,DELAY RET
DELAY10:MOV R5,#200 ;(R1) <- 200 循环200次
LOOP3:MOV R4,#248 ;(R2) <- 248
LOOP4:DJNZ R4,LOOP4 ;(R2) <- (R2)-1 ,R2不等0 DJNZ R5,LOOP3 RET END
实验3:
#include unsigned char key; unsigned char Tab[]={0xFC,0x60,0xDA,0xF2, 0x66,0xB6,0xBE,0xE0, 0xFE,0xF6,0xEE,0x3E, 0x9C,0x7A,0x9E,0x8E,0x00}; void ys() {unsigned char aaa,bbb; for (aaa=200;aaa>0;aaa--) for (bbb=0;bbb<200;bbb++); } void main(void) {key=0; while(1) { P3=0x7f; if(P3!=0x7f) {ys(); if(P3!=0x7f) {switch(P3) {case 0x77:key=3;break; case 0x7b:key=2;break; case 0x7d:key=1;break; case 0x7e:key=0;break; } P0=~key;}} P3=0xbf; if(P3!=0xbf) { ys(); if(P3!=0xbf) { switch(P3) {case 0xb7:key=7;break; case 0xbb:key=6;break; case 0xbd:key=5;break; case 0xbe:key=4;break; } P0=~key; } } P3=0xdf; if(P3!=0xdf) { ys(); if(P3!=0xdf) { switch(P3) {case 0xd7:key=11;break; case 0xdb:key=10;break; case 0xdd:key=9;break; case 0xde:key=8;break; } P0=~key; }} P3=0xef; if(P3!=0xef) { ys(); if(P3!=0xef) { switch(P3) {case 0xe7:key=15;break; case 0xeb:key=14;break; case 0xed:key=13;break; case 0xee:key=12;break; } P0=~key; }} P2=Tab[key]; P0=0xFE; }} 实验4:(C语言) #include unsigned char Tab[]={0xFC,0x60,0xDA,0xF2, 0x66,0xB6,0xBE,0xE0, 0xFE,0xF6,0xEE,0x3E, 0x9C,0x7A,0x9E,0x8E}; void timer0(void) interrupt 1 { TH0=0x3c; TL0=0xb0; t++;if(t==40){t=0;P1_0=~P1_0; s++;if(s==10) s=0; P2=Tab[s]; P0=0xFE; }} void main(void) { TMOD=0x01; TH0=0x3c; TL0=0xb0; EA=1;ET0=1;TR0=1; while(1) {} } 实验4(汇编): ORG 0000H LJMP MAIN ORG 000BH LJMP INTT0 ORG 0030H MAIN:MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH SETB EA SETB ET0 SETB TR0 MOV R0,#40 MOV R1,#0 MOV DPTR,#DUAN MOV A,R1 MOVC A,@A+DPTR MOV P2,A MOV P0,#0FEH SJMP $ INTT0:MOV TL0,#0B0H MOV TH0,#3CH DJNZ R0,T0FWEND LCALL MIAO MOV R0,#40 T0FWEND:RETI DUAN: DB 0FCH, 060H, 0DAH, 0F2H DB 066H, 0B6H, 0BEH, 0E0H DB 0FEH, 0F6H, 0EEH, 03EH DB 09CH, 07AH, 09EH, 08EH MIAO :INC R1 CJNE R1,#10,NEXT MOV R1,#0 NEXT:MOV DPTR,#DUAN MOV A,R1 MOVC A,@A+DPTR MOV P2,A MOV P0,#0FEH RET END 实验5: #include unsigned char Tab[]={0xFC,0x60,0xDA,0xF2, 0x66,0xB6,0xBE,0xE0, 0xFE,0xF6,0xEE,0x3E, 0x9C,0x7A,0x9E,0x8E}; void ys(unsigned int t) /*延时程序*/ { unsigned int aaa,bbb; for(aaa=150;aaa>0;aaa--) for(bbb=0;bbb ys(10); if(P3_2==0) { ys(300); a++; if(a==16) a=0; P2=Tab[a]; P0=0xFE; } } void main(void) { EA=1;EX0=1;IT0=0; while(1); } 实验6: #include unsigned char Tab[]={0xFC,0x60,0xDA,0xF2, 0x66,0xB6,0xBE,0xE0, 0xFE,0xF6,0xEE,0x3E, 0x9C,0x7A,0x9E,0x8E}; unsigned char mg=0,ms=0,bittime=20; void display(void) { TI=0;SBUF=Tab[ms];while(!TI); TI=0;SBUF=Tab[mg];while(!TI); } void timer0(void) interrupt 1 using 0 { TH0=0x3c;TL0=0xb0;bittime--; while(bittime==0) { bittime=40; { if(mg==9){mg=0;ms=ms+1;} else mg++; if(ms==6)ms=0; if(ms==0&&mg<=3) P1_0=0; else P1_0=1; } display(); }} void main(void) { TMOD=0x01;SCON=0x00; TH0=0x3c;TL0=0xb0; EA=1;ET0=1;TR0=1; while(1); } 实验7: #include unsigned char mg=0,ms=0,fg=0,fs=0,xg=0,xs=0, bitdisplay=0; unsigned char Tab[]={0xFC,0x60,0xDA,0xF2, 0x66,0xB6,0xBE,0xE0, 0xFE,0xF6,0xEE,0x3E, 0x9C,0x7A,0x9E,0x8E}; unsigned char Tab1[]={0x02}; unsigned char s=0; unsigned int bittime=0; void ys() /*延时*/ { unsigned int i,j; for(i=0;i<33;i++) { for(j=0;j<200;j++);} } void timer0(void) interrupt 1 using 0 /*T0中断*/ { TH0=0xF0;TL0=0xb0; switch(bitdisplay) { case 0:P2=Tab[mg];P0=0xFE;break; case 1:P2=Tab[ms];P0=0xFD;break; case 2:P2=Tab1[s];P0=0xFB;break; case 3:P2=Tab[fg];P0=0xF7;break; case 4:P2=Tab[fs];P0=0xEF;break; case 5:P2=Tab1[s];P0=0xDF;break; case 6:P2=Tab[xg];P0=0xBF;break; case 7:P2=Tab[xs];P0=0x7F;break; } bitdisplay++;bittime++; if(bittime==500){bittime=0;mg++;} if(mg==10){mg=0;ms=ms+1;} if(ms==6){ms=0;fg=fg+1;} if(fg==10){fg=0;fs=fs+1;} if(fs==6){fs=0;xg=xg+1;} if(xg==10){xg=0;xs=xs+1;} if(xs==2&&xg==4){xs=0;xg=0;} if(bitdisplay==8) bitdisplay=0; } void main(void) /*主程序*/ { TMOD=0x01; TH0=0xF0;TL0=0xb0;ET0=1; EA=1;TR0=1; while(1) { if(P3_0==0) {ys();if(P3_0==0)fg++; while (P3_0==0); } if(P3_1==0) {ys(); if(P3_1==0) {if(fg==0){fg=9; if(fs!=0)fs=fs-1;} else fg--;}while (P3_1==0); } if(P3_6==0) {ys();if(P3_6==0)xg++;while (P3_6==0);} if(P3_7==0) {ys(); if(P3_7==0) {if(xg==0){xg=9;if(xs!=0)xs=xs-1;} else xg--;}while (P3_7==0);} } } #include uint bitdisplay=0; unsigned char Tab[]={0xFC,0x60,0xDA,0xF2, 0x66,0xB6,0xBE,0xE0,0xFE, 0xF6,0xEE,0x3e,0x9c, 0X7a,0x9E,0x8E,0x00}; void Keyscan(); //按键扫描 void Delay1ms( uint z ); //延时函数 void timer0( void) interrupt 1 using 0 { TH0=0xFE;TL0=0xb0; switch(bitdisplay) { case 0:P2=Tab[mg];P0=0xFE;break; case 1:P2=Tab[ms];P0=0xFD;break; case 2:P2=Tab[fg];P0=0xF7;break; case 3:P2=Tab[fs];P0=0xEF;break; case 4:P2=Tab[sg];P0=0xBF;break; case 5:P2=Tab[ss];P0=0x7F;break; } bitdisplay++;bittime++; if(bitdisplay==6){bitdisplay=0;} } void main(void) { TMOD=0x01; TH0=0x3c; TL0=0xb0; EA=1; ET0=1; TR0=1; while(1) { /*if(P3_0==0) mg++; if(P3_1==0) fg++; if(P3_2==0) sg++; */ if(bittime>5000) {bittime=0;mg++;} if(mg==10) {mg=0;ms++;} if(ms==6) {ms=0;fg++;} if(fg==10) {fg=0;fs++;} if(fs==6) {fs=0;sg++;} if(sg==10) {sg=0;ss++;} if(ss==2&&sg==4) {ss=0;sg=0;} Keyscan();//按键扫描 if(mg==0&&ms==0&&fg==0&&fs==0&&sg==7&&ss==0) P1_3=0; else if(P3_3==0) P1_3=1; } } void Keyscan() //按键扫描 { if(P3_0==0) { Delay1ms(10); if(P3_0==0) { while(!P3_0); Delay1ms(10); mg++; } } if(P3_1==0) { Delay1ms(10); if(P3_1==0) { while(!P3_1); fg++; } } if(P3_2==0) { Delay1ms(10); if(P3_2==0) { while(!P3_2); sg++; }} } void Delay1ms( uint z ) //延时函数 { uint i, j; for( i = 0; i < z; i ++ ) for( j = 0; j < 110; j ++ ); } 12345678程序: #include unsigned char mg=1,ms=2,fg=3,fs=4;sg=5, ss=6,qg=7,qs=8,bittime=0; nint bitdisplay=0; unsigned char tab[]={0xFC,0x60,0xDA,0xF2, 0x66,0xB6,0xBE,0xE0,0xFE,0xF6, 0xEE,0x3e,0x9c,0X7a,0x9E,0x8E,0x00}; void Delay1ms( uint z ); //延时函数 void timer0( void) interrupt 1 using 0 { TH0=0xFE;TL0=0xb0; switch(bitdisplay) { case 0:P2=tab[mg];P0=0XFE;break; case 1:P2=tab[ms];P0=0XFD;break; case 2:P2=tab[fg];P0=0XFB;break; case 3:P2=tab[fs];P0=0XF7;break; case 4:P2=tab[sg];P0=0XEF;break; case 5:P2=tab[ss];P0=0XDF;break; case 6:P2=tab[qg];P0=0XBF;break; case 7:P2=tab[qs];P0=0X7F;break; } bitdisplay++;bittime++; if(bitdisplay==8){bitdisplay=0;} } void main(void) { TMOD=0x01; TH0=0x3c; TL0=0xb0; EA=1; ET0=1; TR0=1; while(1) ; } void Delay1ms( uint z ) //延时函数 { uint i, j; for( i = 0; i < z; i ++ ) for( j = 0; j < 110; j ++ ); } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务