1、将发光二极管的1、3、5、7点亮,5s钟以后点亮2、4、6、8个发光二极管,以此循环。 delayl(300); P1=0X40; delayl(300); #include sbit lead_choose=P2^2; #define uint unsigned int void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void main() { P1=0X55; while(1) { P1=0x55; delayl(2500); P1=0xAA; delayl(2500); } } 2、将发光二极管按二进制数从1依次递加,一直显示到32,并从头循环。 #include #define uint unsigned int sbit lead_choose=P2^2; void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void main() { P1=0x01; while(1) { P1=0x01; delayl(300); P1=0X02; delayl(300); P1=0X04; delayl(300); P1=0X08; delayl(300); P1=0X10; delayl(300); P1=0X20; P1=0X80; delayl(300); } } 3、点亮发光二极管的低四位,并每隔500ms的时间闪烁,高四位常亮。 #include sbit lead_choose=P2^2; #define uint unsigned int void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void main() { P1=0xFF; while(1) { P1=0xfF; delayl(500); P1=0xf0; delayl(500); } } 4、让两端的发光二极管先亮,然后向内相向移动,最后再弹开,并依次循环。即1、8亮,2、7亮,3、6亮,4、5亮,然后循环。 #include sbit lead_choose=P2^2; #define uint unsigned int void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void main() { P1=0x81; while(1) { P1=0x81; delayl(300); P1=0x42; delayl(300); P1=0x24; delayl(300); P1=0X18; delayl(300); } } 5、点亮1、2个发光二极管,并两个一起向左移动,到达7、8后,再反向回移,最终循环. uchar happy[]= {0x76,0x77,0x73,0x73,0x6e}; uchar hello[]= {0x76,0x79,0x38,0x38,0x3f}; uchar m; uint i; void delayl(uint n) { #include sbit lead_choose=P2^2; #define uint unsigned int #include uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void main() { uint i,j; P1=0x03; while(1) { i=0x03; for(j=0;j<7;j++) { P1=_crol_(i,j); delayl(300); } i=0xc0; for(j=0;j<7;j++) { P1=_cror_(i,j); delayl(300); } } } 数码管作业 1、让数码管的第2位显示出字符“H”延时2s后显示出字符“L”,再延时2s后显示字符“y”,并循环。 #include #define uchar unsigned char #define uint unsigned int sbit led=P2^2; sbit wei=P2^1; sbit duan=P2^0; uchar mazhi_wei[]= {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff}; uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void STC_init() { P1=0x00;//关闭led led=0; //锁存 wei=0; duan=0; } void main() { STC_init(); while(1) { wei=1; P0=mazhi_wei[1]; wei=0; duan=1; P0=happy[0]; duan=0; delayl(2000); duan=1; P0=hello[2]; duan=0; delayl(2000); duan=1; P0=happy[4]; duan=0; delayl(2000); } } 2、让数码管的1、3、5位显示出字符“0-9”,并循环,单个字符延时时间自定。 #include #define uchar unsigned char #define uint unsigned int sbit led=P2^2; sbit wei=P2^1; sbit duan=P2^0; uchar mazhi_duan[]= {0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, } } 3、让第1个数码管显示1,延时1s后,第 20x39,0x5e,0x79,0x71,0x00}; uchar mazhi_wei[]= {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff}; void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void STC_init() { P1=0x00;//关闭led led=0; //锁存 wei=0; duan=0; } void display(uchar weil,uchar duanl, bit dp) { wei=1; P0=mazhi_wei[weil-1]; wei=0; duan=1; if(dp==1) P0=(mazhi_duan[duanl]|0x80); else P0=mazhi_duan[duanl]; duan=0; } void main() { uchar i,j; STC_init(); while(1) { for(i=0;i<10;i++) { for(j=57;j>0;j--) { display(1,i,0); delayl(2); display(3,i,0); delayl(2); display(5,i,0); delayl(2); } } 个显示2,然后再延时1s„„第6个显示6,延时1s后循环。 #include #define uchar unsigned char #define uint unsigned int sbit led=P2^2; sbit wei=P2^1; sbit duan=P2^0; uchar mazhi_duan[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00}; uchar mazhi_wei[]= {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff}; void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void STC_init() { P1=0x00;//关闭led led=0; //锁存 wei=0; duan=0; } void display(uchar weil,uchar duanl,bit dp) { wei=1; P0=mazhi_wei[weil-1]; wei=0; duan=1; if(dp==1) P0=(mazhi_duan[duanl]|0x80); else P0=mazhi_duan[duanl]; duan=0; } void main() { uchar i; STC_init(); while(1) { for(i=1;i<7;i++) { display(i,i,0); delayl(1000); } } } 4、点亮6个数码管,显示“654321”。 #include #define uint unsigned int #define uchar unsigned char sbit duan=P2^0; sbit wei=P2^1; void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void main() { P1=0x00; wei=1; P0=0xfe; wei=0; duan=1; P0=0x7d; duan=0; delayl(1); wei=1; P0=0xfd; wei=0; duan=1; P0=0x6d; duan=0; delayl(1); wei=1; P0=0xfb; wei=0; P0=0x66; duan=1; delayl(1); wei=1; P0=0xf7; wei=0; duan=1; P0=0x4f; duan=0; delayl(1); wei=1; P0=0xef; wei=0; duan=1; P0=0x5b; duan=0; delayl(1); wei=1; P0=0xdf; wei=0; duan=1; P0=0x06; duan=0; delayl(1); } 5、做一个30s的时钟,并显示在数码管上,到达30s后,数码管显示“HELLO”,延时2s再显示“HAPPY”。 #include #define uchar unsigned char #define uint unsigned int sbit led=P2^2; sbit wei=P2^1; sbit duan=P2^0; uchar mazhi_duan[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00}; uchar mazhi_wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff}; uchar happy[]={0x76,0x77,0x73,0x73,0x6e}; uchar hello[]={0x76,0x79,0x38,0x38,0x3f}; void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void STC_init() { P1=0x00;//关闭led led=0; //锁存 wei=0; duan=0; } void display(uchar weil,uchar duanl,bit { j=0; for(i=200;i>0;i--) { display_hellohappy(1,0,0); delayl(2); display_hellohappy(2,1,0); dp) { wei=1; P0=mazhi_wei[weil-1]; wei=0; duan=1; if(dp==1) P0=(mazhi_duan[duanl]|0x80); else P0=mazhi_duan[duanl]; duan=0; } void display_hellohappy(uchar weil,uchar duanl,bit i) { wei=1; P0=mazhi_wei[weil-1]; wei=0; duan=1; if(i==0) P0=hello[duanl]; else P0=happy[duanl]; duan=0; } void main() { uchar i,j; STC_init(); while(1) { j++; if(j<=30) { for(i=250;i>0;i--) { display(1,j/10,0); delayl(2); display(2,j%10,0); delayl(2); } } else delayl(2); display_hellohappy(3,2,0); delayl(2); display_hellohappy(4,3,0); delayl(2); display_hellohappy(5,4,0); delayl(2); } for(i=200;i>0;i--) { display_hellohappy(1,0,1); delayl(2); display_hellohappy(2,1,1); delayl(2); display_hellohappy(3,2,1); delayl(2); display_hellohappy(4,3,1); delayl(2); display_hellohappy(5,4,1); delayl(2); } } } } 键盘作业 一、扫描法键盘程序 #include #define uchar unsigned char #define uint unsigned int sbit led=P2^2; sbit wei=P2^1; sbit duan=P2^0; uchar mazhi_duan[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, case 0x7e:keynum=4;break; 0x39,0x5e,0x79,0x71,0x00}; uchar mazhi_wei[]= {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff}; void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void STC_init() { P1=0x00;//关闭led led=0; //锁存 wei=0; duan=0; } void display(uchar weil,uchar duanl, bit dp) { wei=1; P0=mazhi_wei[weil-1]; wei=0; duan=1; if(dp==1) P0=(mazhi_duan[duanl]|0x80); else P0=mazhi_duan[duanl]; duan=0; } uchar keyscan() { uchar keynum,temp; keynum=0; P1=0xfe; delayl(5); //抗干扰 temp=P1&0xf0; if(temp!=0xf0) { P1=0xfe; delayl(5); temp=P1&0xf0; if(temp!=0xf0) { temp|=0x0e; switch(temp) { case 0xee:keynum=1;break; case 0xde:keynum=2;break; case 0xbe:keynum=3;break; default:keynum=0;break; } } } P1=0xfd; delayl(5); //抗干扰 temp=P1&0xf0; if(temp!=0xf0) { P1=0xfd; delayl(5); temp=P1&0xf0; if(temp!=0xf0) { temp|=0x0d; switch(temp) { case 0xed:keynum=5;break; case 0xdd:keynum=6;break; case 0xbd:keynum=7;break; case 0x7d:keynum=8;break; default:keynum=0;break; } } } P1=0xfb; delayl(5); //抗干扰 temp=P1&0xf0; if(temp!=0xf0) { P1=0xfb; delayl(5); temp=P1&0xf0; if(temp!=0xf0) { temp|=0x0b; switch(temp) { case 0xeb:keynum=9;break; case 0xdb:keynum=10;break; case 0xbb:keynum=11;break; case 0x7b:keynum=12;break; default:keynum=0;break; } } } P1=0xf7; delayl(5); //抗干扰 temp=P1&0xf0; if(temp!=0xf0) for(j=114;j>0;j--); { } P1=0xf7; void STC_init() delayl(5); { temp=P1&0xf0; P1=0x00;//关闭led if(temp!=0xf0) led=0; //锁存 { wei=0; temp|=0x07; duan=0; switch(temp) } { void display(uchar weil,uchar duanl,bit case 0xe7:keynum=13;break; dp) case 0xd7:keynum=14;break; { case 0xb7:keynum=15;break; case 0x77:keynum=16;break; default:keynum=0;break; } } } return keynum; } void main() { uchar num; STC_init(); while(1) { num=keyscan(); display(1,num,0); delayl(50); } } 二、线反转法键盘程序 #include case 0xbd:keynum=7;break; case 0x7d:keynum=8;break; case 0xeb:keynum=9;break; case 0xdb:keynum=10;break; case 0xbb:keynum=11;break; case 0x7b:keynum=12;break; case 0xe7:keynum=13;break; case 0xd7:keynum=14;break; case 0xb7:keynum=15;break; case 0x77:keynum=16;break; default:keynum=0;break; } return keynum; } void main() { uchar i; STC_init(); /*xiang=0; while(1);*/ while(1) { i=keyscan1(); display(2,i,0); delayl(50); } } 1、按下第一个键,数码管第一位显示1,按下第二个键,第二位显示2,以此类推,显示到6。 #include #define uchar unsigned char #define uint unsigned int sbit led=P2^2; sbit wei=P2^1; sbit duan=P2^0; uchar mazhi_duan[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00}; uchar mazhi_wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff}; void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void STC_init() { P1=0x00;//关闭led led=0; //锁存 wei=0; duan=0; } void display(uchar weil,uchar duanl,bit dp) { wei=1; P0=mazhi_wei[weil-1]; wei=0; duan=1; if(dp==1) P0=(mazhi_duan[duanl]|0x80); else P0=mazhi_duan[duanl]; duan=0; } uchar keyscan1() { uchar keynum,temp; keynum=0; P1=0xf0; delayl(5); temp=P1&0xf0; P1=0x0f; delayl(5); temp|=(P1&0x0f); switch(temp) { case 0xee:keynum=1;break; case 0xde:keynum=2;break; case 0xbe:keynum=3;break; case 0x7e:keynum=4;break; case 0xed:keynum=5;break; case 0xdd:keynum=6;break; default:keynum=0;break; } return keynum; } void main() { uchar i; STC_init(); while(1) { i=keyscan1(); if(i==0); else display(i,i,0); delayl(20); } } 2、设计一个程序,按下第一个键,蜂鸣器响,按下第二个键,蜂鸣器停止响。 #include #define uchar unsigned char xiang=i; #define uint unsigned int } sbit led=P2^2; } sbit wei=P2^1; 3、设计程序实现以下功能,LED第1位亮,延sbit duan=P2^0; 时0.5s后,第2位亮,延时0.5s后第3位亮„sbit xiang=P3^7; 到第8位后,然后反向,一个周期完以后,倒uchar mazhi_duan[]={0x3f,0x06,0x5b,0x4f, 计时10s,并用数码管显示时间,时间到以后, 蜂鸣器响,按下第5个按键以后,蜂鸣器停止0x66,0x6d,0x7d,0x07, 响,并重新循环。 0x7f,0x6f,0x77,0x7c, #include uchar keyscan1() { uchar keynum,temp; keynum=0; P1=0xf0; delayl(5); temp=P1&0xf0; P1=0x0f; delayl(5); temp|=(P1&0x0f); switch(temp) { case 0xed:keynum=5;break; default:keynum=0;break; } return keynum; } void main() { uchar i,j,k,num; STC_init(); led=1; while(1) { for(i=0;i<8;i++) { j=0x01; P1=(j<j=0x80; P1=(j>>i); delayl(500); }; delayl(500); for(k=10;k>0;k--) for(j=250;j>0;j--) { display(1,k/10,0); delayl(2); display(2,k%10,0); delayl(2); } display(2,16,0); delayl(400); while(1) { xiang=0; num=keyscan1(); if(num==5) { xiang=1; break; } }; } } 定时器与中断 1、利用定时/计数器T0从P1.0输出周期为0.5s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz。。 #include #define uint unsigned int #define uchar unsigned char sbit led=P2^2; uchar overflow; void STC_init() { P1=0x00;//关闭led led=0; //锁存 } void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void light_led(uchar i,bit j) { led=1; if(j==1) P1=1<P1=P1&(~(1<void main() { bit flag; STC_init(); TMOD=0x01;//定时器0,方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256;//赋初值50ms,11.0592MHz ET0=1;//打开定时器0中断 EA=1;//打开总中断 TR0=1;//启动定时器0 while(1) { if(overflow>=10) { overflow=0; flag=!flag; light_led(0,flag); } } } void timer0() interrupt 1 using 1 { TR0=0; overflow++; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; } 2、利用定时/计数器T1产生定时时钟,控制8个LED灯从第一个到第八个逐一点亮,单个亮时间为400ms ,并循环。 #include #define uint unsigned int #define uchar unsigned char sbit led=P2^2; uchar overflow; void STC_init() { P1=0x00;//关闭led led=0; //锁存 } void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void light_led(uchar i,bit j) { led=1; if(j==1) P1=1<P1=P1&(~(1<void main() { uchar i=0; STC_init(); TMOD=0x01;//定时器0,方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256;//赋初值50ms,11.0592MHz ET0=1;//打开定时器0中断 EA=1;//打开总中断 TR0=1;//启动定时器0 while(1) { if(overflow>=8) { overflow=0; if(i>=8) i=0; light_led(i,1); i++; } } } void timer0() interrupt 1 using 1 { TR0=0; overflow++; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; } 3、用定时器0设计一个30s的倒计时时钟,并在数码管上显示,当定时时间到时,蜂鸣器响2s后关闭,并循环。 #include #define uint unsigned int #define uchar unsigned char sbit led=P2^2; sbit wei=P2^1; sbit duan=P2^0; sbit xiang=P3^7; uchar mazhi_duan[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c 0x39,0x5e,0x79,0x71,0x00}; uchar mazhi_wei[]= {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff}; uchar overflow; void STC_init() { P1=0x00;//关闭led led=0; //锁存 wei=0; duan=0; } void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void light_led(uchar i,bit j) { led=1; if(j==1) P1=1<P1=P1&(~(1<void display(uchar weil,uchar duanl,bit dp) { wei=1; P0=mazhi_wei[weil-1]; wei=0; duan=1; if(dp==1) P0=(mazhi_duan[duanl]|0x80); else P0=mazhi_duan[duanl]; duan=0; } void main() { uchar miao=30,i; STC_init(); TMOD=0x01;//定时器0,方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256;//赋初值50ms,11.0592MHz ET0=1;//打开定时器0中断 EA=1;//打开总中断 TR0=1;//启动定时器0 while(1) { if(overflow>=20) { overflow=0; miao--; if(miao==0) { TR0=0; xiang=0; for(i=100;i>0;i--) { display(6,miao%10,0); delayl(10); display(5,miao/10,0); delayl(10); } xiang=1; miao=30; TR0=1; } } display(6,miao%10,0); delayl(10); display(5,miao/10,0); delayl(10); } } void timer0() interrupt 1 using 1 { TR0=0; overflow++; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; } 4、用定时器1设计一个时钟,并用数码管显示时、分、秒等信息。 #include #define uint unsigned int #define uchar unsigned char sbit led=P2^2; sbit wei=P2^1; sbit duan=P2^0; uchar mazhi_duan[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00}; uchar mazhi_wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff}; uchar overflow; void STC_init() { P1=0x00;//关闭led led=0; //锁存 wei=0; duan=0; } void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void display(uchar weil,uchar duanl,bit } } display(6,miao%10,0); delayl(2); display(5,miao/10,0); delayl(2); display(4,fen%10,1); delayl(2); display(3,fen/10,0); delayl(2); dp) { wei=1; P0=mazhi_wei[weil-1]; wei=0; duan=1; if(dp==1) P0=(mazhi_duan[duanl]|0x80); else P0=mazhi_duan[duanl]; duan=0; } void main() { uchar miao,fen,shi; shi=0;fen=0;miao=0; STC_init(); TMOD=0x10;//定时器1,方式1 TH1=0x4B; TL1=0xFD;//赋初值50ms,11.0592MHz ET1=1;//打开定时器1中断 EA=1;//打开总中断 TR1=1;//启动定时器0 while(1) { if(overflow>=20) { overflow=0; miao++; if(miao>=60) { fen++; miao=0; if(fen>=60) { shi++; fen=0; if(shi>=23) shi=0; } display(2,shi%10,1); delayl(2); display(1,shi/10,0); delayl(2); } } void timer0() interrupt 3 using 3 { TR1=0; overflow++; TH1=0x4B; TL1=0xFD; TR1=1; } 5、设计一个带有分、秒的时钟,按下1键以后,能够进入调节时钟的界面,其中第2个键让时钟增加,第6个键让时钟减少,第5个和第7个键分别实现左右移动控制调节时间的某一位,按3键退出该界面,退出后时钟按设定的时间开始运行。 #include #define uint unsigned int #define uchar unsigned char sbit led=P2^2; sbit wei=P2^1; sbit duan=P2^0; sbit xiang=P3^7; uchar mazhi_duan[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00}; uchar mazhi_wei[]= {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff}; uchar overflow; void STC_init() { P1=0x00;//关闭led led=0; //锁存 wei=0; duan=0; } void delayl(uint n) { uint i,j; for(i=n;i>0;i--) for(j=114;j>0;j--); } void light_led(uchar i,bit j) { led=1; if(j==1) P1=1<P0=(mazhi_duan[duanl]|0x80); else P0=mazhi_duan[duanl]; duan=0; } uchar keyscan() { uchar keynum,temp; keynum=0; P1=0xf0; delayl(5); temp=P1&0xf0; //保留高四位 P1=0x0f; delayl(5); temp=temp|(P1&0x0f); switch(temp) { case 0xee:keynum=1;break; case 0xde:keynum=2;break; case 0xbe:keynum=3;break; case 0x7e:keynum=4;break; case 0xed:keynum=5;break; case 0xdd:keynum=6;break; case 0xbd:keynum=7;break; default:keynum=0;break; } return keynum; } void main() { bit flag; uchar shi,fen,miao,keynum; uchar wei=1,i; STC_init(); TMOD=0x10;//定时器1,方式1 TH1=0x4c; TL1=0x00;//赋初值50ms,11.0592MHz else P1=P1&(~(1<void display(uchar weil,uchar duanl,bit dp) { wei=1; P0=mazhi_wei[weil-1]; wei=0; duan=1; ET1=1;//打开定时器1中断 EA=1;//打开总中断 TR1=1;//启动定时器0 shi=0; fen=0; miao=0; while(1) { if(overflow>=20) { overflow=0; miao++; if(miao>59) { miao=0; fen++; if(fen>59) { fen=0; shi++; if(shi>23) shi=0; } } } if(keyscan()==1) { TR1=0; flag=1; while(flag) { keynum=keyscan(); switch(keynum) { case 2: switch(wei) { case 1: shi=shi+10; if(shi>=24) shi=0; break; case 2: shi++; if(shi>=24) shi=0; break; case 3: fen=fen+10; if(fen>=60) fen=0; break; case 4: fen=fen+1; if(fen>=60) fen=0; break; case 5: miao=miao+10; if(miao>=60) miao=0; break; case 6: miao=miao+1; if(miao>=60) miao=0; break; default:break; } break; case 3: flag=0;break; case 5: wei--; if((wei==0)||(wei>6)) wei=6; break; case 6: switch(wei) { case 1: shi=shi-10; if(shi>=24) shi=0; break; case 2: shi--; if(shi>=24) shi=0; break; case 3: fen=fen-10; if(fen>=60) fen=0; break; case 4: fen=fen-1; if(fen>=60) fen=0; break; case 5: miao=miao-10; if(miao>=60) miao=0; break; case 6: miao=miao-1; if(miao>=60) miao=0; break; default:break; } break; case 7: wei++; if((wei>6)||(wei==0)) wei=1; break; default:break; } for(i=0;i<30;i++) { display(1,shi/10,0); delayl(1); display(2,shi%10,1); delayl(1); display(3,fen/10,0); delayl(1); display(4,fen%10,1); delayl(1); display(5,miao/10,0); delayl(1); display(6,miao%10,0); delayl(1); } } TR1=1; } display(1,shi/10,0); delayl(2); display(2,shi%10,0); delayl(2); display(3,fen/10,0); delayl(2); display(4,fen%10,0); delayl(2); display(5,miao/10,0); delayl(2); display(6,miao%10,0); delayl(2); } } void timer0() interrupt 3 using 3 { TR1=0; overflow++; TH1=0x4c; TL1=0x00; TR1=1; } 串口作业 一、串口课堂内容一 #include #define uint unsigned int #define uchar unsigned char void main() { TMOD=0x20; //定时器工作方式 TH1=0xf4; TL1=0xf4; //串口工作方式 SCON=0x40; PCON=0x00; TR1=1; //开启定时器 REN=1; //开启串口 while(1) { while(RI==0); RI=0; P1=SBUF; } } 二、串口课堂内容二 #include #define uint unsigned int #define uchar unsigned char void main() { uchar dat; TMOD=0x20; // 定时器工作方式2 TH1=0xf4; TL1=0xf4; //2400,串口工作方式 SCON=0x40; // 01000000 PCON=0x00; // 加倍 TR1=1; REN=1; while(1) { while(RI==0); RI=0; dat=SBUF; P1=dat; SBUF=dat; while(TI==0); TI=0; } } 因篇幅问题不能全部显示,请点此查看更多更全内容