} led0=!num[0]; led1=!num[1]; led2=!num[2]; led3=!num[3]; }
void main() { init(); while(1) { num_change(); } }
void come0() interrupt 0 { number--; if(number<0) number=15;
}/************************************ 实验题目要求:
采用外部中断的方式实现用1个按键控制LED的显示,要求显示3种以上的不同模式。
时间:2012年12月22日 程序撰写者:邹康
*************************************/ #include
unsigned char mode=0;
void delay(unsigned int t) //延时时间大约1ms { unsigned int a,b; for(a=0;a for(b=0;b<120;b++); } void mode_1() //模式一 根据开发板,LED循环右移,时间间隔1s左右 { unsigned char i=0,c=0; for(i=0;i<4;i++) { P2|=0xf8; c=~(0x08< void mode_2() { led0=0; led1=0; led2=0; led3=0; delay(1000); led0=1; led1=1; led2=1; led3=1; delay(1000); } void mode_3() { unsigned char i=0,n=0,c=0; for(i=0;i<4;i++) { P2|=0xf8; P2&=~(0x08<>i); //模式二 //模式三 ,根据开发板,LED一闪一灭,时间间隔1s左右 先循环右移,再循环左移,时间间隔1s左右 delay(1000); } } void init() { EA=1; IT0=1; EX0=1; } void main() { init(); while(1) { switch(mode) { case 0:mode_1();break; case 1:mode_2();break; case 2:mode_3();break; } } } void come0() interrupt 0 { mode++; if(mode>2) mode=0; }/**************************************** 实验题目要求: 设计1个秒计数器,每秒计1次数,在LED上显示出来,计至16清零后重新计数 时间:2012年12月22日 程序撰写者:邹康 ******************************************/ #include unsigned char num[4]; sbit led0=P2^3; sbit led1=P2^4; sbit led2=P2^5; sbit led3=P2^6; void init() { EA=1; ET0=1; TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%6; TR0=1; } void num_change() { unsigned char i=0,n=0; n=number; for(i=0;i<4;i++) { num[i]=n%2; n=n/2; } led0=!num[0]; led1=!num[1]; led2=!num[2]; led3=!num[3]; } void main() { init(); while(1) { num_change(); } } void time0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%6; k++; if(k>=20) { k=0; number++; if(number>15) number=0; } }/******************************************** 实验题目要求: 在上题基础上用按键控制秒计数器的启停,按一次键开始计数,按2次停止计数,按3次又开始计数…。 时间:2012年12月22日 程序撰写者:邹康 ********************************************/ #include sbit led0=P2^3; sbit led1=P2^4; sbit led2=P2^5; sbit led3=P2^6; sbit keyz=P2^0; unsigned char flag=0; unsigned char k=0,number=0; unsigned char num[4]; void init() { EA=1; ET0=1; TH0=(65536-50000)%6; TL0=(65536-50000)/256; } void key() { unsigned int m=0; if(keyz==0) { m++; if(m>=30) { flag=!flag; m=0; } } } void num_change() { unsigned char i=0,n=0; n=number; for(i=0;i<4;i++) { num[i]=n%2; n=n/2; } led0=!num[0]; led1=!num[1]; led2=!num[2]; led3=!num[3]; } void main() { init(); while(1) { key(); if(flag==0) TR0=1; else TR0=0; num_change(); } } void time0() interrupt 1 { TH0=(65536-50000)%6; TL0=(65536-50000)/256; k++; if(k>19) { number++; if(number>15) number=0; k=0; } } 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库单片机期末考试编程题(3)在线全文阅读。
相关推荐: