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仿真图:

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

浙公网安备 33010602011771号