PIC单片机开发板之流水灯代码
2019-11-19 来源:51hei
/*
这是自已写的流水灯,速度为500ms
*/
#include #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); void delay(uint x) { uint a,b; for(a=x;a>0;a--) for(b=110;b>0;b--); } void main() { uchar i; //变量定义最好放在第一行,否则会出错(提示一大堆的错误) TRISD=0x00; TRISC=0x00; PORTC=0x00; //把数码管屏蔽掉 //------------左移效果,向高位移动------------------------------ while(1) { PORTD=0x01; /* RD0=1; //这是静态的,PORTD=0x??是动态的,如果加了蜂鸣器就得用动态的,用静态的蜂鸣器会一直响。 同样,573锁存器是静态的,而38译码器是动态的,无法做到静态同时选中8个数码管。38译码器每次译一个码,每次只能选中一个数码管,所以无法做到同时选中8个数码管*/ for(i=8;i>0;i--) { delay(500); PORTD=PORTD<<1; //左移(向高位移动,显示效果为向右边高位移动),移动形成流水效果 } //------------右移效果,向低位移动------------------------ /* 心得:通过调试窗口,实践得知PORTD=0x80才能形成右移效果。 犯的错:之前设为0x08则为0000 1000。而0x80则为1000 0000 */ PORTD=0x80; for(i=8;i>0;i--) //循环8次 { delay(500); PORTD=PORTD>>1; //右移(向低位移动,显示效果为向左边高位移动),移动形成流水效果 } } }