大家好,很抱歉昨天忘了发帖了,今天好好谈谈我的考核经历吧。今天我们班进行了单片机上机考核,也算是一场小小的考试吧。其实我们今天的题目并不难,就是用单片机、8个LED和开关实现开关控制流水灯,和第一个单片机实验内容差不多,多了一个开关控制。怎么说呢,老师要求我们用实验室的电脑,考核时间不能看书,不能看手机和其他一切资料。原理图我是很快就连接完成了,然后在keil里面写源程序,我犯的错误比较多,首先忘了循环左移右移函数的头文件和表示方式,然后用数组时数组名用code出错,最后最最最令人头疼的是开关判断,if语句中没有用==。下面我把我当时写的程序和原理图再现一遍吧!
单片机源程序如下:
#include "reg51.h"
#include //当时想到的移位函数头文件是这个
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit s=P3^7;
void delay(uint i)
{
uchar t;
while(i--)
{
for(t=0;t<120;t++);
}
}
void main() //第二种方法
{
uchar r;
uint buf[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //当时数组名用的code,不能运行,后来改的buf
if(s==1) //判断开关是否闭合,当时写的是if(s=1),一直显示error,大家一定要记住哦,重点
{
P2=0xff;
}
else
while(1)
{
for(r=0;r<8;r++)
{
P2=buf[r];
delay(500);
}
}
}
/*
void main () //第一种方法,刚刚运行了,不能用
{
if(s==1)
{
P2=0xff;
}
else
while(1)
{
P2=0xfe;
P2=_crol_(P2,1);
delay(500);
}
}
*/
|