您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页单片机实验程序

单片机实验程序

来源:意榕旅游网
实验1:

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 s=0,t=0;

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 a=0;

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;bbbvoid int0(void) interrupt 0 using 0 {

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 #define uint unsigned int unsigned char mg=0,ms=5,fg=9,fs=5;sg=6;ss=0; bittime=0;

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 #define uint unsigned int

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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务