">
欢迎光临上海紫卓电子科技有限公司! 固话:021-31007998    热线:18721906708
手机  |   地图  |   RSS
51单片机 (2)流水灯实验
分类:单片机浏览量:535 TAG:

一、控制一/多灯亮灭

汇编实现


  1. ;注释  

  2. LOOP:  

  3. ;SETB P1.1 ;(1)熄灭灯  

  4. MOV P1,#0FFH;  

  5. LCALL DELAY     ;(2)延时一段时间  

  6. ;CLR P1.1        ;(3)点亮灯  

  7. MOV P1,#0FDH;  

  8. LCALL DELAY     ;(4)延时一段时间     

  9. AJMP LOOP       ;(5)跳转到第一句LOOP处  

  10.   

  11. ;以下子程序   

  12. DELAY:   

  13.     MOV R7,#250 ;  

  14. D1: MOV R6,#250 ;  

  15. D2: DJNZ R6,D2  ;R6=R6-1;IF(R6!=0) GOTO D2;  

  16.     DJNZ R7,D1  ;  

  17.     RET         ;返回主程序  

  18. END             ;子程序结束标志  


C语言实现


  1. #include   

  2.   

  3. sbit led=P1^3;  

  4. void Delay(){  

  5.     unsigned char i,j;  

  6.     for(i=0;i<250;i++)  

  7.     for(j=0;j<200;j++);  

  8. }  

  9. void main(){  

  10.    while(1){  

  11.       P1=0xfe;  

  12.       Delay(); Delay();Delay();Delay();  

  13.       led=0;  

  14.       Delay(); Delay();Delay();Delay();  

  15.       P1=0x00;  

  16.       Delay(); Delay();Delay();Delay();  

  17.    }  

  18. }  

开关控制单灯亮灭


  1. #include   

  2.   

  3. sbit led=P1^3;  

  4. void main(){  

  5.    while(1){  

  6.       if(P0^1==0){ //开关是否按下  

  7.         led=0;  

  8.       }else{  

  9.             led=1;  

  10.       }  

  11.    }  

  12. }  

流水灯表示乘法运算结果


  1. #include  

  2. void main(void){  

  3.   unsigned char s,m,n;  

  4.   m=64;  

  5.   n=71;  

  6.   s=m*n;  //s=4544=17*256+192  所以用P0表示17、P1表示192  

  7.   P0=s/256;  

  8.   P1=s%256;  

  9. }  


走马灯


  1. #include   

  2. void Delay(){  

  3.     unsigned char i,j;  

  4.     for(i=0;i<250;i++)  

  5.     for(j=0;j<250;j++);  

  6. }  

  7. void main(){  

  8.    unsigned int i;  

  9.    i=0x01;   

  10.    while(1){  

  11.       P1=i; Delay();  

  12.       i<<=1;  

  13.       if(i==0x100) i=0x01;  

  14.    }  

  15. }  

摘自《单机片C语言编程100个实例》


  1. //实例19:用if语句控制P0口8位LED的流水方向  

  2. #include  //包含单片机寄存器的头文件   

  3. sbit S1=P1^4;     //将S1位定义为P1.4  

  4. sbit S2=P1^5;     //将S2位定义为P1.5  

  5. /***************************** 

  6. 函数功能:主函数  

  7. *****************************/  

  8. void main(void)  

  9. {    

  10. while(1)  

  11. {  

  12. if(S1==0)   //如果按键S1按下   

  13. P0=0x0f;  //P0口高四位LED点亮   

  14. if(S2==0)   //如果按键S2按下   

  15. P0=0xf0;  //P0口低四位LED点亮   

  16. }        

  17. }  


上海紫卓电子科技有限公司

地址:上海市嘉定工业区叶城路925号B区4幢J

网址:www.ic-ixys.com

电话:021-31007998

传真:021-31007998

邮件:569998567@qq.com

在线咨询: 569998567

QQ在线咨询
销售电话:
18721906708
021-31007998
569998567