C51单片机小程序(一)
2020-06-22 来源:eefocus
好久没碰单片机了,有些生疏了。到现在还依稀记得自己独自坐在电脑屏幕前自学单片机,硬生生的去看了单片机的基础,现在想想还是挺有趣的。附上当初一点初学的单片机小程序,请大家多多指教!
用P1口作为输出口,接8位用作逻辑电平显示的发光二极管。设计程序使发光二极管间隔300ms先奇数亮再偶数亮,循环3次;一个发光二极管亮上下循环3次;两个分别从两边向中间流动3次;再从中间向两边流动3次;8个全部闪烁3次;关闭全部发光二极管,停止。
综合实验程序:
#库定义
#include #include sbit led=P1^0; #位定义 int i,j,k,num,e,p,m; void delay(int k) #定义延时函数 { while(k--); } void timer0() #定时器0的初始化 { TMOD=0X01; #工作模式 TR0=1; EA=1; #开启总中断 ET0=1; TH0=0XDc; #定时时间 需经过换算 TL0=0X00; } void Pled() { EA=0; //P1=0xfe; //delay(50000); for(p=0;p<3;p++){ P1=0xfe; for(num=0;num<8;num++) { delay(50000); P1=_crol_(P1,1); #_crol_(左移函数) if(num==6) { for(e=0;e<6;e++){ delay(50000); P1=_cror_(P1,1); #_cror_(左移函数) } } } } } void flowmiddle() { for(m=0;m<3;m++) { P1=0x7e; delay(50000); P1=0XBD; delay(50000); P1=0XDB; delay(50000); P1=0XE7; delay(50000); } for(m=0;m<3;m++) { P1=0XE7; delay(50000); P1=0XDB; delay(50000); P1=0XBD; delay(50000); P1=0x7e; delay(50000); } for(m=0;m<3;m++){ P1=0xff; delay(50000); P1=0; delay(50000); } } void main() { timer0(); while(1){ if(j==7) { j=0; Pled(); flowmiddle(); } if(j==0) { P1=0xff; } } } void time0() interrupt 1 #定时器0中断响应 { TH0=0Xdc; TL0=0X00;//10ms i++; if(i==30) { i=0; j++; if(j%2==0){ P1=0x55;} if(j%2!=0) { P1=0xaa; } } } 实验实现说明:使用定时器0设定一个计时300ms的计时器,通过判断变量j在计时器计时到后是奇偶数,分别亮对应的小灯,当变量到7时,清除变量值,并执行通过左右移操作,以及流向中间的操作。
上一篇:51单片机学习知识点