11 C51花样流水灯设计

本系列是阅读《单片机原理与接口技术》(C51版)第二版 的读书笔记,加上自己的理解,更多的是学习的记录与反思。由于知识面窄,如有不妥,欢迎指正。

单片机的I/O端口P0~P3是单片机与外设进行信息交换的桥梁,因而可以通过读取I/O端口的状态来了解外设的状态,也可向I/O端口送出命令或数据来实现对外设的控制。对单片机I/O端口进行编程控制时,需要对I/O端口的特殊功能寄存器进行声明。

流水灯就是通过对单片机I/O端口编程从而实现对发光二极管亮灭的控制。

源代码:

 1 #include<reg51.h> 
 2 #include<intrins.h> 
 3 #define uchar unsigned char 
 4 #define uint unsigned int
 5 //延时
 6 void Delay(uint x)
 7 {  
 8     uchar i;
 9     while(x--)
10     {   
11         for(i=0;i<120;i++);  
12     } 
13 }
14 //主程序 
15 void main() 
16 {  
17     uchar i;   
18     while(1)  
19     { 
20     P0=0xfe;    //P0端口赋初值
21     Delay(1000); 
22     for(i=0;i<7;i++)   
23     {    
24     P0=_crol_(P0,1);   //循环左移  
25     Delay(1000);   
26     }   
27     for(i=0;i<7;i++)   
28     {    
29     P0=_cror_(P0,1);    //循环右移  
30     Delay(1000); 
31     }  
32     P0=0xaa;
33     Delay(1000);
34     for(i=0;i<7;i++)
35     {
36     P0=~P0;                 //取反
37     Delay(1000);
38     }
39     P0=0xfe;
40     for(i=0;i<7;i++)
41     {
42     P0=P0<<1;             //左移,低位补0
43     Delay(1000);
44     }
45     P0=0x7f;
46     Delay(1000);
47     for(i=0;i<7;i++)
48     {
49     P0=P0>>1;             //右移,高位补0
50     Delay(1000);
51     }
52     }
53 } 

proteus仿真图:

 

【既然选择了远方,便只顾风雨兼程。】

posted @ 2018-05-17 20:34  xiaobingzzh  阅读(312)  评论(0)    收藏  举报