|
|
大家好,很抱歉昨天忘了發(fā)帖了,今天好好談?wù)勎业目己私?jīng)歷吧。今天我們班進(jìn)行了單片機(jī)上機(jī)考核,也算是一場小小的考試吧。其實(shí)我們今天的題目并不難,就是用單片機(jī)、8個(gè)LED和開關(guān)實(shí)現(xiàn)開關(guān)控制流水燈,和第一個(gè)單片機(jī)實(shí)驗(yàn)內(nèi)容差不多,多了一個(gè)開關(guān)控制。怎么說呢,老師要求我們用實(shí)驗(yàn)室的電腦,考核時(shí)間不能看書,不能看手機(jī)和其他一切資料。原理圖我是很快就連接完成了,然后在keil里面寫源程序,我犯的錯(cuò)誤比較多,首先忘了循環(huán)左移右移函數(shù)的頭文件和表示方式,然后用數(shù)組時(shí)數(shù)組名用code出錯(cuò),最后最最最令人頭疼的是開關(guān)判斷,if語句中沒有用==。下面我把我當(dāng)時(shí)寫的程序和原理圖再現(xiàn)一遍吧!
單片機(jī)源程序如下:
#include "reg51.h"
#include //當(dāng)時(shí)想到的移位函數(shù)頭文件是這個(gè)
#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}; //當(dāng)時(shí)數(shù)組名用的code,不能運(yùn)行,后來改的buf
if(s==1) //判斷開關(guān)是否閉合,當(dāng)時(shí)寫的是if(s=1),一直顯示error,大家一定要記住哦,重點(diǎn)
{
P2=0xff;
}
else
while(1)
{
for(r=0;r<8;r++)
{
P2=buf[r];
delay(500);
}
}
}
/*
void main () //第一種方法,剛剛運(yùn)行了,不能用
{
if(s==1)
{
P2=0xff;
}
else
while(1)
{
P2=0xfe;
P2=_crol_(P2,1);
delay(500);
}
}
*/
|
評(píng)分
-
查看全部評(píng)分
|